diff --git a/src/cycle.c b/src/cycle.c index b5e45f1..ef32da9 100644 --- a/src/cycle.c +++ b/src/cycle.c @@ -166,6 +166,7 @@ clientCycleCreateList (Client *c) static void clientCycleFocusAndRaise (Client *c) { + int no_raise; ScreenInfo *screen_info; DisplayInfo *display_info; Client *sibling; @@ -175,12 +176,16 @@ clientCycleFocusAndRaise (Client *c) screen_info = c->screen_info; display_info = screen_info->display_info; + no_raise = screen_info->params->cycle_no_raise; + if (!no_raise) { sibling = clientGetTransientFor(c); clientRaise (sibling, None); clientShow (sibling, TRUE); clientUnshade (c); + } clientSetFocus (screen_info, c, myDisplayGetCurrentTime (display_info), NO_FOCUS_FLAG); + if (!no_raise) clientSetLastRaise (c); } diff --git a/src/settings.c b/src/settings.c index 607bb7b..2b88037 100644 --- a/src/settings.c +++ b/src/settings.c @@ -674,6 +674,7 @@ loadSettings (ScreenInfo *screen_info) {"button_spacing", NULL, G_TYPE_INT, TRUE}, {"click_to_focus", NULL, G_TYPE_BOOLEAN, TRUE}, {"focus_delay", NULL, G_TYPE_INT, TRUE}, + {"cycle_no_raise", NULL, G_TYPE_BOOLEAN, FALSE}, {"cycle_apps_only", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_draw_frame", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_hidden", NULL, G_TYPE_BOOLEAN, TRUE}, @@ -759,6 +760,8 @@ loadSettings (ScreenInfo *screen_info) getBoolValue ("box_move", rc); screen_info->params->click_to_focus = getBoolValue ("click_to_focus", rc); + screen_info->params->cycle_no_raise = + getBoolValue ("cycle_no_raise", rc); screen_info->params->cycle_apps_only = getBoolValue ("cycle_apps_only", rc); screen_info->params->cycle_minimum = @@ -1261,6 +1264,10 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_ screen_info->params->borderless_maximize = g_value_get_boolean (value); reloadScreenSettings (screen_info, UPDATE_MAXIMIZE); } + else if (!strcmp (name, "cycle_no_raise")) + { + screen_info->params->cycle_no_raise = g_value_get_boolean (value); + } else if (!strcmp (name, "cycle_minimum")) { screen_info->params->cycle_minimum = g_value_get_boolean (value); diff --git a/src/settings.h b/src/settings.h index be01b6b..b53231b 100644 --- a/src/settings.h +++ b/src/settings.h @@ -200,6 +200,7 @@ struct _XfwmParams gboolean box_move; gboolean box_resize; gboolean click_to_focus; + gboolean cycle_no_raise; gboolean cycle_apps_only; gboolean cycle_draw_frame; gboolean cycle_hidden;