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 + + Display p_opup list when cycling through windows + True + True + False + True + True + + + False + False + 3 + + + _Draw frame around selected windows while cycling True @@ -120,7 +135,7 @@ or "skip taskbar" properties set False False - 3 + 4 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 *);