diff options
Diffstat (limited to 'applets/wncklet')
-rw-r--r-- | applets/wncklet/window-list.c | 459 |
1 files changed, 104 insertions, 355 deletions
diff --git a/applets/wncklet/window-list.c b/applets/wncklet/window-list.c index 28ebd170..c95a1336 100644 --- a/applets/wncklet/window-list.c +++ b/applets/wncklet/window-list.c @@ -43,26 +43,18 @@ #define WINDOW_LIST_PREVIEW_SCHEMA "org.mate.panel.applet.window-list-previews" #endif /* HAVE_WINDOW_PREVIEWS */ -typedef enum { +enum TasklistGroupingType { TASKLIST_NEVER_GROUP, TASKLIST_AUTO_GROUP, TASKLIST_ALWAYS_GROUP -} TasklistGroupingType; +}; typedef struct { GtkWidget* applet; GtkWidget* tasklist; #ifdef HAVE_WINDOW_PREVIEWS GtkWidget* preview; - - gboolean show_window_thumbnails; - gint thumbnail_size; #endif - gboolean include_all_workspaces; - - TasklistGroupingType grouping; - gboolean move_unminimized_windows; - gboolean scroll_enable; GtkOrientation orientation; int size; @@ -74,21 +66,19 @@ typedef struct { /* Properties: */ GtkWidget* properties_dialog; - GtkWidget* wayland_info_label; - GtkWidget* show_current_radio; - GtkWidget* show_all_radio; + GtkWidget* display_all_workspaces_radio; #ifdef HAVE_WINDOW_PREVIEWS GtkWidget* window_thumbnail_box; GtkWidget* show_thumbnails_check; GtkWidget* thumbnail_size_label; GtkWidget* thumbnail_size_spin; + GtkWidget* thumbnail_box; #endif GtkWidget* never_group_radio; GtkWidget* auto_group_radio; GtkWidget* always_group_radio; - GtkWidget* move_minimized_radio; + GtkWidget* restore_to_current_workspace_radio; GtkWidget* mouse_scroll_check; - GtkWidget* change_workspace_radio; GtkWidget* minimized_windows_box; GtkWidget* window_grouping_box; GtkWidget* window_list_content_box; @@ -105,7 +95,7 @@ static void display_help_dialog(GtkAction* action, TasklistData* tasklist); static void display_about_dialog(GtkAction* action, TasklistData* tasklist); static void destroy_tasklist(GtkWidget* widget, TasklistData* tasklist); -static void tasklist_update(TasklistData* tasklist) +static void tasklist_set_size_request(TasklistData* tasklist) { if (tasklist->orientation == GTK_ORIENTATION_HORIZONTAL) { @@ -115,33 +105,6 @@ static void tasklist_update(TasklistData* tasklist) { gtk_widget_set_size_request(GTK_WIDGET(tasklist->tasklist), tasklist->size, -1); } - -#ifdef HAVE_X11 - if (WNCK_IS_TASKLIST(tasklist->tasklist)) - { - WnckTasklistGroupingType grouping; - switch (tasklist->grouping) - { - case TASKLIST_NEVER_GROUP: - grouping = WNCK_TASKLIST_NEVER_GROUP; - break; - case TASKLIST_AUTO_GROUP: - grouping = WNCK_TASKLIST_AUTO_GROUP; - break; - case TASKLIST_ALWAYS_GROUP: - grouping = WNCK_TASKLIST_ALWAYS_GROUP; - break; - default: - grouping = WNCK_TASKLIST_NEVER_GROUP; - } - wnck_tasklist_set_grouping(WNCK_TASKLIST(tasklist->tasklist), grouping); - wnck_tasklist_set_include_all_workspaces(WNCK_TASKLIST(tasklist->tasklist), tasklist->include_all_workspaces); - wnck_tasklist_set_switch_workspace_on_unminimize(WNCK_TASKLIST(tasklist->tasklist), tasklist->move_unminimized_windows); - wnck_tasklist_set_scroll_enabled (WNCK_TASKLIST(tasklist->tasklist), tasklist->scroll_enable); - } -#endif /* HAVE_X11 */ - - /* Not implemented for Wayland */ } static void tasklist_apply_orientation(TasklistData* tasklist) @@ -190,7 +153,7 @@ static const int* tasklist_get_size_hint_list(TasklistData* tasklist, int* n_ele } } -static void response_cb(GtkWidget* widget, int id, TasklistData* tasklist) +static void on_tasklist_properties_dialog_response(GtkWidget* widget, int id, TasklistData* tasklist) { if (id == GTK_RESPONSE_HELP) { @@ -229,8 +192,7 @@ static void applet_change_orient(MatePanelApplet* applet, MatePanelAppletOrient tasklist->orientation = new_orient; tasklist_apply_orientation (tasklist); - - tasklist_update(tasklist); + tasklist_set_size_request(tasklist); } static void applet_change_background(MatePanelApplet* applet, MatePanelAppletBackgroundType type, GdkColor* color, cairo_pattern_t* pattern, TasklistData* tasklist) @@ -285,16 +247,17 @@ preview_window_thumbnail (WnckWindow *wnck_window, height = gdk_window_get_height (window) * scale; /* Scale to configured size while maintaining aspect ratio */ + gint thumbnail_size = g_settings_get_int (tasklist->preview_settings, "thumbnail-window-size"); if (width > height) { - int max_size = MIN (width, tasklist->thumbnail_size * scale); + int max_size = MIN (width, thumbnail_size * scale); ratio = (double) max_size / (double) width; *thumbnail_width = max_size; *thumbnail_height = (int) ((double) height * ratio); } else { - int max_size = MIN (height, tasklist->thumbnail_size * scale); + int max_size = MIN (height, thumbnail_size * scale); ratio = (double) max_size / (double) height; *thumbnail_height = max_size; *thumbnail_width = (int) ((double) width * ratio); @@ -383,7 +346,7 @@ static gboolean applet_enter_notify_event (WnckTasklist *tl, GList *wnck_windows tasklist->preview = NULL; } - if (!tasklist->show_window_thumbnails || wnck_windows == NULL) + if (!g_settings_get_boolean (tasklist->preview_settings, "show-window-thumbnails") || wnck_windows == NULL) return FALSE; n_windows = g_list_length (wnck_windows); @@ -444,7 +407,7 @@ static void applet_change_pixel_size(MatePanelApplet* applet, gint size, Tasklis tasklist->size = size; - tasklist_update(tasklist); + tasklist_set_size_request(tasklist); } /* TODO: this is sad, should be used a function to retrieve applications from @@ -489,165 +452,6 @@ static const GtkActionEntry tasklist_menu_actions[] = { } }; -static void tasklist_properties_update_content_radio(TasklistData* tasklist) -{ - GtkWidget* button; - - if (tasklist->show_current_radio == NULL) - return; - - if (tasklist->include_all_workspaces) - { - button = tasklist->show_all_radio; - } - else - { - button = tasklist->show_current_radio; - } - - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); - - gtk_widget_set_sensitive(tasklist->minimized_windows_box, tasklist->include_all_workspaces); -} - -static void display_all_workspaces_changed(GSettings* settings, gchar* key, TasklistData* tasklist) -{ - gboolean value; - - value = g_settings_get_boolean(settings, key); - - tasklist->include_all_workspaces = (value != 0); - tasklist_update(tasklist); - - tasklist_properties_update_content_radio(tasklist); -} - -#ifdef HAVE_WINDOW_PREVIEWS -static void tasklist_update_thumbnail_size_spin(TasklistData* tasklist) -{ - GtkWidget* button; - - if (!tasklist->thumbnail_size) - return; - - button = tasklist->thumbnail_size_spin; - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(button), (gdouble)tasklist->thumbnail_size); -} - -static void thumbnail_size_changed(GSettings *settings, gchar* key, TasklistData* tasklist) -{ - tasklist->thumbnail_size = g_settings_get_int(settings, key); - tasklist_update_thumbnail_size_spin(tasklist); -} -#endif - -static GtkWidget* get_grouping_button(TasklistData* tasklist, TasklistGroupingType type) -{ - switch (type) - { - default: - case TASKLIST_NEVER_GROUP: - return tasklist->never_group_radio; - break; - case TASKLIST_AUTO_GROUP: - return tasklist->auto_group_radio; - break; - case TASKLIST_ALWAYS_GROUP: - return tasklist->always_group_radio; - break; - } -} - -static void group_windows_changed(GSettings* settings, gchar* key, TasklistData* tasklist) -{ - TasklistGroupingType type; - GtkWidget* button; - - type = g_settings_get_enum (settings, key); - - tasklist->grouping = type; - tasklist_update(tasklist); - - button = get_grouping_button(tasklist, type); - - if (button && !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) - { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); - } -} - -static void tasklist_update_unminimization_radio(TasklistData* tasklist) -{ - GtkWidget* button; - - if (tasklist->move_minimized_radio == NULL) - return; - - if (tasklist->move_unminimized_windows) - { - button = tasklist->move_minimized_radio; - } - else - { - button = tasklist->change_workspace_radio; - } - - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); -} - - -static void move_unminimized_windows_changed(GSettings* settings, gchar* key, TasklistData* tasklist) -{ - gboolean value; - - value = g_settings_get_boolean(settings, key); - - tasklist->move_unminimized_windows = (value != 0); - tasklist_update(tasklist); - - tasklist_update_unminimization_radio(tasklist); -} - -static void scroll_enabled_changed (GSettings* settings, gchar* key, TasklistData* tasklist) -{ - tasklist->scroll_enable = g_settings_get_boolean (settings, key); - tasklist_update(tasklist); -} - -static void setup_gsettings(TasklistData* tasklist) -{ - tasklist->settings = mate_panel_applet_settings_new (MATE_PANEL_APPLET (tasklist->applet), WINDOW_LIST_SCHEMA); - - g_signal_connect (tasklist->settings, - "changed::display-all-workspaces", - G_CALLBACK (display_all_workspaces_changed), - tasklist); - -#ifdef HAVE_WINDOW_PREVIEWS - tasklist->preview_settings = mate_panel_applet_settings_new (MATE_PANEL_APPLET (tasklist->applet), WINDOW_LIST_PREVIEW_SCHEMA); - - g_signal_connect (tasklist->preview_settings, - "changed::thumbnail-window-size", - G_CALLBACK (thumbnail_size_changed), - tasklist); -#endif - g_signal_connect (tasklist->settings, - "changed::group-windows", - G_CALLBACK (group_windows_changed), - tasklist); - g_signal_connect (tasklist->settings, - "changed::move-unminimized-windows", - G_CALLBACK (move_unminimized_windows_changed), - tasklist); - g_signal_connect (tasklist->settings, - "changed::scroll-enabled", - G_CALLBACK (scroll_enabled_changed), - tasklist); -} - static void applet_size_allocate(GtkWidget *widget, GtkAllocation *allocation, TasklistData *tasklist) { int len; @@ -755,22 +559,12 @@ gboolean window_list_applet_fill(MatePanelApplet* applet) mate_panel_applet_set_flags(MATE_PANEL_APPLET(tasklist->applet), MATE_PANEL_APPLET_EXPAND_MAJOR | MATE_PANEL_APPLET_EXPAND_MINOR | MATE_PANEL_APPLET_HAS_HANDLE); - setup_gsettings(tasklist); - - tasklist->include_all_workspaces = g_settings_get_boolean (tasklist->settings, "display-all-workspaces"); + tasklist->settings = mate_panel_applet_settings_new (MATE_PANEL_APPLET (tasklist->applet), WINDOW_LIST_SCHEMA); #ifdef HAVE_WINDOW_PREVIEWS - tasklist->show_window_thumbnails = g_settings_get_boolean (tasklist->preview_settings, "show-window-thumbnails"); - - tasklist->thumbnail_size = g_settings_get_int (tasklist->preview_settings, "thumbnail-window-size"); + tasklist->preview_settings = mate_panel_applet_settings_new (MATE_PANEL_APPLET (tasklist->applet), WINDOW_LIST_PREVIEW_SCHEMA); #endif - tasklist->grouping = g_settings_get_enum (tasklist->settings, "group-windows"); - - tasklist->move_unminimized_windows = g_settings_get_boolean (tasklist->settings, "move-unminimized-windows"); - - tasklist->scroll_enable = g_settings_get_boolean (tasklist->settings, "scroll-enabled"); - tasklist->size = mate_panel_applet_get_size(applet); #if !defined(WNCKLET_INPROCESS) && !GTK_CHECK_VERSION (3, 23, 0) @@ -875,7 +669,7 @@ gboolean window_list_applet_fill(MatePanelApplet* applet) g_object_unref(action_group); - tasklist_update(tasklist); + tasklist_set_size_request(tasklist); gtk_widget_show(tasklist->tasklist); gtk_widget_show(tasklist->applet); @@ -902,7 +696,6 @@ static void call_system_monitor(GtkAction* action, TasklistData* tasklist) } } - static void display_help_dialog(GtkAction* action, TasklistData* tasklist) { wncklet_display_help(tasklist->applet, "mate-user-guide", "windowlist", WINDOW_LIST_ICON); @@ -940,169 +733,116 @@ static void display_about_dialog(GtkAction* action, TasklistData* tasklist) NULL); } -static void group_windows_toggled(GtkToggleButton* button, TasklistData* tasklist) +static void mouse_scrolling_callback(GSettings* settings, gchar *key, TasklistData* tasklist) { - if (gtk_toggle_button_get_active(button)) - { - gchar *value; - value = g_object_get_data (G_OBJECT (button), "group_value"); - g_settings_set_string (tasklist->settings, "group-windows", value); - } + wnck_tasklist_set_scroll_enabled (WNCK_TASKLIST(tasklist->tasklist), g_settings_get_boolean (settings, "scroll-enabled")); } -#ifdef HAVE_WINDOW_PREVIEWS -static void thumbnail_size_spin_changed(GtkSpinButton* button, TasklistData* tasklist) +static void move_unminimized_windows_callback(GSettings* settings, gchar *key, TasklistData* tasklist) { - g_settings_set_int(tasklist->preview_settings, "thumbnail-window-size", gtk_spin_button_get_value_as_int(button)); + wnck_tasklist_set_switch_workspace_on_unminimize(WNCK_TASKLIST(tasklist->tasklist), g_settings_get_boolean (settings, "move-unminimized-windows")); } -#endif -static void move_minimized_toggled(GtkToggleButton* button, TasklistData* tasklist) +static void display_all_workspaces_callback(GSettings* settings, gchar *key, TasklistData* tasklist) { - g_settings_set_boolean(tasklist->settings, "move-unminimized-windows", gtk_toggle_button_get_active(button)); + wnck_tasklist_set_include_all_workspaces(WNCK_TASKLIST(tasklist->tasklist), g_settings_get_boolean (settings, "display-all-workspaces")); } -static void display_all_workspaces_toggled(GtkToggleButton* button, TasklistData* tasklist) +#ifdef HAVE_WINDOW_PREVIEWS +static void on_thumbnail_size_spin_value_changed(GtkSpinButton* button, TasklistData* tasklist) { - g_settings_set_boolean(tasklist->settings, "display-all-workspaces", gtk_toggle_button_get_active(button)); + g_settings_set_int(tasklist->preview_settings, "thumbnail-window-size", gtk_spin_button_get_value_as_int(button)); } +#endif -#define WID(s) GTK_WIDGET(gtk_builder_get_object(builder, s)) - -static void setup_sensitivity(TasklistData* tasklist, GtkBuilder* builder, const char* wid1, const char* wid2, const char* wid3, const char* key) +static void on_never_group_radio_toggled(GtkRadioButton* button, TasklistData* tasklist) { - GtkWidget* w; - - if (g_settings_is_writable(tasklist->settings, key)) - { - return; - } - - w = WID(wid1); - g_assert(w != NULL); - gtk_widget_set_sensitive(w, FALSE); - - if (wid2 != NULL) - { - w = WID(wid2); - g_assert(w != NULL); - gtk_widget_set_sensitive(w, FALSE); - } - - if (wid3 != NULL) - { - w = WID(wid3); - g_assert(w != NULL); - gtk_widget_set_sensitive(w, FALSE); - } + g_settings_set_enum (tasklist->settings, "group-windows", TASKLIST_NEVER_GROUP); + wnck_tasklist_set_grouping(WNCK_TASKLIST(tasklist->tasklist), WNCK_TASKLIST_NEVER_GROUP); } -#ifdef HAVE_WAYLAND -static void setup_dialog_wayland(TasklistData* tasklist) +static void on_auto_group_radio_toggled(GtkRadioButton* button, TasklistData* tasklist) { - gtk_widget_show(tasklist->wayland_info_label); - - gtk_widget_set_sensitive(tasklist->window_list_content_box, FALSE); - gtk_widget_set_sensitive(tasklist->window_grouping_box, FALSE); - gtk_widget_set_sensitive(tasklist->minimized_windows_box, FALSE); - -#ifdef HAVE_WINDOW_PREVIEWS - gtk_widget_set_sensitive(tasklist->window_thumbnail_box, FALSE); -#endif /* HAVE_WINDOW_PREVIEWS */ + g_settings_set_enum (tasklist->settings, "group-windows", TASKLIST_AUTO_GROUP); + wnck_tasklist_set_grouping(WNCK_TASKLIST(tasklist->tasklist), WNCK_TASKLIST_AUTO_GROUP); } -#endif /* HAVE_WAYLAND */ -static void setup_dialog(GtkBuilder* builder, TasklistData* tasklist) +static void on_always_group_radio_toggled(GtkRadioButton* button, TasklistData* tasklist) { - GtkWidget* button; -#ifdef HAVE_WINDOW_PREVIEWS - GtkAdjustment *adjustment; -#endif /* HAVE_WINDOW_PREVIEWS */ + g_settings_set_enum (tasklist->settings, "group-windows", TASKLIST_ALWAYS_GROUP); + wnck_tasklist_set_grouping(WNCK_TASKLIST(tasklist->tasklist), WNCK_TASKLIST_ALWAYS_GROUP); +} - tasklist->wayland_info_label = WID("wayland_info_label"); - tasklist->show_current_radio = WID("show_current_radio"); - tasklist->show_all_radio = WID("show_all_radio"); +#define GET_WIDGET(s) GTK_WIDGET(gtk_builder_get_object(builder, s)) - setup_sensitivity(tasklist, builder, "show_current_radio", "show_all_radio", NULL, "display-all-workspaces" /* key */); +static void setup_dialog(GtkBuilder* builder, TasklistData* tasklist) +{ + tasklist->display_all_workspaces_radio = GET_WIDGET("display_all_workspaces_radio"); + tasklist->never_group_radio = GET_WIDGET("never_group_radio"); + tasklist->auto_group_radio = GET_WIDGET("auto_group_radio"); + tasklist->always_group_radio = GET_WIDGET("always_group_radio"); - tasklist->never_group_radio = WID("never_group_radio"); - tasklist->auto_group_radio = WID("auto_group_radio"); - tasklist->always_group_radio = WID("always_group_radio"); +#ifdef HAVE_WINDOW_PREVIEWS + tasklist->window_thumbnail_box = GET_WIDGET("window_thumbnail_box"); + tasklist->show_thumbnails_check = GET_WIDGET("show_thumbnails_check"); + tasklist->thumbnail_size_label = GET_WIDGET("thumbnail_size_label"); + tasklist->thumbnail_size_spin = GET_WIDGET("thumbnail_size_spin"); + tasklist->thumbnail_box = GET_WIDGET("thumbnail_box"); - setup_sensitivity(tasklist, builder, "never_group_radio", "auto_group_radio", "always_group_radio", "group-windows" /* key */); + g_settings_bind(tasklist->preview_settings, "show-window-thumbnails", + tasklist->show_thumbnails_check, "active", + G_SETTINGS_BIND_DEFAULT); -#ifdef HAVE_WINDOW_PREVIEWS - tasklist->window_thumbnail_box = WID("window_thumbnail_box"); - tasklist->show_thumbnails_check = WID("show_thumbnails_check"); - tasklist->thumbnail_size_label = WID("thumbnail_size_label"); - tasklist->thumbnail_size_spin = WID("thumbnail_size_spin"); - - g_settings_bind(tasklist->preview_settings, "show-window-thumbnails", tasklist->show_thumbnails_check, "active", G_SETTINGS_BIND_DEFAULT); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tasklist->show_thumbnails_check))) { - gtk_widget_set_sensitive (tasklist->thumbnail_size_label, TRUE); - gtk_widget_set_sensitive (tasklist->thumbnail_size_spin, TRUE); - } else { - gtk_widget_set_sensitive (tasklist->thumbnail_size_label, FALSE); - gtk_widget_set_sensitive (tasklist->thumbnail_size_spin, FALSE); - } - g_object_bind_property(tasklist->show_thumbnails_check, "active", tasklist->thumbnail_size_label, "sensitive", G_BINDING_DEFAULT); - g_object_bind_property(tasklist->show_thumbnails_check, "active", tasklist->thumbnail_size_spin, "sensitive", G_BINDING_DEFAULT); + gtk_widget_set_sensitive (tasklist->thumbnail_box, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tasklist->show_thumbnails_check))); + g_object_bind_property(tasklist->show_thumbnails_check, "active", tasklist->thumbnail_box, "sensitive", G_BINDING_DEFAULT); - adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON(tasklist->thumbnail_size_spin)); - gtk_adjustment_set_lower (adjustment, 0); - gtk_adjustment_set_upper (adjustment, 999); - gtk_adjustment_set_step_increment (adjustment, 1); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(tasklist->thumbnail_size_spin), + (gdouble) g_settings_get_int (tasklist->preview_settings, "thumbnail-window-size")); #else - gtk_widget_hide(WID("window_thumbnail_box")); + gtk_widget_hide(GET_WIDGET("window_thumbnail_box")); #endif - tasklist->move_minimized_radio = WID("move_minimized_radio"); - tasklist->change_workspace_radio = WID("change_workspace_radio"); - tasklist->mouse_scroll_check = WID("mouse_scroll_check"); - tasklist->minimized_windows_box = WID("minimized_windows_box"); - tasklist->window_grouping_box = WID("window_grouping_box"); - tasklist->window_list_content_box = WID("window_list_content_box"); - - setup_sensitivity(tasklist, builder, "move_minimized_radio", "change_workspace_radio", NULL, "move-unminimized-windows" /* key */); - - /* Window grouping: */ - button = get_grouping_button(tasklist, tasklist->grouping); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); - g_object_set_data(G_OBJECT(tasklist->never_group_radio), "group_value", "never"); - g_object_set_data(G_OBJECT(tasklist->auto_group_radio), "group_value", "auto"); - g_object_set_data(G_OBJECT(tasklist->always_group_radio), "group_value", "always"); - - g_signal_connect(G_OBJECT(tasklist->never_group_radio), "toggled", (GCallback) group_windows_toggled, tasklist); - g_signal_connect(G_OBJECT(tasklist->auto_group_radio), "toggled", (GCallback) group_windows_toggled, tasklist); - g_signal_connect(G_OBJECT(tasklist->always_group_radio), "toggled", (GCallback) group_windows_toggled, tasklist); - - /* Mouse Scroll: */ - g_settings_bind (tasklist->settings, - "scroll-enabled", - tasklist->mouse_scroll_check, - "active", - G_SETTINGS_BIND_DEFAULT); + tasklist->restore_to_current_workspace_radio = GET_WIDGET("restore_to_current_workspace_radio"); + tasklist->mouse_scroll_check = GET_WIDGET("mouse_scroll_check"); + tasklist->minimized_windows_box = GET_WIDGET("minimized_windows_box"); + tasklist->window_grouping_box = GET_WIDGET("window_grouping_box"); + tasklist->window_list_content_box = GET_WIDGET("window_list_content_box"); -#ifdef HAVE_WINDOW_PREVIEWS - /* change thumbnail size: */ - tasklist_update_thumbnail_size_spin(tasklist); - g_signal_connect(G_OBJECT(tasklist->thumbnail_size_spin), "value-changed", (GCallback) thumbnail_size_spin_changed, tasklist); -#endif + g_settings_bind (tasklist->settings, "scroll-enabled", + tasklist->mouse_scroll_check, "active", + G_SETTINGS_BIND_DEFAULT); + + g_signal_connect (tasklist->settings, + "changed::scroll-enabled", + G_CALLBACK (mouse_scrolling_callback), + tasklist); - /* move window when unminimizing: */ - tasklist_update_unminimization_radio(tasklist); - g_signal_connect(G_OBJECT(tasklist->move_minimized_radio), "toggled", (GCallback) move_minimized_toggled, tasklist); + g_settings_bind (tasklist->settings, "move-unminimized-windows", + tasklist->restore_to_current_workspace_radio, "active", + G_SETTINGS_BIND_DEFAULT); + g_signal_connect (tasklist->settings, "changed::move-unminimized-windows", + G_CALLBACK (move_unminimized_windows_callback), + tasklist); - /* Tasklist content: */ - tasklist_properties_update_content_radio (tasklist); - g_signal_connect(G_OBJECT(tasklist->show_all_radio), "toggled", (GCallback) display_all_workspaces_toggled, tasklist); + g_settings_bind(tasklist->settings, "display-all-workspaces", + tasklist->display_all_workspaces_radio, "active", + G_SETTINGS_BIND_DEFAULT); + g_signal_connect (tasklist->settings, "changed::display-all-workspaces", + G_CALLBACK (display_all_workspaces_callback), + tasklist); - g_signal_connect_swapped(WID("done_button"), "clicked", (GCallback) gtk_widget_hide, tasklist->properties_dialog); - g_signal_connect(tasklist->properties_dialog, "response", G_CALLBACK(response_cb), tasklist); + gtk_widget_set_sensitive (tasklist->minimized_windows_box, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tasklist->display_all_workspaces_radio))); + g_object_bind_property(tasklist->display_all_workspaces_radio, "active", tasklist->minimized_windows_box, "sensitive", G_BINDING_DEFAULT); #ifdef HAVE_WAYLAND if (GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default())) { - setup_dialog_wayland(tasklist); + gtk_widget_set_sensitive(tasklist->window_list_content_box, FALSE); + gtk_widget_set_sensitive(tasklist->window_grouping_box, FALSE); + gtk_widget_set_sensitive(tasklist->minimized_windows_box, FALSE); + gtk_widget_set_sensitive(tasklist->mouse_scroll_check, FALSE); + #ifdef HAVE_WINDOW_PREVIEWS + gtk_widget_set_sensitive(tasklist->window_thumbnail_box, FALSE); + #endif } #endif /* HAVE_WAYLAND */ } @@ -1117,18 +857,27 @@ static void display_properties_dialog(GtkAction* action, TasklistData* tasklist) gtk_builder_set_translation_domain(builder, GETTEXT_PACKAGE); gtk_builder_add_from_resource (builder, WNCKLET_RESOURCE_PATH "window-list.ui", NULL); - tasklist->properties_dialog = WID("tasklist_properties_dialog"); + tasklist->properties_dialog = GET_WIDGET("tasklist_properties_dialog"); g_object_add_weak_pointer(G_OBJECT(tasklist->properties_dialog), (void**) &tasklist->properties_dialog); setup_dialog(builder, tasklist); + gtk_builder_add_callback_symbols (builder, +#ifdef HAVE_WINDOW_PREVIEWS + "on_thumbnail_size_spin_value_changed", G_CALLBACK (on_thumbnail_size_spin_value_changed), +#endif + "on_never_group_radio_toggled", G_CALLBACK (on_never_group_radio_toggled), + "on_auto_group_radio_toggled", G_CALLBACK (on_auto_group_radio_toggled), + "on_always_group_radio_toggled", G_CALLBACK (on_always_group_radio_toggled), + "on_tasklist_properties_dialog_response", G_CALLBACK (on_tasklist_properties_dialog_response), + NULL); + + gtk_builder_connect_signals(builder, tasklist); + g_object_unref(builder); } - gtk_window_set_icon_name(GTK_WINDOW(tasklist->properties_dialog), WINDOW_LIST_ICON); - - gtk_window_set_resizable(GTK_WINDOW(tasklist->properties_dialog), FALSE); gtk_window_set_screen(GTK_WINDOW(tasklist->properties_dialog), gtk_widget_get_screen(tasklist->applet)); gtk_window_present(GTK_WINDOW(tasklist->properties_dialog)); } |