diff options
author | David Siroky <siroky@dasir.cz> | 2017-12-20 10:33:44 +0100 |
---|---|---|
committer | Olivier Fourdan <fourdan@xfce.org> | 2017-12-20 10:35:19 +0100 |
commit | 58dcef04b4737ec9871a312567923334d36b50fb (patch) | |
tree | 47e01ea368fdf8604a6a72e182dd1b7aed16d5db | |
parent | 845c8fb965f896b649e9c4c53c0edd4207756178 (diff) | |
download | xfwm4-58dcef04b4737ec9871a312567923334d36b50fb.tar.gz |
Raise window while cycling
Bug: 2701
Optionally raise the window being considered while cycling.
-rw-r--r-- | defaults/defaults | 1 | ||||
-rw-r--r-- | settings-dialogs/tweaks-settings.c | 5 | ||||
-rw-r--r-- | settings-dialogs/xfwm4-tweaks-dialog.glade | 18 | ||||
-rw-r--r-- | src/cycle.c | 8 | ||||
-rw-r--r-- | src/settings.c | 7 | ||||
-rw-r--r-- | src/settings.h | 1 |
6 files changed, 39 insertions, 1 deletions
diff --git a/defaults/defaults b/defaults/defaults index 2b1ba5b5c..305807329 100644 --- a/defaults/defaults +++ b/defaults/defaults @@ -8,6 +8,7 @@ button_spacing=0 click_to_focus=true cycle_apps_only=false cycle_draw_frame=true +cycle_raise=false cycle_hidden=true cycle_minimum=true cycle_preview=true diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c index b6691afba..d5f711be6 100644 --- a/settings-dialogs/tweaks-settings.c +++ b/settings-dialogs/tweaks-settings.c @@ -173,6 +173,7 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) GtkWidget *cycle_hidden_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_hidden_check")); GtkWidget *cycle_minimum_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_minimum_check")); GtkWidget *cycle_draw_frame = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_draw_frame")); + GtkWidget *cycle_raise = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_raise")); GtkWidget *cycle_tabwin_mode = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_tabwin_mode")); /* Focus tab */ @@ -318,6 +319,10 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) G_TYPE_BOOLEAN, (GObject *)cycle_draw_frame, "active"); xfconf_g_property_bind (xfwm4_channel, + "/general/cycle_raise", + G_TYPE_BOOLEAN, + (GObject *)cycle_raise, "active"); + xfconf_g_property_bind (xfwm4_channel, "/general/cycle_tabwin_mode", G_TYPE_INT, (GObject *)cycle_tabwin_mode, "active"); diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade index af8c37389..9e2cee506 100644 --- a/settings-dialogs/xfwm4-tweaks-dialog.glade +++ b/settings-dialogs/xfwm4-tweaks-dialog.glade @@ -175,6 +175,22 @@ or "skip taskbar" properties set</property> </packing> </child> <child> + <object class="GtkCheckButton" id="cycle_raise"> + <property name="label" translatable="yes">_Raise windows while cycling</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> <object class="GtkCheckButton" id="cycle_tabwin_mode"> <property name="label" translatable="yes">Cycle through windows in a _list</property> <property name="use_action_appearance">False</property> @@ -187,7 +203,7 @@ or "skip taskbar" properties set</property> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> </object> diff --git a/src/cycle.c b/src/cycle.c index c897f7b34..c7e8d4fb4 100644 --- a/src/cycle.c +++ b/src/cycle.c @@ -227,6 +227,10 @@ clientCycleUpdateWireframe (Client *c, ClientCycleData *passdata) { if (c) { + if (c->screen_info->params->cycle_raise) + { + clientRaise (c, None); + } if (passdata->wireframe) { wireframeUpdate (c, passdata->wireframe); @@ -507,6 +511,10 @@ clientCycle (Client * c, XfwmEventKey *event) passdata.inside = FALSE; TRACE ("entering cycle loop"); + if (screen_info->params->cycle_raise) + { + clientRaise ((Client *) selected->data, None); + } if (screen_info->params->cycle_draw_frame) { passdata.wireframe = wireframeCreate ((Client *) selected->data); diff --git a/src/settings.c b/src/settings.c index e0284277c..9c473e9c4 100644 --- a/src/settings.c +++ b/src/settings.c @@ -654,6 +654,7 @@ loadSettings (ScreenInfo *screen_info) {"click_to_focus", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_apps_only", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_draw_frame", NULL, G_TYPE_BOOLEAN, TRUE}, + {"cycle_raise", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_hidden", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_minimum", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_preview", NULL, G_TYPE_BOOLEAN, TRUE}, @@ -751,6 +752,8 @@ loadSettings (ScreenInfo *screen_info) getBoolValue ("cycle_minimum", rc); screen_info->params->cycle_draw_frame = getBoolValue ("cycle_draw_frame", rc); + screen_info->params->cycle_raise = + getBoolValue ("cycle_raise", rc); screen_info->params->cycle_hidden = getBoolValue ("cycle_hidden", rc); screen_info->params->cycle_preview = @@ -1280,6 +1283,10 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_ { screen_info->params->cycle_draw_frame = g_value_get_boolean (value); } + else if (!strcmp (name, "cycle_raise")) + { + screen_info->params->cycle_raise = g_value_get_boolean (value); + } else if (!strcmp (name, "cycle_hidden")) { screen_info->params->cycle_hidden = g_value_get_boolean (value); diff --git a/src/settings.h b/src/settings.h index 9d4994d48..334acdd4b 100644 --- a/src/settings.h +++ b/src/settings.h @@ -201,6 +201,7 @@ struct _XfwmParams gboolean click_to_focus; gboolean cycle_apps_only; gboolean cycle_draw_frame; + gboolean cycle_raise; gboolean cycle_hidden; gboolean cycle_minimum; gboolean cycle_preview; |