From 0e5ffd36409b9817bfecb2ac6d4f7fb0eddb084d Mon Sep 17 00:00:00 2001 From: Dridi Boukelmoune Date: Sun, 8 Sep 2019 00:43:39 +0200 Subject: [PATCH 2/2] tabwin: New tweak to only show on the primary monitor This adds a new boolean entry in the tweaks dialog that defaults to false to maintain existing behavior without user intervention. The new setting is called cycle_primary_monitor and currently lacks translations. Signed-off-by: Dridi Boukelmoune --- defaults/defaults | 1 + settings-dialogs/tweaks-settings.c | 5 +++++ settings-dialogs/xfwm4-tweaks-dialog.glade | 16 ++++++++++++++++ src/settings.c | 7 +++++++ src/settings.h | 1 + src/tabwin.c | 7 +++++++ 6 files changed, 37 insertions(+) diff --git a/defaults/defaults b/defaults/defaults index 38d34704..c0350559 100644 --- a/defaults/defaults +++ b/defaults/defaults @@ -12,6 +12,7 @@ cycle_raise=false cycle_hidden=true cycle_minimum=true cycle_preview=true +cycle_primary_monitor=false cycle_tabwin_mode=0 cycle_workspaces=false double_click_action=maximize diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c index d5f711be..bec2863d 100644 --- a/settings-dialogs/tweaks-settings.c +++ b/settings-dialogs/tweaks-settings.c @@ -175,6 +175,7 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) 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")); + GtkWidget *cycle_primary_monitor = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_primary_monitor")); /* Focus tab */ GtkWidget *prevent_focus_stealing_check = GTK_WIDGET (gtk_builder_get_object (builder, "prevent_focus_stealing_check")); @@ -326,6 +327,10 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) "/general/cycle_tabwin_mode", G_TYPE_INT, (GObject *)cycle_tabwin_mode, "active"); + xfconf_g_property_bind (xfwm4_channel, + "/general/cycle_primary_monitor", + G_TYPE_BOOLEAN, + (GObject *)cycle_primary_monitor, "active"); /* Focus tab */ xfconf_g_property_bind (xfwm4_channel, diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade index 38135a7e..3755d112 100644 --- a/settings-dialogs/xfwm4-tweaks-dialog.glade +++ b/settings-dialogs/xfwm4-tweaks-dialog.glade @@ -217,6 +217,22 @@ or "skip taskbar" properties set 5 + + + Only _show the cycling window on the primary monitor + False + True + True + False + True + True + + + False + False + 6 + + diff --git a/src/settings.c b/src/settings.c index ccb14319..e35c2240 100644 --- a/src/settings.c +++ b/src/settings.c @@ -679,6 +679,7 @@ loadSettings (ScreenInfo *screen_info) {"cycle_hidden", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_minimum", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_preview", NULL, G_TYPE_BOOLEAN, TRUE}, + {"cycle_primary_monitor", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_tabwin_mode", NULL, G_TYPE_INT, FALSE}, {"cycle_workspaces", NULL, G_TYPE_BOOLEAN, TRUE}, {"double_click_action", NULL, G_TYPE_STRING, TRUE}, @@ -780,6 +781,8 @@ loadSettings (ScreenInfo *screen_info) getBoolValue ("cycle_hidden", rc); screen_info->params->cycle_preview = getBoolValue ("cycle_preview", rc); + screen_info->params->cycle_primary_monitor = + getBoolValue ("cycle_primary_monitor", rc); screen_info->params->cycle_tabwin_mode = CLAMP (getIntValue ("cycle_tabwin_mode", rc), 0, 1); screen_info->params->cycle_workspaces = @@ -1343,6 +1346,10 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_ { screen_info->params->cycle_preview = g_value_get_boolean (value); } + else if (!strcmp (name, "cycle_primary_monitor")) + { + screen_info->params->cycle_primary_monitor = g_value_get_boolean (value); + } else if (!strcmp (name, "focus_hint")) { screen_info->params->focus_hint = g_value_get_boolean (value); diff --git a/src/settings.h b/src/settings.h index f20c6db4..bbd57d16 100644 --- a/src/settings.h +++ b/src/settings.h @@ -214,6 +214,7 @@ struct _XfwmParams gboolean cycle_hidden; gboolean cycle_minimum; gboolean cycle_preview; + gboolean cycle_primary_monitor; gboolean cycle_workspaces; gboolean focus_hint; gboolean focus_new; diff --git a/src/tabwin.c b/src/tabwin.c index a12105cd..f91bb5a3 100644 --- a/src/tabwin.c +++ b/src/tabwin.c @@ -923,6 +923,13 @@ tabwinCreate (GList **client_list, GList *selected, gboolean display_workspace) gint monitor_index; monitor_index = myScreenGetMonitorIndex (screen_info, i); + + if (screen_info->params->cycle_primary_monitor && + !xfwm_monitor_is_primary (screen_info->gscr, monitor_index)) + { + continue; + } + win = tabwinCreateWidget (tabwin, screen_info, monitor_index); tabwin->tabwin_list = g_list_append (tabwin->tabwin_list, win); } -- 2.21.0