From 0ebfdc972e7c54d709fb596c35064312bebcf0ab Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:34:10 -0300 Subject: [PATCH 1/8] Bump gtk to 3.22 --- configure.ac.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configure.ac.in b/configure.ac.in index 239cba5..73d646d 100644 --- a/configure.ac.in +++ b/configure.ac.in @@ -127,7 +127,7 @@ dnl *********************************** dnl *** Check for required packages *** dnl *********************************** XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.42.0]) -XDT_CHECK_PACKAGE([GTK3], [gtk+-3.0], [3.18.0]) +XDT_CHECK_PACKAGE([GTK3], [gtk+-3.0], [3.22.0]) XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.12.0]) dnl *********************************************************** @@ -141,8 +141,8 @@ AM_CONDITIONAL([ENABLE_GTK2_LIBRARY], [test "x$GTK2_FOUND" = "xyes"]) AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, GLIB_VERSION_2_42, [Ignore post 2.42 deprecations]) AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, GLIB_VERSION_2_42, [Prevent post 2.42 APIs]) -AC_DEFINE(GDK_VERSION_MIN_REQUIRED, GDK_VERSION_3_18, [Ignore post 3.18 deprecations]) -AC_DEFINE(GDK_VERSION_MAX_ALLOWED, GDK_VERSION_3_18, [Prevent post 3.18 APIs]) +AC_DEFINE(GDK_VERSION_MIN_REQUIRED, GDK_VERSION_3_22, [Ignore post 3.22 deprecations]) +AC_DEFINE(GDK_VERSION_MAX_ALLOWED, GDK_VERSION_3_22, [Prevent post 3.22 APIs]) dnl *************************************** dnl *** Check for gobject-introspection *** -- 2.22.0 From 07b534c9534df33a9c29f8cd7cd6f68d8fd1f5d4 Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:35:10 -0300 Subject: [PATCH 2/8] Ignore what is hard to replace --- glade/libxfce4ui-glade.c | 10 +++++++++- libxfce4ui/xfce-gtk-extensions.c | 2 ++ libxfce4ui/xfce-sm-client.c | 3 +++ libxfce4ui/xfce-spawn.c | 5 +++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/glade/libxfce4ui-glade.c b/glade/libxfce4ui-glade.c index 2c98909..4a64b14 100644 --- a/glade/libxfce4ui-glade.c +++ b/glade/libxfce4ui-glade.c @@ -70,9 +70,12 @@ glade_xfce_titled_dialog_post_create (GladeWidgetAdaptor *adaptor, glade_widget_remove_property (vbox, "border-width"); /* create the action area */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /* TODO: Move exo_gtk_dialog_get_action_area to libxfce4ui */ action_area = glade_widget_adaptor_create_internal (vbox, G_OBJECT (gtk_dialog_get_action_area (dialog)), "action_area", "dialog", FALSE, reason); +G_GNUC_END_IGNORE_DEPRECATIONS glade_widget_remove_property (action_area, "border-width"); glade_widget_remove_property (action_area, "spacing"); @@ -102,7 +105,12 @@ glade_xfce_titled_dialog_get_internal_child (GladeWidgetAdaptor *adaptor, if (strcmp ("vbox", name) == 0) child = gtk_dialog_get_content_area (dialog); else if (strcmp ("action_area", name) == 0) - child = gtk_dialog_get_action_area (dialog); + { +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /* TODO: Move exo_gtk_dialog_get_action_area to libxfce4ui */ + child = gtk_dialog_get_action_area (dialog); +G_GNUC_END_IGNORE_DEPRECATIONS + } return child; } diff --git a/libxfce4ui/xfce-gtk-extensions.c b/libxfce4ui/xfce-gtk-extensions.c index daec0cb..fe164f9 100644 --- a/libxfce4ui/xfce-gtk-extensions.c +++ b/libxfce4ui/xfce-gtk-extensions.c @@ -275,6 +275,7 @@ xfce_gtk_menu_popup_until_mapped (GtkMenu *menu, while ((i++ < 2500) && (!gtk_widget_get_mapped (GTK_WIDGET (menu)))) { +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_menu_popup (GTK_MENU (menu), parent_menu_shell, parent_menu_item, @@ -282,6 +283,7 @@ xfce_gtk_menu_popup_until_mapped (GtkMenu *menu, data, button, activate_time); +G_GNUC_END_IGNORE_DEPRECATIONS g_usleep (100); } diff --git a/libxfce4ui/xfce-sm-client.c b/libxfce4ui/xfce-sm-client.c index 8b1d503..aae05ac 100644 --- a/libxfce4ui/xfce-sm-client.c +++ b/libxfce4ui/xfce-sm-client.c @@ -715,7 +715,10 @@ xfce_sm_client_parse_argv(XfceSMClient *sm_client) for(i = 0; i < argc; ++i) restart_command[i] = argv[i]; restart_command[i++] = "--display"; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /* TODO: Move xfwm_make_display_name to libxfce4ui */ restart_command[i++] = display_name = gdk_screen_make_display_name(gscreen); +G_GNUC_END_IGNORE_DEPRECATIONS } else restart_command = argv; diff --git a/libxfce4ui/xfce-spawn.c b/libxfce4ui/xfce-spawn.c index b4946d3..77f55e9 100644 --- a/libxfce4ui/xfce-spawn.c +++ b/libxfce4ui/xfce-spawn.c @@ -365,7 +365,10 @@ xfce_spawn_on_screen_with_child_watch (GdkScreen *screen, } /* add the real display name for the screen */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /* TODO: Move xfwm_make_display_name to libxfce4ui */ display_name = gdk_screen_make_display_name (screen); +G_GNUC_END_IGNORE_DEPRECATIONS cenvp[n_cenvp++] = g_strconcat ("DISPLAY=", display_name, NULL); g_free (display_name); @@ -373,9 +376,11 @@ xfce_spawn_on_screen_with_child_watch (GdkScreen *screen, /* initialize the sn launcher context */ if (G_LIKELY (startup_notify)) { +G_GNUC_BEGIN_IGNORE_DEPRECATIONS sn_display = sn_display_new (GDK_SCREEN_XDISPLAY (screen), (SnDisplayErrorTrapPush) (void (*)(void)) gdk_error_trap_push, (SnDisplayErrorTrapPop) (void (*)(void)) gdk_error_trap_pop); +G_GNUC_END_IGNORE_DEPRECATIONS if (G_LIKELY (sn_display != NULL)) { -- 2.22.0 From e439106cbbb122d5ef8d80d8bb2b165b4ee3aa3b Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:37:15 -0300 Subject: [PATCH 3/8] Replace gdk_error_trap_* and gdk_flush --- libxfce4kbd-private/xfce-shortcuts-grabber.c | 22 +++++++++++++++----- libxfce4ui/xfce-spawn.c | 8 ++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c index 361535b..57eaed0 100644 --- a/libxfce4kbd-private/xfce-shortcuts-grabber.c +++ b/libxfce4kbd-private/xfce-shortcuts-grabber.c @@ -320,12 +320,12 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, #if GTK_CHECK_VERSION (3, 0, 0) /* Retrieve the root window of the screen */ root_window = GDK_WINDOW_XID (gdk_screen_get_root_window (gdk_display_get_screen (display, j))); + gdk_x11_display_error_trap_push (display); #else /* Retrieve the root window of the screen */ root_window = GDK_WINDOW_XWINDOW (gdk_screen_get_root_window (gdk_display_get_screen (display, j))); -#endif - gdk_error_trap_push (); +#endif for (k = 0; k < G_N_ELEMENTS (mod_masks); k++) { @@ -345,9 +345,15 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, root_window); } +#if GTK_CHECK_VERSION (3, 0, 0) + gdk_display_flush (display); + + if (gdk_x11_display_error_trap_pop (display)) +#else gdk_flush (); if (gdk_error_trap_pop ()) +#endif { if (grab) TRACE ("Failed to grab"); @@ -404,6 +410,7 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, struct EventKeyFindContext context; GdkKeymap *keymap; GdkModifierType consumed, modifiers; + GdkDisplay *display; XEvent *xevent; guint keyval, mod_mask; gchar *raw_shortcut_name; @@ -421,8 +428,13 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, timestamp = xevent->xkey.time; /* Get the keyboard state */ + display = gdk_display_get_default (); +#if GTK_CHECK_VERSION (3, 0, 0) + gdk_x11_display_error_trap_push (display); +#else gdk_error_trap_push (); keymap = gdk_keymap_get_default (); +#endif mod_mask = gtk_accelerator_get_default_mod_mask (); modifiers = xevent->xkey.state; @@ -483,11 +495,11 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, g_signal_emit_by_name (grabber, "shortcut-activated", context.result, timestamp); - gdk_flush (); - #if GTK_CHECK_VERSION (3, 0, 0) - gdk_error_trap_pop_ignored (); + gdk_display_flush (display); + gdk_x11_display_error_trap_pop_ignored (display); #else + gdk_flush (); gdk_error_trap_pop (); #endif diff --git a/libxfce4ui/xfce-spawn.c b/libxfce4ui/xfce-spawn.c index 77f55e9..03bc69c 100644 --- a/libxfce4ui/xfce-spawn.c +++ b/libxfce4ui/xfce-spawn.c @@ -214,7 +214,13 @@ xfce_spawn_get_active_workspace_number (GdkScreen *screen) gint format_ret; gint ws_num = 0; +#if GTK_CHECK_VERSION (3, 0, 0) + GdkDisplay *display; + display = gdk_screen_get_display (screen); + gdk_x11_display_error_trap_push (display); +#else gdk_error_trap_push (); +#endif root = gdk_screen_get_root_window (screen); @@ -250,7 +256,7 @@ xfce_spawn_get_active_workspace_number (GdkScreen *screen) } #if GTK_CHECK_VERSION (3, 0, 0) - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); #else if (gdk_error_trap_pop () != 0) return 0; -- 2.22.0 From 1f0e339039a54d1d7ec6d64c1d7821857192323d Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:45:29 -0300 Subject: [PATCH 4/8] Replace deprecated device functions --- libxfce4kbd-private/xfce-shortcut-dialog.c | 34 +++++----------------- libxfce4ui/xfce-gdk-extensions.c | 9 +----- 2 files changed, 8 insertions(+), 35 deletions(-) diff --git a/libxfce4kbd-private/xfce-shortcut-dialog.c b/libxfce4kbd-private/xfce-shortcut-dialog.c index 82c3d5c..b01354e 100644 --- a/libxfce4kbd-private/xfce-shortcut-dialog.c +++ b/libxfce4kbd-private/xfce-shortcut-dialog.c @@ -340,9 +340,7 @@ xfce_shortcut_dialog_run (XfceShortcutDialog *dialog, { #if GTK_CHECK_VERSION (3, 0, 0) GdkDisplay *display; - GdkDevice *device; - GdkDeviceManager *device_manager; - GList *devices, *li; + GdkSeat *seat; gboolean succeed = FALSE; #endif gint response = GTK_RESPONSE_CANCEL; @@ -354,22 +352,13 @@ xfce_shortcut_dialog_run (XfceShortcutDialog *dialog, #if GTK_CHECK_VERSION (3, 0, 0) display = gtk_widget_get_display (GTK_WIDGET (dialog)); - device_manager = gdk_display_get_device_manager (display); - devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER); + seat = gdk_display_get_default_seat (display); - for (li = devices; li != NULL; li =li->next) + if (gdk_seat_grab (seat, + gdk_screen_get_root_window (gdk_display_get_default_screen (display)), + GDK_SEAT_CAPABILITY_KEYBOARD, TRUE, NULL, NULL, NULL, NULL) == GDK_GRAB_SUCCESS) { - device = li->data; - if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - continue; - - if (gdk_device_grab (device, gdk_screen_get_root_window (gdk_display_get_default_screen (display)), - GDK_OWNERSHIP_WINDOW, TRUE, - GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, - NULL, GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS) - { - succeed = TRUE; - } + succeed = TRUE; } /* Take control on the keyboard */ @@ -391,12 +380,7 @@ xfce_shortcut_dialog_run (XfceShortcutDialog *dialog, #if GTK_CHECK_VERSION (3, 0, 0) /* Release keyboard */ - for (li = devices; li != NULL; li =li->next) - { - device = li->data; - if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) - gdk_device_ungrab (device, GDK_CURRENT_TIME); - } + gdk_seat_ungrab (seat); #else /* Release keyboard */ gdk_keyboard_ungrab (GDK_CURRENT_TIME); @@ -407,10 +391,6 @@ xfce_shortcut_dialog_run (XfceShortcutDialog *dialog, g_warning (_("Could not grab the keyboard.")); } -#if GTK_CHECK_VERSION (3, 0, 0) - g_list_free (devices); -#endif - /* Return the response ID */ return response; } diff --git a/libxfce4ui/xfce-gdk-extensions.c b/libxfce4ui/xfce-gdk-extensions.c index cd4e451..ccf067f 100644 --- a/libxfce4ui/xfce-gdk-extensions.c +++ b/libxfce4ui/xfce-gdk-extensions.c @@ -63,19 +63,12 @@ xfce_gdk_screen_get_active (gint *monitor_return) gint rootx, rooty; GdkScreen *screen; -#if 0 /* GTK_CHECK_VERSION (3, 20, 0) */ +#if GTK_CHECK_VERSION (3, 22, 0) GdkSeat *seat; display = gdk_display_get_default (); seat = gdk_display_get_default_seat (display); gdk_device_get_position (gdk_seat_get_pointer (seat), &screen, &rootx, &rooty); -#elif GTK_CHECK_VERSION (3, 0, 0) - GdkDeviceManager *manager; - - display = gdk_display_get_default (); - manager = gdk_display_get_device_manager (display); - gdk_device_get_position (gdk_device_manager_get_client_pointer (manager), - &screen, &rootx, &rooty); #else display = gdk_display_get_default (); gdk_display_get_pointer (display, &screen, &rootx, &rooty, NULL); -- 2.22.0 From 2d3c2140420c1c4de3b736e320f97a54bddfecde Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:48:38 -0300 Subject: [PATCH 5/8] Replace gdk_keymap_get_default --- libxfce4kbd-private/xfce-shortcut-dialog.c | 4 +++- libxfce4kbd-private/xfce-shortcuts-grabber.c | 16 ++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libxfce4kbd-private/xfce-shortcut-dialog.c b/libxfce4kbd-private/xfce-shortcut-dialog.c index b01354e..c3e9630 100644 --- a/libxfce4kbd-private/xfce-shortcut-dialog.c +++ b/libxfce4kbd-private/xfce-shortcut-dialog.c @@ -401,6 +401,7 @@ static gboolean xfce_shortcut_dialog_key_pressed (XfceShortcutDialog *dialog, GdkEventKey *event) { + GdkDisplay *display; GdkKeymap *keymap; GdkModifierType consumed, modifiers; guint keyval, mod_mask; @@ -412,7 +413,8 @@ xfce_shortcut_dialog_key_pressed (XfceShortcutDialog *dialog, /* Get the keyboard state */ mod_mask = gtk_accelerator_get_default_mod_mask (); - keymap = gdk_keymap_get_default (); + display = gdk_display_get_default (); + keymap = gdk_keymap_get_for_display (display); modifiers = event->state; gdk_keymap_translate_keyboard_state (keymap, event->hardware_keycode, diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c index 57eaed0..04e1a34 100644 --- a/libxfce4kbd-private/xfce-shortcuts-grabber.c +++ b/libxfce4kbd-private/xfce-shortcuts-grabber.c @@ -110,6 +110,9 @@ xfce_shortcuts_grabber_class_init (XfceShortcutsGrabberClass *klass) static void xfce_shortcuts_grabber_init (XfceShortcutsGrabber *grabber) { + GdkDisplay *display; + GdkKeymap *keymap; + grabber->priv = XFCE_SHORTCUTS_GRABBER_GET_PRIVATE (grabber); grabber->priv->keys = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); @@ -118,7 +121,9 @@ xfce_shortcuts_grabber_init (XfceShortcutsGrabber *grabber) * mapped because the modmap is not updated. The following function * updates it. */ - (void) gdk_keymap_have_bidi_layouts (gdk_keymap_get_default ()); + display = gdk_display_get_default (); + keymap = gdk_keymap_get_for_display (display); + (void) gdk_keymap_have_bidi_layouts (keymap); } @@ -131,12 +136,11 @@ xfce_shortcuts_grabber_constructed (GObject *object) XfceShortcutsGrabber *grabber = XFCE_SHORTCUTS_GRABBER (object); - keymap = gdk_keymap_get_default (); + display = gdk_display_get_default (); + keymap = gdk_keymap_get_for_display (display); g_signal_connect (keymap, "keys-changed", G_CALLBACK (xfce_shortcuts_grabber_keys_changed), grabber); - display = gdk_display_get_default (); - /* Flush events before adding the event filter */ XAllowEvents (GDK_DISPLAY_XDISPLAY (display), AsyncBoth, CurrentTime); @@ -242,7 +246,7 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, #else screens = gdk_display_get_n_screens (display); #endif - keymap = gdk_keymap_get_default (); + keymap = gdk_keymap_get_for_display (display); /* Map virtual modifiers to non-virtual modifiers */ modifiers = key->modifiers; @@ -433,8 +437,8 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, gdk_x11_display_error_trap_push (display); #else gdk_error_trap_push (); - keymap = gdk_keymap_get_default (); #endif + keymap = gdk_keymap_get_for_display (display); mod_mask = gtk_accelerator_get_default_mod_mask (); modifiers = xevent->xkey.state; -- 2.22.0 From 31e0cde31d45f7950f43d97b20c34eff527d648e Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:49:25 -0300 Subject: [PATCH 6/8] Replace gdk_display_get_screen --- libxfce4kbd-private/xfce-shortcuts-grabber.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c index 04e1a34..e085cdb 100644 --- a/libxfce4kbd-private/xfce-shortcuts-grabber.c +++ b/libxfce4kbd-private/xfce-shortcuts-grabber.c @@ -323,7 +323,7 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, #if GTK_CHECK_VERSION (3, 0, 0) /* Retrieve the root window of the screen */ - root_window = GDK_WINDOW_XID (gdk_screen_get_root_window (gdk_display_get_screen (display, j))); + root_window = GDK_WINDOW_XID (gdk_screen_get_root_window (gdk_display_get_default_screen (display))); gdk_x11_display_error_trap_push (display); #else /* Retrieve the root window of the screen */ -- 2.22.0 From 99ab34436b7bc8d4e6f30e712a95e897a16be5d3 Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:49:51 -0300 Subject: [PATCH 7/8] Replace gtk_show_uri --- libxfce4ui/xfce-dialogs.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libxfce4ui/xfce-dialogs.c b/libxfce4ui/xfce-dialogs.c index f264ef1..31920df 100644 --- a/libxfce4ui/xfce-dialogs.c +++ b/libxfce4ui/xfce-dialogs.c @@ -101,7 +101,11 @@ xfce_dialog_show_help_uri (GdkScreen *screen, else { /* not very likely to happen, but it is possible exo is not installed */ +#if GTK_CHECK_VERSION (3, 22, 0) + result = gtk_show_uri_on_window (parent, uri->str, gtk_get_current_event_time (), &error); +#else result = gtk_show_uri (screen, uri->str, gtk_get_current_event_time (), &error); +#endif } if (!result) -- 2.22.0 From c370b933beef14e166795d7a1f37718666102f18 Mon Sep 17 00:00:00 2001 From: Andre Miranda Date: Sun, 4 Aug 2019 13:50:03 -0300 Subject: [PATCH 8/8] Do not use gdk_screen_get_monitor_at_point --- libxfce4ui/xfce-gdk-extensions.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libxfce4ui/xfce-gdk-extensions.c b/libxfce4ui/xfce-gdk-extensions.c index ccf067f..a3466f8 100644 --- a/libxfce4ui/xfce-gdk-extensions.c +++ b/libxfce4ui/xfce-gdk-extensions.c @@ -49,6 +49,7 @@ /** * xfce_gdk_screen_get_active: * @monitor_return : (out) (allow-none): Address to store the monitor number to or %NULL. + * Under gtk3 this will always be set to '0'. * * Returns the currently active #GdkScreen, that is, the screen which * currently contains the pointer. If no active screen was found, the @@ -84,7 +85,11 @@ xfce_gdk_screen_get_active (gint *monitor_return) { /* return the monitor number */ if (monitor_return != NULL) +#if GTK_CHECK_VERSION (3, 22, 0) + *monitor_return = 0; +#else *monitor_return = gdk_screen_get_monitor_at_point (screen, rootx, rooty); +#endif } return screen; -- 2.22.0