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
+
+
+ False
+ False
+ 4
+
+
+
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;