diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c
index 4442ba2..a706eef 100644
--- a/settings-dialogs/tweaks-settings.c
+++ b/settings-dialogs/tweaks-settings.c
@@ -159,6 +159,7 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder)
GtkWidget *cycle_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_workspaces_check"));
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_display_popup = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_display_popup"));
GtkWidget *cycle_draw_frame = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_draw_frame"));
/* Focus tab */
@@ -300,6 +301,10 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder)
G_TYPE_BOOLEAN,
(GObject *)cycle_workspaces_check, "active");
xfconf_g_property_bind (xfwm4_channel,
+ "/general/cycle_display_popup",
+ G_TYPE_BOOLEAN,
+ (GObject *)cycle_display_popup, "active");
+ xfconf_g_property_bind (xfwm4_channel,
"/general/cycle_draw_frame",
G_TYPE_BOOLEAN,
(GObject *)cycle_draw_frame, "active");
diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade
index a9e91ee..1a1b8e1 100644
--- a/settings-dialogs/xfwm4-tweaks-dialog.glade
+++ b/settings-dialogs/xfwm4-tweaks-dialog.glade
@@ -109,6 +109,21 @@ or "skip taskbar" properties set
+
+
+ False
+ False
+ 3
+
+
+
diff --git a/src/cycle.c b/src/cycle.c
index b81bbc2..0a4817e 100644
--- a/src/cycle.c
+++ b/src/cycle.c
@@ -375,7 +375,7 @@ clientCycle (Client * c, XKeyEvent * ev)
{
passdata.wireframe = wireframeCreate ((Client *) selected->data);
}
- passdata.tabwin = tabwinCreate (&client_list, selected, screen_info->params->cycle_workspaces);
+ passdata.tabwin = tabwinCreate (&client_list, selected, screen_info->params->cycle_display_popup, screen_info->params->cycle_workspaces);
eventFilterPush (display_info->xfilter, clientCycleEventFilter, &passdata);
gtk_main ();
eventFilterPop (display_info->xfilter);
diff --git a/src/settings.c b/src/settings.c
index 78e07c6..b4b2c30 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -675,6 +675,7 @@ loadSettings (ScreenInfo *screen_info)
{"click_to_focus", NULL, G_TYPE_BOOLEAN, TRUE},
{"focus_delay", NULL, G_TYPE_INT, TRUE},
{"cycle_apps_only", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"cycle_display_popup", NULL, G_TYPE_BOOLEAN, TRUE},
{"cycle_draw_frame", NULL, G_TYPE_BOOLEAN, TRUE},
{"cycle_hidden", NULL, G_TYPE_BOOLEAN, TRUE},
{"cycle_minimum", NULL, G_TYPE_BOOLEAN, TRUE},
@@ -762,6 +763,8 @@ loadSettings (ScreenInfo *screen_info)
getBoolValue ("cycle_apps_only", rc);
screen_info->params->cycle_minimum =
getBoolValue ("cycle_minimum", rc);
+ screen_info->params->cycle_display_popup =
+ getBoolValue ("cycle_display_popup", rc);
screen_info->params->cycle_draw_frame =
getBoolValue ("cycle_draw_frame", rc);
screen_info->params->cycle_hidden =
@@ -1268,6 +1271,10 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_
{
screen_info->params->cycle_minimum = g_value_get_boolean (value);
}
+ else if (!strcmp (name, "cycle_display_popup"))
+ {
+ screen_info->params->cycle_display_popup = g_value_get_boolean (value);
+ }
else if (!strcmp (name, "cycle_draw_frame"))
{
screen_info->params->cycle_draw_frame = g_value_get_boolean (value);
diff --git a/src/settings.h b/src/settings.h
index 76ffa62..73cc71d 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -197,6 +197,7 @@ struct _XfwmParams
gboolean box_resize;
gboolean click_to_focus;
gboolean cycle_apps_only;
+ gboolean cycle_display_popup;
gboolean cycle_draw_frame;
gboolean cycle_hidden;
gboolean cycle_minimum;
diff --git a/src/tabwin.c b/src/tabwin.c
index bd0ad27..9971eca 100644
--- a/src/tabwin.c
+++ b/src/tabwin.c
@@ -383,12 +383,11 @@ tabwinCreateWidget (Tabwin *tabwin, ScreenInfo *screen_info, gint monitor_num)
}
Tabwin *
-tabwinCreate (GList **client_list, GList *selected, gboolean display_workspace)
+tabwinCreate (GList **client_list, GList *selected, gboolean display_popup, gboolean display_workspace)
{
ScreenInfo *screen_info;
Client *c;
Tabwin *tabwin;
- int num_monitors, i;
g_return_val_if_fail (selected, NULL);
g_return_val_if_fail (client_list, NULL);
@@ -402,14 +401,22 @@ tabwinCreate (GList **client_list, GList *selected, gboolean display_workspace)
tabwin->client_list = client_list;
tabwin->selected = selected;
tabwin->tabwin_list = NULL;
- num_monitors = myScreenGetNumMonitors (screen_info);
- for (i = 0; i < num_monitors; i++)
- {
- gint monitor_index;
- monitor_index = myScreenGetMonitorIndex(screen_info, i);
- tabwin->tabwin_list = g_list_append (tabwin->tabwin_list, tabwinCreateWidget (tabwin, screen_info, monitor_index));
- }
+ /* No need to create widgets if display off. */
+ if (display_popup)
+ {
+ int num_monitors, i;
+
+ num_monitors = myScreenGetNumMonitors (screen_info);
+
+ for (i = 0; i < num_monitors; i++)
+ {
+ gint monitor_index;
+
+ monitor_index = myScreenGetMonitorIndex(screen_info, i);
+ tabwin->tabwin_list = g_list_append (tabwin->tabwin_list, tabwinCreateWidget (tabwin, screen_info, monitor_index));
+ }
+ }
return tabwin;
}
diff --git a/src/tabwin.h b/src/tabwin.h
index 558bef7..d30a158 100644
--- a/src/tabwin.h
+++ b/src/tabwin.h
@@ -64,6 +64,7 @@ struct _TabwinWidget
Tabwin *tabwinCreate (GList **,
GList *,
+ gboolean,
gboolean);
Client *tabwinGetSelected (Tabwin *);
Client *tabwinSelectHead (Tabwin *);