diff -u gnome-panel-2.26.2.orig/applets/wncklet/window-list.c gnome-panel-2.26.2/applets/wncklet/window-list.c --- gnome-panel-2.26.2.orig/applets/wncklet/window-list.c 2009-04-19 19:45:09.000000000 +0200 +++ gnome-panel-2.26.2/applets/wncklet/window-list.c 2009-07-08 22:16:04.000000000 +0200 @@ -35,6 +35,7 @@ GtkWidget *tasklist; gboolean include_all_workspaces; + gboolean scroll_enabled; WnckTasklistGroupingType grouping; gboolean move_unminimized_windows; @@ -53,11 +54,12 @@ GtkWidget *minimized_windows_label; GtkWidget *move_minimized_radio; GtkWidget *change_workspace_radio; + GtkWidget *enable_scroll_check; GtkWidget *about; /* gconf listeners id */ - guint listeners [3]; + guint listeners [4]; } TasklistData; static void display_properties_dialog (BonoboUIComponent *uic, @@ -85,6 +87,8 @@ tasklist->grouping); wnck_tasklist_set_include_all_workspaces (WNCK_TASKLIST (tasklist->tasklist), tasklist->include_all_workspaces); + wnck_tasklist_set_scroll_enabled (WNCK_TASKLIST (tasklist->tasklist), + tasklist->scroll_enabled); wnck_tasklist_set_switch_workspace_on_unminimize (WNCK_TASKLIST (tasklist->tasklist), tasklist->move_unminimized_windows); } @@ -176,12 +180,14 @@ gconf_client_notify_remove (client, tasklist->listeners[0]); gconf_client_notify_remove (client, tasklist->listeners[1]); gconf_client_notify_remove (client, tasklist->listeners[2]); + gconf_client_notify_remove (client, tasklist->listeners[3]); g_object_unref (G_OBJECT (client)); tasklist->listeners[0] = 0; tasklist->listeners[1] = 0; tasklist->listeners[2] = 0; + tasklist->listeners[3] = 0; if (tasklist->properties_dialog) gtk_widget_destroy (tasklist->properties_dialog); @@ -243,6 +249,34 @@ tasklist_properties_update_content_radio (tasklist); } +static void +tasklist_properties_update_scroll (TasklistData *tasklist) +{ + if (tasklist->enable_scroll_check == NULL) + return; + + gtk_toggle_button_set_active(tasklist->enable_scroll_check, tasklist->scroll_enabled); +} + +static void +scroll_enabled_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry, + TasklistData *tasklist) +{ + gboolean value; + + if (!entry->value || entry->value->type != GCONF_VALUE_BOOL) + return; + + value = gconf_value_get_bool (entry->value); + + tasklist->scroll_enabled = (value != 0); + tasklist_update (tasklist); + + tasklist_properties_update_scroll(tasklist); +} + static WnckTasklistGroupingType get_grouping_type (GConfValue *value) { @@ -387,6 +421,15 @@ NULL, NULL); g_free (key); + key = panel_applet_gconf_get_full_key (PANEL_APPLET (tasklist->applet), + "scroll_enabled"); + tasklist->listeners[3] = gconf_client_notify_add(client, key, + (GConfClientNotifyFunc)scroll_enabled_changed, + tasklist, + NULL, NULL); + g_free (key); + + g_object_unref (G_OBJECT (client)); } @@ -487,6 +530,13 @@ } error = NULL; + tasklist->scroll_enabled = panel_applet_gconf_get_bool (applet, "scroll_enabled", &error); + if (error) { + g_error_free (error); + tasklist->scroll_enabled = FALSE; /* Default value */ + } + + error = NULL; tasklist->grouping = -1; value = panel_applet_gconf_get_value (applet, "group_windows", &error); if (error) { @@ -650,6 +700,16 @@ } static void +enable_scroll_toggled (GtkCheckButton *button, + TasklistData *tasklist) +{ + panel_applet_gconf_set_bool (PANEL_APPLET (tasklist->applet), + "scroll_enabled", + gtk_toggle_button_get_active (button), + NULL); +} + +static void setup_sensitivity (TasklistData *tasklist, GConfClient *client, GladeXML *xml, @@ -700,6 +760,7 @@ tasklist->show_current_radio = WID ("show_current_radio"); tasklist->show_all_radio = WID ("show_all_radio"); + tasklist->enable_scroll_check = WID ("enable_scroll_check"); setup_sensitivity (tasklist, client, xml, "show_current_radio", @@ -753,6 +814,10 @@ tasklist_properties_update_content_radio (tasklist); g_signal_connect (G_OBJECT (tasklist->show_all_radio), "toggled", (GCallback) display_all_workspaces_toggled, tasklist); + + tasklist_properties_update_scroll (tasklist); + g_signal_connect (G_OBJECT (tasklist->enable_scroll_check), "toggled", + (GCallback) enable_scroll_toggled, tasklist); g_signal_connect_swapped (WID ("done_button"), "clicked", (GCallback) gtk_widget_hide, diff -u gnome-panel-2.26.2.orig/applets/wncklet/window-list.glade gnome-panel-2.26.2/applets/wncklet/window-list.glade --- gnome-panel-2.26.2.orig/applets/wncklet/window-list.glade 2009-04-19 19:45:09.000000000 +0200 +++ gnome-panel-2.26.2/applets/wncklet/window-list.glade 2009-07-08 21:27:57.000000000 +0200 @@ -1,279 +1,437 @@ - - - + + + - - 5 - Window List Preferences - GDK_WINDOW_TYPE_HINT_NORMAL - False - - - True - 2 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - 18 - - - True - 6 - - - True - 0 - <b>Window List Content</b> - True - - - False - False - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - - - True - 6 - - - True - True - Sh_ow windows from current workspace - True - 0 - True - - - False - False - - - - - True - True - Show windows from a_ll workspaces - True - 0 - True - show_current_radio - - - False - False - 1 - - - - - - - 1 - - - - - False - - - - - True - 6 - - - True - 0 - <b>Window Grouping</b> - True - - - False - False - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - - - True - 6 - - - True - True - _Never group windows - True - 0 - True - - - False - False - - - - - True - True - Group windows when _space is limited - True - 0 - True - never_group_radio - - - False - False - 1 - - - - - True - True - _Always group windows - True - 0 - True - never_group_radio - - - False - False - 2 - - - - - - - 1 - - - - - False - 1 - - - - - True - 6 - - - True - 0 - <b>Restoring Minimized Windows</b> - True - - - False - False - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 12 - - - True - 6 - - - True - True - Restore to current _workspace - True - 0 - True - - - False - False - - - - - True - True - Restore to na_tive workspace - True - 0 - True - move_minimized_radio - - - False - False - 1 - - - - - - - 1 - - - - - False - 2 - - - - - - - True - GTK_BUTTONBOX_END - - - True - True - True - gtk-help - True - -11 - - - - - True - True - True - True - gtk-close - True - 0 - - - 1 - - - - - False - GTK_PACK_END - 1 - - - - - + + + 5 + Window List Preferences + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + False + False + + + + True + False + 2 + + + + 5 + True + False + 18 + + + + True + False + 6 + + + + True + <b>Window List Content</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 + + + + True + False + 6 + + + + True + True + Sh_ow windows from current workspace + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + Show windows from a_ll workspaces + True + GTK_RELIEF_NORMAL + True + False + False + True + show_current_radio + + + 0 + False + False + + + + + + True + True + Enable scrolling + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + + 0 + True + True + + + + + 0 + False + True + + + + + + True + False + 6 + + + + True + <b>Window Grouping</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 + + + + True + False + 6 + + + + True + True + _Never group windows + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + Group windows when _space is limited + True + GTK_RELIEF_NORMAL + True + False + False + True + never_group_radio + + + 0 + False + False + + + + + + True + True + _Always group windows + True + GTK_RELIEF_NORMAL + True + False + False + True + never_group_radio + + + 0 + False + False + + + + + + + 0 + True + True + + + + + 0 + False + True + + + + + + True + False + 6 + + + + True + <b>Restoring Minimized Windows</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 + + + + True + False + 6 + + + + True + True + Restore to current _workspace + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + Restore to na_tive workspace + True + GTK_RELIEF_NORMAL + True + False + False + True + move_minimized_radio + + + 0 + False + False + + + + + + + 0 + True + True + + + + + 0 + False + True + + + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_END + + + + True + True + True + gtk-help + True + GTK_RELIEF_NORMAL + True + -11 + + + + + + True + True + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + 0 + + + + + 0 + False + True + GTK_PACK_END + + + + + + Endast i gnome-panel-2.26.2/applets/wncklet/: window-list.gladep diff -u gnome-panel-2.26.2.orig/applets/wncklet/window-list.schemas.in gnome-panel-2.26.2/applets/wncklet/window-list.schemas.in --- gnome-panel-2.26.2.orig/applets/wncklet/window-list.schemas.in 2009-04-19 19:45:09.000000000 +0200 +++ gnome-panel-2.26.2/applets/wncklet/window-list.schemas.in 2009-07-08 21:07:07.000000000 +0200 @@ -16,6 +16,20 @@ + /schemas/apps/window_list_applet/prefs/scroll_enabled + window-list-applet + bool + false + + Enables scrolling in tasklist + + If true, scrolling over the tasklist switches to the next/previous + application. + + + + + /schemas/apps/window_list_applet/prefs/group_windows window-list-applet string