diff --git a/defaults/defaults b/defaults/defaults index 2b1ba5b5..30580732 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 95755ac5..9bd2c938 100644 --- a/settings-dialogs/tweaks-settings.c +++ b/settings-dialogs/tweaks-settings.c @@ -168,6 +168,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 */ @@ -313,6 +314,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 abc35197..92ff26bb 100644 --- a/settings-dialogs/xfwm4-tweaks-dialog.glade +++ b/settings-dialogs/xfwm4-tweaks-dialog.glade @@ -172,6 +172,22 @@ or "skip taskbar" properties set + + _Raise windows while cycling + False + True + True + False + True + True + + + False + False + 4 + + + Cycle through windows in a _list False @@ -184,7 +200,7 @@ or "skip taskbar" properties set False False - 4 + 5 diff --git a/src/cycle.c b/src/cycle.c index eb32a868..f6169ee4 100644 --- a/src/cycle.c +++ b/src/cycle.c @@ -226,6 +226,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); @@ -499,6 +503,10 @@ clientCycle (Client * c, XKeyEvent * ev) 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 a0dbb4ad..ae696e1f 100644 --- a/src/settings.c +++ b/src/settings.c @@ -719,6 +719,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}, @@ -816,6 +817,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 = @@ -1339,6 +1342,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 845fcbe4..6a0c6000 100644 --- a/src/settings.h +++ b/src/settings.h @@ -208,6 +208,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;