summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS19
-rw-r--r--applets/clock/clock.c15
-rw-r--r--applets/fish/fish.c4
-rw-r--r--applets/wncklet/Makefile.am6
-rw-r--r--applets/wncklet/showdesktop.c16
-rw-r--r--applets/wncklet/window-list.c113
-rw-r--r--applets/wncklet/window-menu.c9
-rw-r--r--applets/wncklet/wncklet.c19
-rw-r--r--applets/wncklet/wncklet.h7
-rw-r--r--applets/wncklet/workspace-switcher.c13
-rw-r--r--configure.ac16
-rw-r--r--mate-panel/panel-action-button.c4
-rw-r--r--mate-panel/panel-applet-frame.c4
-rw-r--r--mate-panel/panel-force-quit.c6
-rw-r--r--mate-panel/panel-recent.c6
-rw-r--r--mate-panel/panel-stock-icons.c79
-rw-r--r--mate-panel/panel-stock-icons.h12
-rw-r--r--mate-panel/panel-toplevel.c2
18 files changed, 103 insertions, 247 deletions
diff --git a/NEWS b/NEWS
index e53d7493..81d8ed8b 100644
--- a/NEWS
+++ b/NEWS
@@ -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))));