[Xfce4-commits] <libxfce4ui:stephan/gtk3> Remove some more gtk3 deprecations.

Nick Schermer noreply at xfce.org
Fri May 4 21:28:01 CEST 2012


Updating branch refs/heads/stephan/gtk3
         to d686611f0f96121033d573cdeca87c3b4cb5b0b1 (commit)
       from b652daa33f929f14ba2a807ab5847ef72cbaf70e (commit)

commit d686611f0f96121033d573cdeca87c3b4cb5b0b1
Author: Nick Schermer <nick at xfce.org>
Date:   Fri May 4 21:26:24 2012 +0200

    Remove some more gtk3 deprecations.

 libxfce4kbd-private/xfce-shortcut-dialog.c |   39 +++++++++++++++++++++++-----
 libxfce4ui/xfce-gdk-extensions.c           |   11 +++++---
 libxfce4ui/xfce-titled-dialog.c            |    4 +-
 3 files changed, 41 insertions(+), 13 deletions(-)

diff --git a/libxfce4kbd-private/xfce-shortcut-dialog.c b/libxfce4kbd-private/xfce-shortcut-dialog.c
index d7c1d59..f395831 100644
--- a/libxfce4kbd-private/xfce-shortcut-dialog.c
+++ b/libxfce4kbd-private/xfce-shortcut-dialog.c
@@ -270,15 +270,39 @@ gint
 xfce_shortcut_dialog_run (XfceShortcutDialog *dialog,
                           GtkWidget          *parent)
 {
-  gint response = GTK_RESPONSE_CANCEL;
+  GdkDisplay       *display;
+  GdkDevice        *device;
+  GdkDeviceManager *device_manager;
+  gint              response = GTK_RESPONSE_CANCEL;
+  GList            *devices, *li;
+  gboolean          succeed = FALSE;
 
   g_return_val_if_fail (XFCE_IS_SHORTCUT_DIALOG (dialog), GTK_RESPONSE_CANCEL);
 
   gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
   gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
 
+  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);
+
+  for (li = devices; li != NULL; li =li->next)
+    {
+      device = li->data;
+      if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
+        continue;
+
+      if (gdk_device_grab (device, gtk_widget_get_root_window (GTK_WIDGET (dialog)),
+                           GDK_OWNERSHIP_WINDOW, TRUE,
+                           GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK,
+                           NULL, GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS)
+        {
+          succeed = TRUE;
+        }
+    }
+
   /* Take control on the keyboard */
-  if (G_LIKELY (gdk_keyboard_grab (gtk_widget_get_root_window (GTK_WIDGET (dialog)), TRUE, GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS))
+  if (succeed)
     {
       /* Run the dialog and wait for the user to enter a valid shortcut */
       response = gtk_dialog_run (GTK_DIALOG (dialog));
@@ -290,8 +314,12 @@ xfce_shortcut_dialog_run (XfceShortcutDialog *dialog,
           dialog->shortcut = g_strdup ("");
         }
 
-      /* Release keyboard */
-      gdk_keyboard_ungrab (GDK_CURRENT_TIME);
+      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);
+        }
     }
   else
     g_warning ("%s", _("Could not grab the keyboard."));
@@ -355,9 +383,6 @@ xfce_shortcut_dialog_key_released (XfceShortcutDialog *dialog,
   /* Check if the shortcut was accepted */
   if (G_LIKELY (shortcut_accepted))
     {
-      /* Release keyboard */
-      gdk_keyboard_ungrab (GDK_CURRENT_TIME);
-
       /* Exit dialog with positive response */
       gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
     }
diff --git a/libxfce4ui/xfce-gdk-extensions.c b/libxfce4ui/xfce-gdk-extensions.c
index 402da5b..713891b 100644
--- a/libxfce4ui/xfce-gdk-extensions.c
+++ b/libxfce4ui/xfce-gdk-extensions.c
@@ -49,12 +49,15 @@
 GdkScreen *
 xfce_gdk_screen_get_active (gint *monitor_return)
 {
-  GdkDisplay *display;
-  gint        rootx, rooty;
-  GdkScreen  *screen;
+  GdkDisplay       *display;
+  gint              rootx, rooty;
+  GdkScreen        *screen;
+  GdkDeviceManager *manager;
 
   display = gdk_display_get_default ();
-  gdk_display_get_pointer (display, &screen, &rootx, &rooty, NULL);
+  manager = gdk_display_get_device_manager (display);
+  gdk_device_get_position (gdk_device_manager_get_client_pointer (manager),
+                           &screen, &rootx, &rooty);
 
   if (G_UNLIKELY (screen == NULL))
     {
diff --git a/libxfce4ui/xfce-titled-dialog.c b/libxfce4ui/xfce-titled-dialog.c
index 7a57196..2572774 100644
--- a/libxfce4ui/xfce-titled-dialog.c
+++ b/libxfce4ui/xfce-titled-dialog.c
@@ -134,7 +134,7 @@ xfce_titled_dialog_init (XfceTitledDialog *titled_dialog)
   gtk_container_remove (GTK_CONTAINER (titled_dialog), gtk_dialog_get_content_area (GTK_DIALOG (titled_dialog)));
 
   /* add a new vbox w/o border to the main window */
-  vbox = gtk_vbox_new (FALSE, 0);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (titled_dialog), vbox);
   gtk_widget_show (vbox);
 
@@ -144,7 +144,7 @@ xfce_titled_dialog_init (XfceTitledDialog *titled_dialog)
   gtk_widget_show (titled_dialog->priv->heading);
 
   /* add the separator between header and content */
-  line = gtk_hseparator_new ();
+  line = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
   gtk_box_pack_start (GTK_BOX (vbox), line, FALSE, FALSE, 0);
   gtk_widget_show (line);
 


More information about the Xfce4-commits mailing list