diff options
| -rw-r--r-- | NEWS | 19 | ||||
| -rw-r--r-- | applets/clock/clock.c | 15 | ||||
| -rw-r--r-- | applets/fish/fish.c | 4 | ||||
| -rw-r--r-- | applets/wncklet/Makefile.am | 6 | ||||
| -rw-r--r-- | applets/wncklet/showdesktop.c | 16 | ||||
| -rw-r--r-- | applets/wncklet/window-list.c | 113 | ||||
| -rw-r--r-- | applets/wncklet/window-menu.c | 9 | ||||
| -rw-r--r-- | applets/wncklet/wncklet.c | 19 | ||||
| -rw-r--r-- | applets/wncklet/wncklet.h | 7 | ||||
| -rw-r--r-- | applets/wncklet/workspace-switcher.c | 13 | ||||
| -rw-r--r-- | configure.ac | 16 | ||||
| -rw-r--r-- | mate-panel/panel-action-button.c | 4 | ||||
| -rw-r--r-- | mate-panel/panel-applet-frame.c | 4 | ||||
| -rw-r--r-- | mate-panel/panel-force-quit.c | 6 | ||||
| -rw-r--r-- | mate-panel/panel-recent.c | 6 | ||||
| -rw-r--r-- | mate-panel/panel-stock-icons.c | 79 | ||||
| -rw-r--r-- | mate-panel/panel-stock-icons.h | 12 | ||||
| -rw-r--r-- | mate-panel/panel-toplevel.c | 2 |
18 files changed, 103 insertions, 247 deletions
@@ -1,3 +1,22 @@ +### mate-panel 1.28.7 + *re-release + +### mate-panel 1.28.6 + * Fix uninitialized and unused screen vars + * wncklet: Bump libwnck to 43.0 + * wncklet: Remove window preview conditionals + * clock: Provide fallback preferences path + * Bump GTK version to 3.24 + * panel-stock-icons: Remove deprecated GtkIconFactory and GtkIconSource + * Remove deprecated gdk_screen_get_* functions + * remove deprecated GtkStockItem + * wncklet: Remove unused attributes + * wncklet: Remove icon loader function from window list applet + +### mate-panel 1.28.5 + * Clock Applet: Add scrollbar to Locations lists when the lists get too long + * applets/clock: Fix compatibility with musl libc + ### mate-panel 1.28.4 * Attempt to fix 2nd Travis deployment issue diff --git a/applets/clock/clock.c b/applets/clock/clock.c index fee7edf2..edd53ed2 100644 --- a/applets/clock/clock.c +++ b/applets/clock/clock.c @@ -857,8 +857,19 @@ create_calendar (ClockData *cd) { GtkWidget *window; char *prefs_path; + char *fallback_path = NULL; prefs_path = mate_panel_applet_get_preferences_path (MATE_PANEL_APPLET (cd->applet)); + + /* Provide a fallback preferences path in case the applet doesn't + * provide one. This happens when running outside the actual panel, + * like in mate-panel-test-applets */ + if (!prefs_path || !prefs_path[0]) { + fallback_path = g_strdup ("/org/mate/panel/applets/clock/"); + g_free (prefs_path); + prefs_path = fallback_path; + } + window = calendar_window_new (&cd->current_time, prefs_path, cd->orient == MATE_PANEL_APPLET_ORIENT_UP); @@ -922,8 +933,8 @@ position_calendar_popup (ClockData *cd) button_w = allocation.width; button_h = allocation.height; - screen = gtk_window_get_screen (GTK_WINDOW (cd->calendar_popup)); - display = gdk_screen_get_display (screen); + screen = gtk_widget_get_screen (GTK_WIDGET (cd->calendar_popup)); + display = gtk_widget_get_display (GTK_WIDGET (cd->calendar_popup)); n = gdk_display_get_n_monitors (display); for (i = 0; i < n; i++) { diff --git a/applets/fish/fish.c b/applets/fish/fish.c index 45ce9228..d70d250a 100644 --- a/applets/fish/fish.c +++ b/applets/fish/fish.c @@ -819,7 +819,6 @@ static void display_fortune_dialog(FishApplet* fish) int argc; char **argv; GdkDisplay *display; - GdkScreen *screen; char *display_name; /* if there is still a pipe, close it */ @@ -937,8 +936,7 @@ static void display_fortune_dialog(FishApplet* fish) clear_fortune_text (fish); - screen = gtk_widget_get_screen (GTK_WIDGET (fish)); - display = gdk_screen_get_display (screen); + display = gtk_widget_get_display (GTK_WIDGET (fish)); display_name = g_strdup (gdk_display_get_name (display)); g_spawn_async_with_pipes (NULL, /* working directory */ argv, diff --git a/applets/wncklet/Makefile.am b/applets/wncklet/Makefile.am index 14f8a5c7..137e471b 100644 --- a/applets/wncklet/Makefile.am +++ b/applets/wncklet/Makefile.am @@ -107,16 +107,10 @@ BUILT_SOURCES = \ wncklet-resources.c \ wncklet-resources.h -if HAVE_WINDOW_PREVIEWS wncklet_gschemas_in = \ org.mate.panel.applet.window-list.gschema.xml.in \ org.mate.panel.applet.window-list-previews.gschema.xml.in \ org.mate.panel.applet.workspace-switcher.gschema.xml.in -else -wncklet_gschemas_in = \ - org.mate.panel.applet.window-list.gschema.xml.in \ - org.mate.panel.applet.workspace-switcher.gschema.xml.in -endif gsettings_SCHEMAS = $(wncklet_gschemas_in:.xml.in=.xml) @GSETTINGS_RULES@ diff --git a/applets/wncklet/showdesktop.c b/applets/wncklet/showdesktop.c index 190077f1..28a140b6 100644 --- a/applets/wncklet/showdesktop.c +++ b/applets/wncklet/showdesktop.c @@ -52,6 +52,9 @@ typedef struct { GtkOrientation orient; int size; +#ifdef HAVE_X11 + WnckHandle* wnck_handle; +#endif WnckScreen* wnck_screen; guint showing_desktop: 1; @@ -308,6 +311,10 @@ static void applet_destroyed(GtkWidget* applet, ShowDesktopData* sdd) sdd->icon_theme = NULL; } +#ifdef HAVE_X11 + g_clear_object(&sdd->wnck_handle); +#endif + g_free (sdd); } @@ -371,7 +378,7 @@ static void show_desktop_applet_realized(MatePanelApplet* applet, gpointer data) #ifdef HAVE_X11 if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { - sdd->wnck_screen = wnck_screen_get (gdk_x11_screen_get_screen_number (screen)); + sdd->wnck_screen = wncklet_get_screen (sdd->wnck_handle, sdd->applet); if (sdd->wnck_screen != NULL) wncklet_connect_while_alive (sdd->wnck_screen, "showing_desktop_changed", @@ -426,6 +433,13 @@ gboolean show_desktop_applet_fill(MatePanelApplet* applet) sdd->size = mate_panel_applet_get_size(MATE_PANEL_APPLET(sdd->applet)); +#ifdef HAVE_X11 + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + { + sdd->wnck_handle = wnck_handle_new(WNCK_CLIENT_TYPE_PAGER); + } +#endif + g_signal_connect (sdd->applet, "realize", G_CALLBACK (show_desktop_applet_realized), sdd); diff --git a/applets/wncklet/window-list.c b/applets/wncklet/window-list.c index a87649b1..3af47e64 100644 --- a/applets/wncklet/window-list.c +++ b/applets/wncklet/window-list.c @@ -39,9 +39,7 @@ #define WINDOW_LIST_ICON "mate-panel-window-list" #define WINDOW_LIST_SCHEMA "org.mate.panel.applet.window-list" -#ifdef HAVE_WINDOW_PREVIEWS #define WINDOW_LIST_PREVIEW_SCHEMA "org.mate.panel.applet.window-list-previews" -#endif /* HAVE_WINDOW_PREVIEWS */ typedef enum { TASKLIST_NEVER_GROUP, @@ -52,12 +50,14 @@ typedef enum { typedef struct { GtkWidget* applet; GtkWidget* tasklist; -#ifdef HAVE_WINDOW_PREVIEWS GtkWidget* preview; +#ifdef HAVE_X11 + WnckHandle* wnck_handle; +#endif + gboolean show_window_thumbnails; gint thumbnail_size; -#endif gboolean include_all_workspaces; TasklistGroupingType grouping; @@ -71,19 +71,15 @@ typedef struct { gboolean needs_hints; #endif - GtkIconTheme* icon_theme; - /* Properties: */ GtkWidget* properties_dialog; GtkWidget* wayland_info_label; GtkWidget* show_current_radio; GtkWidget* show_all_radio; -#ifdef HAVE_WINDOW_PREVIEWS GtkWidget* window_thumbnail_box; GtkWidget* show_thumbnails_check; GtkWidget* thumbnail_size_label; GtkWidget* thumbnail_size_spin; -#endif GtkWidget* never_group_radio; GtkWidget* auto_group_radio; GtkWidget* always_group_radio; @@ -96,9 +92,7 @@ typedef struct { GtkWidget* window_list_content_box; GSettings* settings; -#ifdef HAVE_WINDOW_PREVIEWS GSettings* preview_settings; -#endif } TasklistData; static void call_system_monitor(GtkAction* action, TasklistData* tasklist); @@ -205,11 +199,6 @@ static void response_cb(GtkWidget* widget, int id, TasklistData* tasklist) } } -static void applet_realized(MatePanelApplet* applet, TasklistData* tasklist) -{ - tasklist->icon_theme = gtk_icon_theme_get_for_screen(gtk_widget_get_screen(tasklist->applet)); -} - static void applet_change_orient(MatePanelApplet* applet, MatePanelAppletOrient orient, TasklistData* tasklist) { GtkOrientation new_orient; @@ -249,7 +238,6 @@ static void applet_change_background(MatePanelApplet* applet, MatePanelAppletBac } #ifdef HAVE_X11 -#ifdef HAVE_WINDOW_PREVIEWS static cairo_surface_t* preview_window_thumbnail (WnckWindow *wnck_window, TasklistData *tasklist, @@ -480,7 +468,7 @@ static gboolean applet_enter_notify_event (WnckTasklist *tl, GList *wnck_windows /* Do not show preview if window is not visible nor in current workspace */ if (!wnck_window_is_visible_on_workspace (wnck_window, - wnck_screen_get_active_workspace (wnck_screen_get_default ()))) + wnck_screen_get_active_workspace (wncklet_get_screen (tasklist->wnck_handle, tasklist->applet)))) return FALSE; thumbnail = preview_window_thumbnail (wnck_window, tasklist, &thumbnail_width, &thumbnail_height, &thumbnail_scale); @@ -516,7 +504,6 @@ static gboolean applet_leave_notify_event (WnckTasklist *tl, GList *wnck_windows return FALSE; } -#endif /* HAVE_WINDOW_PREVIEWS */ #endif /* HAVE_X11 */ static void applet_change_pixel_size(MatePanelApplet* applet, gint size, TasklistData* tasklist) @@ -605,7 +592,6 @@ static void display_all_workspaces_changed(GSettings* settings, gchar* key, Task tasklist_properties_update_content_radio(tasklist); } -#ifdef HAVE_WINDOW_PREVIEWS static void tasklist_update_thumbnail_size_spin(TasklistData* tasklist) { GtkWidget* button; @@ -628,7 +614,6 @@ static void thumbnail_size_changed(GSettings *settings, gchar* key, TasklistData 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) { @@ -718,7 +703,6 @@ static void setup_gsettings(TasklistData* tasklist) 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, @@ -730,7 +714,6 @@ static void setup_gsettings(TasklistData* tasklist) "changed::thumbnail-window-size", G_CALLBACK (thumbnail_size_changed), tasklist); -#endif g_signal_connect (tasklist->settings, "changed::group-windows", G_CALLBACK (group_windows_changed), @@ -781,77 +764,26 @@ static void applet_size_allocate(GtkWidget *widget, GtkAllocation *allocation, T mate_panel_applet_set_size_hints(MATE_PANEL_APPLET(tasklist->applet), size_hints, len, 0); } -#ifdef HAVE_X11 -/* Currently only used on X11, but should work on Wayland as well when needed */ -static GdkPixbuf* icon_loader_func(const char* icon, int size, unsigned int flags, void* data) -{ - TasklistData* tasklist; - GdkPixbuf* retval; - char* icon_no_extension; - char* p; - - tasklist = data; - - if (icon == NULL || strcmp(icon, "") == 0) - return NULL; - - if (g_path_is_absolute(icon)) - { - if (g_file_test(icon, G_FILE_TEST_EXISTS)) - { - return gdk_pixbuf_new_from_file_at_size(icon, size, size, NULL); - } - else - { - char* basename; - - basename = g_path_get_basename(icon); - retval = icon_loader_func(basename, size, flags, data); - g_free(basename); - - return retval; - } - } - - /* This is needed because some .desktop files have an icon name *and* - * an extension as icon */ - icon_no_extension = g_strdup(icon); - p = strrchr(icon_no_extension, '.'); - - if (p && (strcmp(p, ".png") == 0 || strcmp(p, ".xpm") == 0 || strcmp(p, ".svg") == 0)) - { - *p = 0; - } - - retval = gtk_icon_theme_load_icon(tasklist->icon_theme, icon_no_extension, size, 0, NULL); - g_free(icon_no_extension); - - return retval; -} -#endif /* HAVE_X11 */ - gboolean window_list_applet_fill(MatePanelApplet* applet) { TasklistData* tasklist; GtkActionGroup* action_group; GtkCssProvider *provider; - GdkScreen *screen; tasklist = g_new0(TasklistData, 1); tasklist->applet = GTK_WIDGET(applet); provider = gtk_css_provider_new (); - screen = gdk_screen_get_default (); gtk_css_provider_load_from_data (provider, ".mate-panel-menu-bar button,\n" " #tasklist-button {\n" " padding: 0px;\n" " margin: 0px;\n }", -1, NULL); - gtk_style_context_add_provider_for_screen (screen, - GTK_STYLE_PROVIDER (provider), - GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (tasklist->applet), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (provider); 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); @@ -860,11 +792,9 @@ gboolean window_list_applet_fill(MatePanelApplet* applet) tasklist->include_all_workspaces = g_settings_get_boolean (tasklist->settings, "display-all-workspaces"); -#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"); -#endif tasklist->grouping = g_settings_get_enum (tasklist->settings, "group-windows"); @@ -896,18 +826,15 @@ gboolean window_list_applet_fill(MatePanelApplet* applet) #ifdef HAVE_X11 if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { - tasklist->tasklist = wnck_tasklist_new(); - - wnck_tasklist_set_icon_loader(WNCK_TASKLIST(tasklist->tasklist), icon_loader_func, tasklist, NULL); + tasklist->wnck_handle = wnck_handle_new(WNCK_CLIENT_TYPE_PAGER); + tasklist->tasklist = wnck_tasklist_new_with_handle(tasklist->wnck_handle); -#ifdef HAVE_WINDOW_PREVIEWS g_signal_connect (tasklist->tasklist, "task-enter-notify", G_CALLBACK (applet_enter_notify_event), tasklist); g_signal_connect (tasklist->tasklist, "task-leave-notify", G_CALLBACK (applet_leave_notify_event), tasklist); -#endif /* HAVE_WINDOW_PREVIEWS */ } else #endif /* HAVE_X11 */ @@ -935,9 +862,6 @@ gboolean window_list_applet_fill(MatePanelApplet* applet) gtk_container_add(GTK_CONTAINER(tasklist->applet), tasklist->tasklist); - g_signal_connect (tasklist->applet, "realize", - G_CALLBACK (applet_realized), - tasklist); g_signal_connect (tasklist->applet, "change-orient", G_CALLBACK (applet_change_orient), tasklist); @@ -1065,12 +989,10 @@ static void group_windows_toggled(GtkToggleButton* button, TasklistData* tasklis } } -#ifdef HAVE_WINDOW_PREVIEWS static void thumbnail_size_spin_changed(GtkSpinButton* button, TasklistData* tasklist) { g_settings_set_int(tasklist->preview_settings, "thumbnail-window-size", gtk_spin_button_get_value_as_int(button)); } -#endif static void move_minimized_toggled(GtkToggleButton* button, TasklistData* tasklist) { @@ -1121,9 +1043,7 @@ static void setup_dialog_wayland(TasklistData* tasklist) 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 */ } #endif /* HAVE_WAYLAND */ @@ -1143,7 +1063,6 @@ static void setup_dialog(GtkBuilder* builder, TasklistData* tasklist) setup_sensitivity(tasklist, builder, "never_group_radio", "auto_group_radio", "always_group_radio", "group-windows" /* key */); -#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"); @@ -1160,10 +1079,6 @@ static void setup_dialog(GtkBuilder* builder, TasklistData* tasklist) 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); -#else - gtk_widget_hide(WID("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"); @@ -1205,13 +1120,11 @@ static void setup_dialog(GtkBuilder* builder, TasklistData* tasklist) "active", G_SETTINGS_BIND_DEFAULT); -#ifdef HAVE_WINDOW_PREVIEWS /* change thumbnail size: */ tasklist_update_thumbnail_size_spin(tasklist); g_signal_connect (tasklist->thumbnail_size_spin, "value-changed", (GCallback) thumbnail_size_spin_changed, tasklist); -#endif /* move window when unminimizing: */ tasklist_update_unminimization_radio(tasklist); @@ -1269,11 +1182,9 @@ static void destroy_tasklist(GtkWidget* widget, TasklistData* tasklist) { g_signal_handlers_disconnect_by_data (G_OBJECT (tasklist->applet), tasklist); -#ifdef HAVE_WINDOW_PREVIEWS g_signal_handlers_disconnect_by_data (G_OBJECT (tasklist->tasklist), tasklist); g_signal_handlers_disconnect_by_data (tasklist->preview_settings, tasklist); g_object_unref(tasklist->preview_settings); -#endif g_signal_handlers_disconnect_by_data (tasklist->settings, tasklist); @@ -1282,9 +1193,11 @@ static void destroy_tasklist(GtkWidget* widget, TasklistData* tasklist) if (tasklist->properties_dialog) gtk_widget_destroy(tasklist->properties_dialog); -#ifdef HAVE_WINDOW_PREVIEWS if (tasklist->preview) gtk_widget_destroy(tasklist->preview); + +#ifdef HAVE_X11 + g_clear_object(&tasklist->wnck_handle); #endif g_free(tasklist); diff --git a/applets/wncklet/window-menu.c b/applets/wncklet/window-menu.c index 4b4e48dc..e595dfdf 100644 --- a/applets/wncklet/window-menu.c +++ b/applets/wncklet/window-menu.c @@ -53,6 +53,9 @@ typedef struct { GtkWidget* applet; GtkWidget* selector; +#ifdef HAVE_X11 + WnckHandle* wnck_handle; +#endif int size; MatePanelAppletOrient orient; } WindowMenu; @@ -119,6 +122,9 @@ static const GtkActionEntry window_menu_actions[] = { static void window_menu_destroy(GtkWidget* widget, WindowMenu* window_menu) { +#ifdef HAVE_X11 + g_clear_object(&window_menu->wnck_handle); +#endif g_free(window_menu); } @@ -252,7 +258,8 @@ gboolean window_menu_applet_fill(MatePanelApplet* applet) #ifdef HAVE_X11 if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { - window_menu->selector = wnck_selector_new(); + window_menu->wnck_handle = wnck_handle_new(WNCK_CLIENT_TYPE_PAGER); + window_menu->selector = wnck_selector_new_with_handle(window_menu->wnck_handle); } else #endif /* HAVE_X11 */ diff --git a/applets/wncklet/wncklet.c b/applets/wncklet/wncklet.c index 3b185910..bede4705 100644 --- a/applets/wncklet/wncklet.c +++ b/applets/wncklet/wncklet.c @@ -96,18 +96,19 @@ void wncklet_display_help(GtkWidget* widget, const char* doc_id, const char* lin } #ifdef HAVE_X11 -WnckScreen* wncklet_get_screen(GtkWidget* applet) +WnckScreen* wncklet_get_screen(WnckHandle* handle, GtkWidget* applet) { + g_return_val_if_fail (WNCK_IS_HANDLE (handle), NULL); g_return_val_if_fail (GDK_IS_X11_DISPLAY (gdk_display_get_default ()), NULL); int screen_num; if (!gtk_widget_has_screen(applet)) - return wnck_screen_get_default(); + return wnck_handle_get_default_screen(handle); screen_num = gdk_x11_screen_get_screen_number(gtk_widget_get_screen(applet)); - return wnck_screen_get(screen_num); + return wnck_handle_get_screen(handle, screen_num); } #endif /* HAVE_X11 */ @@ -124,18 +125,6 @@ static gboolean wncklet_factory(MatePanelApplet* applet, const char* iid, gpoint { gboolean retval = FALSE; -#ifdef HAVE_X11 - if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) - { - static gboolean type_registered = FALSE; - if (!type_registered) - { - wnck_set_client_type(WNCK_CLIENT_TYPE_PAGER); - type_registered = TRUE; - } - } -#endif /* HAVE_X11 */ - if (!strcmp(iid, "WindowMenuApplet")) retval = window_menu_applet_fill(applet); else if (!strcmp(iid, "WorkspaceSwitcherApplet") || !strcmp(iid, "PagerApplet")) diff --git a/applets/wncklet/wncklet.h b/applets/wncklet/wncklet.h index 145cbce3..4b1dccea 100644 --- a/applets/wncklet/wncklet.h +++ b/applets/wncklet/wncklet.h @@ -28,17 +28,18 @@ #include <gtk/gtk.h> #include <mate-panel-applet.h> +#define WNCK_I_KNOW_THIS_IS_UNSTABLE +#include <libwnck/libwnck.h> + #define WNCKLET_RESOURCE_PATH "/org/mate/panel/applet/wncklet/" #ifdef __cplusplus extern "C" { #endif -typedef struct _WnckScreen WnckScreen; - void wncklet_display_help(GtkWidget* widget, const char* doc_id, const char* link_id, const char* icon_name); -WnckScreen* wncklet_get_screen(GtkWidget* applet); +WnckScreen* wncklet_get_screen(WnckHandle* handle, GtkWidget* applet); void wncklet_connect_while_alive(gpointer object, const char* signal, GCallback func, gpointer func_data, gpointer alive_object); diff --git a/applets/wncklet/workspace-switcher.c b/applets/wncklet/workspace-switcher.c index e3fda355..cba0ecbd 100644 --- a/applets/wncklet/workspace-switcher.c +++ b/applets/wncklet/workspace-switcher.c @@ -215,6 +215,9 @@ typedef struct { GtkWidget* pager_container; GtkWidget* pager; +#ifdef HAVE_X11 + WnckHandle* wnck_handle; +#endif WnckScreen* screen; PagerWM wm; @@ -399,7 +402,7 @@ static void applet_realized(MatePanelApplet* applet, PagerData* pager) #ifdef HAVE_X11 if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { - pager->screen = wncklet_get_screen(GTK_WIDGET(applet)); + pager->screen = wncklet_get_screen(pager->wnck_handle, GTK_WIDGET(applet)); wncklet_connect_while_alive(pager->screen, "window_manager_changed", G_CALLBACK(window_manager_changed), pager, pager->applet); } #endif /* HAVE_X11 */ @@ -772,7 +775,8 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet) #ifdef HAVE_X11 if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { - pager->pager = wnck_pager_new(); + pager->wnck_handle = wnck_handle_new(WNCK_CLIENT_TYPE_PAGER); + pager->pager = wnck_pager_new_with_handle(pager->wnck_handle); wnck_pager_set_shadow_type(WNCK_PAGER(pager->pager), GTK_SHADOW_IN); } else @@ -1288,5 +1292,10 @@ static void destroy_pager(GtkWidget* widget, PagerData* pager) if (pager->properties_dialog) gtk_widget_destroy(pager->properties_dialog); + +#ifdef HAVE_X11 + g_clear_object(&pager->wnck_handle); +#endif + g_free(pager); } diff --git a/configure.ac b/configure.ac index acb6c816..bcd81b81 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([mate-panel], [1.28.4], [https://github.com/mate-desktop/mate-panel/issues], +AC_INIT([mate-panel], [1.28.7], [https://github.com/mate-desktop/mate-panel/issues], [mate-panel], [https://mate-desktop.org]) AC_CONFIG_HEADERS(config.h) AM_INIT_AUTOMAKE([1.9 no-dist-gzip dist-xz tar-ustar -Wno-portability check-news]) @@ -60,9 +60,8 @@ GLIB_REQUIRED=2.50.0 LIBMATE_MENU_REQUIRED=1.21.0 CAIRO_REQUIRED=1.0.0 DCONF_REQUIRED=0.13.4 -GTK_REQUIRED=3.22.0 -LIBWNCK_REQUIRED=3.4.6 -LIBWNCK_PREVIEWS_OPTIONAL=3.32.0 +GTK_REQUIRED=3.24.0 +LIBWNCK_REQUIRED=43.0 WEATHER_REQUIRED=1.17.0 dnl pkg-config dependency checks @@ -88,16 +87,9 @@ PKG_CHECK_MODULES(NOTIFICATION_AREA, gtk+-3.0 >= $GTK_REQUIRED mate-desktop-2.0 AC_SUBST(NOTIFICATION_AREA_CFLAGS) AC_SUBST(NOTIFICATION_AREA_LIBS) -# Check if we have a version of libwnck that allows for window previews -PKG_CHECK_MODULES(WNCKLET, gtk+-3.0 >= $GTK_REQUIRED libwnck-3.0 >= $LIBWNCK_PREVIEWS_OPTIONAL mate-desktop-2.0 >= $LIBMATE_DESKTOP_REQUIRED, have_window_previews=yes, [ - PKG_CHECK_MODULES(WNCKLET, gtk+-3.0 >= $GTK_REQUIRED libwnck-3.0 >= $LIBWNCK_REQUIRED mate-desktop-2.0 >= $LIBMATE_DESKTOP_REQUIRED, have_window_previews=no) -]) +PKG_CHECK_MODULES(WNCKLET, gtk+-3.0 >= $GTK_REQUIRED libwnck-3.0 >= $LIBWNCK_REQUIRED mate-desktop-2.0 >= $LIBMATE_DESKTOP_REQUIRED) AC_SUBST(WNCKLET_CFLAGS) AC_SUBST(WNCKLET_LIBS) -AM_CONDITIONAL(HAVE_WINDOW_PREVIEWS, [test "x$have_window_previews" = "xyes"]) -if test "x$have_window_previews" = "xyes"; then - AC_DEFINE([HAVE_WINDOW_PREVIEWS], 1, [Defined when using a version of libwnck that provides window-list previews]) -fi AC_CHECK_HEADERS(langinfo.h) AC_CHECK_FUNCS(nl_langinfo) diff --git a/mate-panel/panel-action-button.c b/mate-panel/panel-action-button.c index 6fad288f..25759d58 100644 --- a/mate-panel/panel-action-button.c +++ b/mate-panel/panel-action-button.c @@ -343,7 +343,7 @@ static void panel_action_shutdown (GtkWidget *widget) { #ifdef HAVE_WAYLAND - GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default ()); + GdkDisplay *display = gdk_display_get_default (); if (GDK_IS_WAYLAND_DISPLAY (display)) { GtkWidget *dialog, *hbox, *buttonbox, *shutdown_btn, *label; @@ -424,7 +424,7 @@ panel_action_shutdown_reboot_is_disabled (void) if (panel_lockdown_get_disable_log_out()) return TRUE; #ifdef HAVE_WAYLAND - GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default()); + GdkDisplay *display = gdk_display_get_default (); if (!(panel_lockdown_get_disable_log_out()) && (GDK_IS_WAYLAND_DISPLAY (display))) return FALSE; #endif diff --git a/mate-panel/panel-applet-frame.c b/mate-panel/panel-applet-frame.c index 2b0e4b7f..cadd81aa 100644 --- a/mate-panel/panel-applet-frame.c +++ b/mate-panel/panel-applet-frame.c @@ -962,8 +962,8 @@ mate_panel_applet_frame_loading_failed (const char *iid, _("Do you want to delete the applet " "from your configuration?")); - gtk_dialog_add_button (GTK_DIALOG (dialog), - PANEL_STOCK_DONT_DELETE, LOADING_FAILED_RESPONSE_DONT_DELETE); + panel_dialog_add_button (GTK_DIALOG (dialog), + _("_Don't Delete"), "gtk-cancel", LOADING_FAILED_RESPONSE_DONT_DELETE); panel_dialog_add_button (GTK_DIALOG (dialog), _("_Delete"), "edit-delete", LOADING_FAILED_RESPONSE_DELETE); diff --git a/mate-panel/panel-force-quit.c b/mate-panel/panel-force-quit.c index 13b0139f..50a3be7d 100644 --- a/mate-panel/panel-force-quit.c +++ b/mate-panel/panel-force-quit.c @@ -249,9 +249,9 @@ kill_window_question (gpointer window) _("_Cancel"), "process-stop", GTK_RESPONSE_CANCEL); - gtk_dialog_add_button (GTK_DIALOG (dialog), - PANEL_STOCK_FORCE_QUIT, - GTK_RESPONSE_ACCEPT); + panel_dialog_add_button (GTK_DIALOG (dialog), + _("_Force Quit"), "process-stop", + GTK_RESPONSE_ACCEPT); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL); diff --git a/mate-panel/panel-recent.c b/mate-panel/panel-recent.c index 2ed4715e..5fe25ddb 100644 --- a/mate-panel/panel-recent.c +++ b/mate-panel/panel-recent.c @@ -156,9 +156,9 @@ recent_documents_clear_cb (GtkMenuItem *menuitem, _("_Cancel"), "process-stop", GTK_RESPONSE_CANCEL); - gtk_dialog_add_button (GTK_DIALOG (clear_recent_dialog), - PANEL_STOCK_CLEAR, - GTK_RESPONSE_ACCEPT); + panel_dialog_add_button (GTK_DIALOG (clear_recent_dialog), + _("_Clear"), "edit-clear", + GTK_RESPONSE_ACCEPT); gtk_container_set_border_width (GTK_CONTAINER (clear_recent_dialog), 6); diff --git a/mate-panel/panel-stock-icons.c b/mate-panel/panel-stock-icons.c index 8e124709..bab01a33 100644 --- a/mate-panel/panel-stock-icons.c +++ b/mate-panel/panel-stock-icons.c @@ -54,83 +54,10 @@ GtkIconSize panel_add_to_icon_get_size(void) return panel_add_to_icon_size; } -typedef struct { - char *stock_id; - char *icon; -} PanelStockIcon; - -static PanelStockIcon stock_icons [] = { - { PANEL_STOCK_FORCE_QUIT, PANEL_ICON_FORCE_QUIT } -}; - -static void -panel_init_stock_icons (GtkIconFactory *factory) -{ - GtkIconSource *source; - gsize i; - - source = gtk_icon_source_new (); - - for (i = 0; i < G_N_ELEMENTS (stock_icons); i++) { - GtkIconSet *set; - - gtk_icon_source_set_icon_name (source, stock_icons [i].icon); - - set = gtk_icon_set_new (); - gtk_icon_set_add_source (set, source); - - gtk_icon_factory_add (factory, stock_icons [i].stock_id, set); - gtk_icon_set_unref (set); - } - - gtk_icon_source_free (source); - -} - -typedef struct { - char *stock_id; - char *stock_icon_id; - char *label; -} PanelStockItem; - -static PanelStockItem stock_items [] = { - { PANEL_STOCK_EXECUTE, "gtk-execute", N_("_Run") }, - { PANEL_STOCK_FORCE_QUIT, PANEL_STOCK_FORCE_QUIT, N_("_Force quit") }, - { PANEL_STOCK_CLEAR, "gtk-clear", N_("C_lear") }, - { PANEL_STOCK_DONT_DELETE, "gtk-cancel", N_("D_on't Delete") } -}; - -static void -panel_init_stock_items (GtkIconFactory *factory) -{ - GtkStockItem *items; - gsize n_items; - gsize i; - - n_items = G_N_ELEMENTS (stock_items); - items = g_new (GtkStockItem, n_items); - - for (i = 0; i < n_items; i++) { - GtkIconSet *icon_set; - - items [i].stock_id = g_strdup (stock_items [i].stock_id); - items [i].label = g_strdup (stock_items [i].label); - items [i].modifier = 0; - items [i].keyval = 0; - items [i].translation_domain = g_strdup (GETTEXT_PACKAGE); - - /* FIXME: does this take into account the theme? */ - icon_set = gtk_icon_factory_lookup_default (stock_items [i].stock_icon_id); - gtk_icon_factory_add (factory, stock_items [i].stock_id, icon_set); - } - - gtk_stock_add_static (items, n_items); -} void panel_init_stock_icons_and_items (void) { - GtkIconFactory *factory; GSettings *settings; gint icon_size; @@ -163,12 +90,6 @@ panel_init_stock_icons_and_items (void) PANEL_ADD_TO_DEFAULT_ICON_SIZE, PANEL_ADD_TO_DEFAULT_ICON_SIZE); - factory = gtk_icon_factory_new (); - gtk_icon_factory_add_default (factory); - - panel_init_stock_icons (factory); - panel_init_stock_items (factory); - g_object_unref (factory); g_object_unref (settings); } diff --git a/mate-panel/panel-stock-icons.h b/mate-panel/panel-stock-icons.h index a43ca699..eeb536e8 100644 --- a/mate-panel/panel-stock-icons.h +++ b/mate-panel/panel-stock-icons.h @@ -41,18 +41,6 @@ extern "C" { #define PANEL_ADD_TO_DEFAULT_ICON_SIZE 32 -/* stock icons */ -#define PANEL_STOCK_FORCE_QUIT "mate-panel-force-quit" - -/* stock items - no point in theme the icons one these, - * they use stock gtk icons and just modify the text - * for the stock item. - */ -#define PANEL_STOCK_EXECUTE "panel-execute" -#define PANEL_STOCK_CLEAR "panel-clear" -#define PANEL_STOCK_DONT_DELETE "panel-dont-delete" -/* FIXME: put a more representative icon here */ -#define PANEL_STOCK_DEFAULT_ICON "application-default-icon" void panel_init_stock_icons_and_items (void); GtkIconSize panel_menu_icon_get_size (void); diff --git a/mate-panel/panel-toplevel.c b/mate-panel/panel-toplevel.c index 2eb6e77a..9d7e89d2 100644 --- a/mate-panel/panel-toplevel.c +++ b/mate-panel/panel-toplevel.c @@ -857,7 +857,7 @@ static gboolean panel_toplevel_warp_pointer_increment(PanelToplevel* toplevel, i GdkDevice *device; int new_x, new_y; - screen = gtk_window_get_screen (GTK_WINDOW (toplevel)); + screen = gtk_widget_get_screen (GTK_WIDGET (toplevel)); g_return_val_if_fail (GDK_IS_X11_SCREEN (screen), FALSE); root_window = gdk_screen_get_root_window (screen); device = gdk_seat_get_pointer (gdk_display_get_default_seat (gtk_widget_get_display (GTK_WIDGET(root_window)))); |
