summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Siroky <siroky@dasir.cz>2017-12-20 10:33:44 +0100
committerOlivier Fourdan <fourdan@xfce.org>2017-12-20 10:35:19 +0100
commit58dcef04b4737ec9871a312567923334d36b50fb (patch)
tree47e01ea368fdf8604a6a72e182dd1b7aed16d5db
parent845c8fb965f896b649e9c4c53c0edd4207756178 (diff)
downloadxfwm4-58dcef04b4737ec9871a312567923334d36b50fb.tar.gz
Raise window while cycling
Bug: 2701 Optionally raise the window being considered while cycling.
-rw-r--r--defaults/defaults1
-rw-r--r--settings-dialogs/tweaks-settings.c5
-rw-r--r--settings-dialogs/xfwm4-tweaks-dialog.glade18
-rw-r--r--src/cycle.c8
-rw-r--r--src/settings.c7
-rw-r--r--src/settings.h1
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;