[Xfce4-commits] <parole:bluesabre/gtk3> Initial GTK+3 port. Configure with --enable-gtk3=yes

Sean Davis noreply at xfce.org
Sun Feb 17 07:44:01 CET 2013


Updating branch refs/heads/bluesabre/gtk3
         to 8060b259e08aea7a45653f39332719c78b5ee904 (commit)
       from c6429490cb5a519be718f7f78798b7fd7c428ff4 (commit)

commit 8060b259e08aea7a45653f39332719c78b5ee904
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Sun Feb 17 01:42:10 2013 -0500

    Initial GTK+3 port. Configure with --enable-gtk3=yes

 configure.ac.in                 |   40 +++++++++++++----
 src/common/parole-common.c      |   31 +++++++++++--
 src/common/parole-screensaver.c |   14 +++++-
 src/gst/parole-gst.c            |   81 +++++++++++++++++++++++++++++++++--
 src/parole-button.c             |   18 +++++++-
 src/parole-conf-dialog.c        |   14 ++++++
 src/parole-disc.c               |    2 +-
 src/parole-medialist.c          |    4 ++
 src/parole-player.c             |   89 +++++++++++++++++++++++++++++++++-----
 9 files changed, 257 insertions(+), 36 deletions(-)

diff --git a/configure.ac.in b/configure.ac.in
index ae8daf4..f00dadb 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -110,18 +110,39 @@ AC_DEFINE_UNQUOTED(GSTREAMER_API_VERSION, $gstreamer_api_version, [Define the GS
 m4_define([dbus_minimum_version], [0.60])
 m4_define([dbus_glib_minimum_version], [0.70])
 
-m4_define([libxfce4ui_minimum_version],[4.8.0])
-m4_define([libxfce4util_minimum_version],[4.8.0])
+m4_define([libxfce4ui_minimum_version],[4.10.0])
+m4_define([libxfce4util_minimum_version],[4.10.0])
 
 m4_define([libnotify_minimum_version], [0.4.1])
 
-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [gtk_minimum_version])
 XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [glib_minimum_version])
 XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [glib_minimum_version])
 XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [glib_minimum_version])
 XDT_CHECK_PACKAGE([GMODULE], [gmodule-2.0], [glib_minimum_version])
 XDT_CHECK_PACKAGE([GIO], [gio-2.0], [glib_minimum_version])
 
+XDT_CHECK_PACKAGE([DBUS], [dbus-1], [dbus_minimum_version])
+XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [dbus_glib_minimum_version])
+
+XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0],[libxfce4util_minimum_version])
+XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.10.0])
+
+dnl ************************************
+dnl *** Compile against GTK3 or GTK2 ***
+dnl ************************************
+AC_ARG_ENABLE([gtk3],
+              [AC_HELP_STRING([--enable-gtk3],
+              [Compile against GTK+-3.0 (default=disabled)])],
+              [enable_gtk3=$enableval], [enable_gtk3=no])
+if test "x$enable_gtk3" = "xyes"; then
+    XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.10.0])
+    XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.2.0])
+else
+    XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.10.0])
+    XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.24.0])
+fi
+AM_CONDITIONAL([ENABLE_GTK3], [test "x$enable_gtk3" = "xyes"])
+
 XDT_CHECK_PACKAGE([GST], [gstreamer-${gstreamer_api_version}], [gstreamer_minimum_version])
 XDT_CHECK_PACKAGE([GST_BASE], [gstreamer-base-${gstreamer_api_version}], [gstreamer_minimum_version])
 XDT_CHECK_PACKAGE([GST_VIDEO], [gstreamer-video-${gstreamer_api_version}], [gstreamer_minimum_version])
@@ -134,13 +155,7 @@ else
   GST_LIBS="$GST_LIBS -lgstbase-$GST_API_VERSION -lgstvideo-$GST_API_VERSION -lgstaudio-$GST_API_VERSION -lgstpbutils-$GST_API_VERSION -lgsttag-$GST_API_VERSION"
 fi
 
-XDT_CHECK_PACKAGE([DBUS], [dbus-1], [dbus_minimum_version])
-XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [dbus_glib_minimum_version])
-
-XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1],[libxfce4ui_minimum_version])
-XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0],[libxfce4util_minimum_version])
 
-XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.10.0])
 
 XDT_CHECK_LIBX11()
 
@@ -268,6 +283,12 @@ docs/plugin-api/Makefile
 po/Makefile.in
 ])
 
+if test x"$enable_gtk3" = x"yes"; then
+gtk_toolkit_version="GTK+-3"
+else
+gtk_toolkit_version="GTK+-2"
+fi
+
 echo "
 ------------------------------------------------------
             Parole Media Player $VERSION
@@ -280,6 +301,7 @@ echo "
         Debug:                          $enable_debug
         Building plugin api docs:       ${enable_gtk_doc}
         GStreamer API version:          ${gstreamer_api_version}
+        GTK+ version:                   $gtk_toolkit_version
 
         Optional dependencies:
         ======================
diff --git a/src/common/parole-common.c b/src/common/parole-common.c
index 59c3317..404bda5 100644
--- a/src/common/parole-common.c
+++ b/src/common/parole-common.c
@@ -82,22 +82,38 @@ void parole_window_busy_cursor		(GdkWindow *window)
 	
     cursor = gdk_cursor_new (GDK_WATCH);
     gdk_window_set_cursor (window, cursor);
+    
+#if GTK_CHECK_VERSION(3, 0, 0)
+    g_object_unref (cursor);
+#else
     gdk_cursor_unref (cursor);
+#endif
 
     gdk_flush ();
 }
 
 void parole_window_invisible_cursor		(GdkWindow *window)
 {
-    GdkBitmap *empty_bitmap;
     GdkCursor *cursor;
+#if GTK_CHECK_VERSION(3, 0, 0)
+    cairo_surface_t *s;
+    GdkPixbuf *cursor_pixbuf;
+#else
+    GdkBitmap *empty_bitmap;
     GdkColor  color;
-
     char cursor_bits[] = { 0x0 }; 
-    
+#endif
+
     if ( G_UNLIKELY (window == NULL) )
 	return;
 	
+#if GTK_CHECK_VERSION(3, 0, 0)
+    s = cairo_image_surface_create(CAIRO_FORMAT_A1, 1, 1);
+    cursor_pixbuf = gdk_pixbuf_get_from_surface(s, 0, 0, 1, 1);
+    cairo_surface_destroy(s);
+    cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), cursor_pixbuf, 0, 0);
+    g_object_unref(cursor_pixbuf);
+#else
     color.red = color.green = color.blue = 0;
     color.pixel = 0;
 
@@ -109,10 +125,15 @@ void parole_window_invisible_cursor		(GdkWindow *window)
 					 empty_bitmap,
 					 &color,
 					 &color, 0, 0);
+					 
+    g_object_unref (empty_bitmap);
+#endif
 
     gdk_window_set_cursor (window, cursor);
 
+#if GTK_CHECK_VERSION(3, 0, 0)
+    g_object_unref (cursor);
+#else
     gdk_cursor_unref (cursor);
-
-    g_object_unref (empty_bitmap);
+#endif
 }
diff --git a/src/common/parole-screensaver.c b/src/common/parole-screensaver.c
index edfe455..447af52 100644
--- a/src/common/parole-screensaver.c
+++ b/src/common/parole-screensaver.c
@@ -72,11 +72,16 @@ parole_screen_saver_new (void)
 void parole_screen_saver_inhibit (ParoleScreenSaver *saver, GtkWindow *window)
 {
     gchar *cmd;
+    gint ret_val;
 
     g_return_if_fail (PAROLE_IS_SCREENSAVER (saver));
 
+#if GTK_CHECK_VERSION(3, 0, 0)
+    cmd = g_strdup_printf("xdg-screensaver suspend %i", GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (window))));
+#else
     cmd = g_strdup_printf("xdg-screensaver suspend %lu", GDK_DRAWABLE_XID (gtk_widget_get_window (GTK_WIDGET (window))));
-    system(cmd);
+#endif
+    ret_val = system(cmd);
 
     g_free(cmd);
 }
@@ -84,11 +89,16 @@ void parole_screen_saver_inhibit (ParoleScreenSaver *saver, GtkWindow *window)
 void parole_screen_saver_uninhibit (ParoleScreenSaver *saver, GtkWindow *window)
 {
     gchar *cmd;
+    gint ret_val;
 
     g_return_if_fail (PAROLE_IS_SCREENSAVER (saver));
 
+#if GTK_CHECK_VERSION(3, 0, 0)
+    cmd = g_strdup_printf("xdg-screensaver resume %i", GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (window))));
+#else
     cmd = g_strdup_printf("xdg-screensaver resume %lu", GDK_DRAWABLE_XID (gtk_widget_get_window (GTK_WIDGET (window))));
-    system(cmd);
+#endif
+    ret_val = system(cmd);
 
     g_free(cmd);
 }
diff --git a/src/gst/parole-gst.c b/src/gst/parole-gst.c
index 671e55f..626cf04 100644
--- a/src/gst/parole-gst.c
+++ b/src/gst/parole-gst.c
@@ -240,7 +240,11 @@ parole_gst_realize (GtkWidget *widget)
     ParoleGst *gst;
     GtkAllocation *allocation = g_new0 (GtkAllocation, 1);
     GdkWindowAttr attr;
+#if GTK_CHECK_VERSION(3, 0, 0)
+    GdkRGBA color;
+#else
     GdkColor color;
+#endif
     gint mask;
     
     gtk_widget_set_realized (widget, TRUE);
@@ -253,7 +257,10 @@ parole_gst_realize (GtkWidget *widget)
     attr.width = allocation->width;
     attr.height = allocation->height;
     attr.visual = gtk_widget_get_visual (widget);
+#if GTK_CHECK_VERSION(3, 0, 0)
+#else
     attr.colormap = gtk_widget_get_colormap (widget);
+#endif
     attr.wclass = GDK_INPUT_OUTPUT;
     attr.window_type = GDK_WINDOW_CHILD;
     attr.event_mask = gtk_widget_get_events (widget) | 
@@ -263,23 +270,38 @@ parole_gst_realize (GtkWidget *widget)
 		      GDK_POINTER_MOTION_MASK |
 		      GDK_KEY_PRESS_MASK;
 		      
+#if GTK_CHECK_VERSION(3, 0, 0)
+    mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
+#else
     mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+#endif
 	
     gtk_widget_set_window(widget, gdk_window_new (gtk_widget_get_parent_window (widget),
 				     &attr, mask) );
 				     
     gdk_window_set_user_data (gtk_widget_get_window(widget), widget);
+
+#if GTK_CHECK_VERSION(3, 0, 0)
+    gdk_rgba_parse (&color, "black");
+    gdk_window_set_background_rgba (gtk_widget_get_window(widget), &color);
+#else
     gdk_color_parse ("black", &color);
     gdk_colormap_alloc_color (gtk_widget_get_colormap (widget), &color,
 			      TRUE, TRUE);
-    
+
     gdk_window_set_background (gtk_widget_get_window(widget), &color);
+
     gtk_widget_set_style(widget, gtk_style_attach (gtk_widget_get_style(widget), gtk_widget_get_window(widget)));
+#endif
     
     g_signal_connect (gtk_widget_get_toplevel (widget), "configure_event",
 		      G_CALLBACK (parole_gst_configure_event_cb), gst);
 		      
+#if GTK_CHECK_VERSION(3, 0, 0)
+    g_signal_connect (gtk_widget_get_parent (widget), "draw",
+#else
     g_signal_connect (gtk_widget_get_parent (widget), "expose_event",
+#endif
 		      G_CALLBACK (parole_gst_parent_expose_event), gst);
 		      
     g_free(allocation);
@@ -424,7 +446,13 @@ static void
 parole_gst_draw_logo (ParoleGst *gst)
 {
     static GdkPixbuf *pix = NULL;
+#if GTK_CHECK_VERSION(3, 0, 0)
+    cairo_region_t *region;
+    GdkRGBA *color;
+    cairo_t *cr;
+#else
     GdkRegion *region;
+#endif
     GdkRectangle rect;
     GtkWidget *widget;
     GtkAllocation *allocation = g_new0 (GtkAllocation, 1);
@@ -441,18 +469,46 @@ parole_gst_draw_logo (ParoleGst *gst)
     rect.width = allocation->width;
     rect.height = allocation->height;
 
+#if GTK_CHECK_VERSION(3, 0, 0)
+    region = cairo_region_create_rectangle(&rect);
+#else
     region = gdk_region_rectangle (&rect);
+#endif
     
     gdk_window_begin_paint_region (gtk_widget_get_window(widget),
 				   region);
 
-    gdk_region_destroy (region);
+#if GTK_CHECK_VERSION(3, 0, 0)
+    cairo_region_destroy (region);
+
+    GdkWindow *window;
+    cairo_surface_t *target;
+
+    window = gtk_widget_get_window (widget);
+    target = cairo_get_group_target (cr);
+
+    /* Clear to parent-relative pixmap
+    * We need to use direct X access here because GDK doesn't know about
+    * the parent relative pixmap. */
+    cairo_surface_flush (target);
 
+    XClearArea (GDK_WINDOW_XDISPLAY (window),
+                GDK_WINDOW_XID (window),
+                0, 0,
+                allocation->width, allocation->height,
+                False);
+    cairo_surface_mark_dirty_rectangle (target,
+                                        0, 0,
+                                        allocation->width, allocation->height);
+#else
+    gdk_region_destroy (region);
+    
     gdk_window_clear_area (gtk_widget_get_window(widget),
 			   0, 0,
 			   allocation->width,
 			   allocation->height);
-    
+#endif
+
     if (gst->priv->scale_logo)
     {
 	if (pix)
@@ -464,6 +520,12 @@ parole_gst_draw_logo (ParoleGst *gst)
 	gst->priv->scale_logo = FALSE;
     }
 
+#if GTK_CHECK_VERSION(3, 0, 0)
+    cr = gdk_cairo_create (gtk_widget_get_window(widget));
+    gdk_cairo_set_source_pixbuf (cr, pix, 0, 0);
+    cairo_paint (cr);
+    cairo_destroy (cr);
+#else
     gdk_draw_pixbuf (GDK_DRAWABLE (gtk_widget_get_window(widget)),
 		     gtk_widget_get_style(widget)->fg_gc[0],
 		     pix,
@@ -472,6 +534,7 @@ parole_gst_draw_logo (ParoleGst *gst)
 		     allocation->height,
 		     GDK_RGB_DITHER_NONE,
 		     0, 0);
+#endif
 
     gdk_window_end_paint (gtk_widget_get_window(GTK_WIDGET (gst)));
     
@@ -536,7 +599,7 @@ parole_gst_set_video_overlay (ParoleGst *gst)
 				      GDK_WINDOW_XWINDOW ( gtk_widget_get_window(GTK_WIDGET (gst)) ));
 #else
     gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (video_sink),
-                      GDK_WINDOW_XWINDOW ( gtk_widget_get_window(GTK_WIDGET (gst)) ));
+                      GDK_WINDOW_XID ( gtk_widget_get_window(GTK_WIDGET (gst)) ));
 #endif
     
     gst_object_unref (video_sink);
@@ -1725,7 +1788,11 @@ parole_gst_bus_event (GstBus *bus, GstMessage *msg, gpointer data)
                 gtk_widget_get_realized (GTK_WIDGET (gst)))
             {
                 gst_install_plugins_context_set_xid (ctx,
-                    GDK_WINDOW_XID (gtk_widget_get_window(GTK_WIDGET (gst))));
+#if GTK_CHECK_VERSION(3, 0, 0)
+                    gdk_x11_window_get_xid (gtk_widget_get_window(GTK_WIDGET (gst))));
+#else
+                    gdk_x11_drawable_get_xid (gtk_widget_get_window(GTK_WIDGET (gst))));
+#endif
             }
 #endif /* GDK_WINDOWING_X11 */
 
@@ -2312,7 +2379,11 @@ parole_gst_class_init (ParoleGstClass *klass)
     widget_class->realize = parole_gst_realize;
     widget_class->show = parole_gst_show;
     widget_class->size_allocate = parole_gst_size_allocate;
+#if GTK_CHECK_VERSION(3, 0, 0)
+    widget_class->draw = parole_gst_expose_event;
+#else
     widget_class->expose_event = parole_gst_expose_event;
+#endif
     widget_class->motion_notify_event = parole_gst_motion_notify_event;
     widget_class->button_press_event = parole_gst_button_press_event;
     widget_class->button_release_event = parole_gst_button_release_event;
diff --git a/src/parole-button.c b/src/parole-button.c
index 8a281a1..91290b5 100644
--- a/src/parole-button.c
+++ b/src/parole-button.c
@@ -155,9 +155,15 @@ parole_button_grab_keystring (ParoleButton *button, guint keycode)
     
     gdk_error_trap_push ();
 
+#if GTK_CHECK_VERSION(3, 0, 0)
     ret = XGrabKey (GDK_DISPLAY_XDISPLAY(display), keycode, modmask,
-		    GDK_WINDOW_XID (button->priv->window), True,
+		    gdk_x11_window_get_xid (button->priv->window), True,
 		    GrabModeAsync, GrabModeAsync);
+#else
+    ret = XGrabKey (GDK_DISPLAY_XDISPLAY(display), keycode, modmask,
+		    gdk_x11_drawable_get_xid (button->priv->window), True,
+		    GrabModeAsync, GrabModeAsync);
+#endif
 		    
     if ( ret == BadAccess )
     {
@@ -167,7 +173,11 @@ parole_button_grab_keystring (ParoleButton *button, guint keycode)
     }
 	
     ret = XGrabKey (GDK_DISPLAY_XDISPLAY(display), keycode, LockMask | modmask,
-		    GDK_WINDOW_XID (button->priv->window), True,
+#if GTK_CHECK_VERSION(3, 0, 0)
+            gdk_x11_window_get_xid (button->priv->window), True,
+#else
+		    gdk_x11_drawable_get_xid (button->priv->window), True,
+#endif
 		    GrabModeAsync, GrabModeAsync);
 			
     if (ret == BadAccess)
@@ -178,7 +188,11 @@ parole_button_grab_keystring (ParoleButton *button, guint keycode)
     }
 
     gdk_flush ();
+#if GTK_CHECK_VERSION(3, 0, 0)
+    gdk_error_trap_pop_ignored ();
+#else
     gdk_error_trap_pop ();
+#endif
     return TRUE;
 }
 
diff --git a/src/parole-conf-dialog.c b/src/parole-conf-dialog.c
index 38e27f0..6ac2ab1 100644
--- a/src/parole-conf-dialog.c
+++ b/src/parole-conf-dialog.c
@@ -249,7 +249,17 @@ void parole_conf_dialog_vis_plugin_changed_cb (GtkComboBox *widget,  ParoleConfD
     gchar *active;
     GstElementFactory *f;
     
+#if GTK_CHECK_VERSION(3, 0, 0)
+    GtkTreeIter iter;
+    gchar *text = NULL;
+    
+    GtkTreeModel *model = gtk_combo_box_get_model(widget);
+    
+    if (gtk_combo_box_get_active_iter (widget, &iter))
+        gtk_tree_model_get (model, &iter, 0, &active, -1);
+#else
     active = gtk_combo_box_get_active_text (widget);
+#endif
     
     f = g_hash_table_lookup (self->priv->vis_plugins, active);
     
@@ -329,7 +339,11 @@ parole_conf_dialog_init (ParoleConfDialog *self)
 static void
 parole_conf_dialog_add_vis_plugins (gpointer key, gpointer value, GtkWidget *combox)
 {
+#if GTK_CHECK_VERSION(3, 0, 0)
+    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combox), (const gchar *) key);
+#else
     gtk_combo_box_append_text (GTK_COMBO_BOX (combox), (const gchar *) key);
+#endif
 }
 
 /* Set the combobox to the default visualisation plugin */
diff --git a/src/parole-disc.c b/src/parole-disc.c
index 04420b9..2a40e6a 100644
--- a/src/parole-disc.c
+++ b/src/parole-disc.c
@@ -479,7 +479,7 @@ parole_disc_get_drives (ParoleDisc *disc)
  * needed, perform it when the menu item is activated.
  **/
 static void
-parole_disc_select_cb (GtkItem *item, ParoleDisc *disc)
+parole_disc_select_cb (GtkMenuItem *item, ParoleDisc *disc)
 {
     if ( disc->priv->needs_update )
 	parole_disc_get_drives (disc);
diff --git a/src/parole-medialist.c b/src/parole-medialist.c
index 4b282dc..0925572 100644
--- a/src/parole-medialist.c
+++ b/src/parole-medialist.c
@@ -504,7 +504,11 @@ void	parole_media_list_drag_data_received_cb (GtkWidget *widget,
 
 gboolean parole_media_list_key_press (GtkWidget *widget, GdkEventKey *ev, ParoleMediaList *list)
 {
+#if GTK_CHECK_VERSION(3, 0, 0)
+    if ( ev->keyval == GDK_KEY_Delete )
+#else
     if ( ev->keyval == GDK_Delete )
+#endif
     {
 	parole_media_list_remove_clicked_cb (NULL, list);
 	return TRUE;
diff --git a/src/parole-player.c b/src/parole-player.c
index b1c9520..40af00b 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -155,7 +155,7 @@ gboolean    parole_player_window_state_event (GtkWidget *widget,
                                   GdkEventWindowState *event,
                                   ParolePlayer *player);
 
-void            parole_player_destroy_cb                (GtkObject *window, 
+void            parole_player_destroy_cb                (GObject *window, 
 							 ParolePlayer *player);
 
 gboolean	parole_player_delete_event_cb		(GtkWidget *widget, 
@@ -894,7 +894,7 @@ parole_player_show_audiobox (ParolePlayer *player)
         !gst_get_has_vis   ( PAROLE_GST(player->priv->gst) ) )
     {
 	gtk_widget_show(player->priv->audiobox);
-	gtk_widget_hide_all(player->priv->eventbox_output);
+	gtk_widget_hide(player->priv->eventbox_output);
     }
     else
     {
@@ -1843,7 +1843,7 @@ gboolean parole_player_delete_event_cb (GtkWidget *widget, GdkEvent *ev, ParoleP
 }
 
 void
-parole_player_destroy_cb (GtkObject *window, ParolePlayer *player)
+parole_player_destroy_cb (GObject *window, ParolePlayer *player)
 {
 }
 
@@ -2112,6 +2112,11 @@ static gboolean parole_player_hide_fs_window (gpointer data)
     GdkWindow *gdkwindow;
     gint x, y, w, h;
     
+#if GTK_CHECK_VERSION (3, 0, 0)
+    GdkDevice *dev;
+    GdkDeviceManager *devmgr;
+#endif
+    
     player = PAROLE_PLAYER (data);
     
     if ( gtk_widget_get_visible (player->priv->fs_window) )
@@ -2122,7 +2127,14 @@ static gboolean parole_player_hide_fs_window (gpointer data)
 	h = allocation->height;
 	g_free(allocation);
 	
+#if GTK_CHECK_VERSION (3, 0, 0)
+    devmgr = gdk_display_get_device_manager(gtk_widget_get_display(GTK_WIDGET(player->priv->fs_window)));
+    dev = gdk_device_manager_get_client_pointer(devmgr);
+    gdk_window_get_device_position( gtk_widget_get_window(GTK_WIDGET(player->priv->fs_window)),
+                                    dev, &x, &y, NULL);
+#else
 	gtk_widget_get_pointer (player->priv->fs_window, &x, &y);
+#endif
 	
 	if ((x >= 0) && (x <= w) && (y >= 0) && (y <= h))
 	    return TRUE;
@@ -2475,18 +2487,33 @@ parole_player_handle_key_press (GdkEventKey *ev, ParolePlayer *player)
     
     switch (ev->keyval)
     {
-	case GDK_f:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_f:
+	case GDK_KEY_F:
+#else
+    case GDK_f:
 	case GDK_F:
+#endif
             if ( player->priv->embedded != TRUE ) parole_player_full_screen_menu_item_activate (player);
 	    ret_val = TRUE;
 	    break;
-	case GDK_space:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_space:
+	case GDK_KEY_p:
+	case GDK_KEY_P:
+#else
+    case GDK_space:
 	case GDK_p:
 	case GDK_P:
+#endif
 	    parole_player_play_pause_clicked (NULL, player);
 	    ret_val = TRUE;
 	    break;
+#if GTK_CHECK_VERSION(3, 0, 0)
+    case GDK_KEY_Right:
+#else
     case GDK_Right:
+#endif
 	    /* Media seekable ?*/
 	    if ( gtk_widget_get_sensitive (player->priv->range) )
 	    {
@@ -2495,7 +2522,11 @@ parole_player_handle_key_press (GdkEventKey *ev, ParolePlayer *player)
 	    }
 	    ret_val = TRUE;
 	    break;
-	case GDK_Left:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_Left:
+#else
+    case GDK_Left:
+#endif
 	    if ( gtk_widget_get_sensitive (player->priv->range) )
 	    {
 		if (ev->state & GDK_CONTROL_MASK) parole_player_seekb_cb (NULL, player, seek_medium);
@@ -2503,22 +2534,39 @@ parole_player_handle_key_press (GdkEventKey *ev, ParolePlayer *player)
 	    }
 	    ret_val = TRUE;
 	    break;
-	case GDK_Page_Down:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_Page_Down:
+#else
+    case GDK_Page_Down:
+#endif
 	    if ( gtk_widget_get_sensitive (player->priv->range) )
 		parole_player_seekb_cb (NULL, player, seek_long);
 	    ret_val = TRUE;
 	    break;
-	case GDK_Page_Up:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_Page_Up:
+#else
+    case GDK_Page_Up:
+#endif
 	    if ( gtk_widget_get_sensitive (player->priv->range) )
 		parole_player_seekf_cb (NULL, player, seek_long);
 	    ret_val = TRUE;
 	    break;
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_s:
+	case GDK_KEY_S:
+#else
 	case GDK_s:
 	case GDK_S:
+#endif
 	    parole_player_stop_clicked (NULL, player);
 	    ret_val = TRUE;
 	    break;
-	case GDK_Escape:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_Escape:
+#else
+    case GDK_Escape:
+#endif
 	    parole_player_full_screen (player, FALSE);
 	    break;
 #ifdef HAVE_XF86_KEYSYM
@@ -2532,8 +2580,13 @@ parole_player_handle_key_press (GdkEventKey *ev, ParolePlayer *player)
 	 * Pass these to the media list and tell it to
 	 * grab the focus
 	 */
-	case GDK_Up:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_Up:
+	case GDK_KEY_Down:
+#else
+    case GDK_Up:
 	case GDK_Down:
+#endif
 	    if (!player->priv->full_screen && gtk_widget_get_visible(player->priv->playlist_nt))
 	        parole_media_list_grab_focus (player->priv->list);
 	    break;
@@ -2555,7 +2608,11 @@ parole_player_key_press (GtkWidget *widget, GdkEventKey *ev, ParolePlayer *playe
 
     switch (ev->keyval)
     {
-	case GDK_F11:
+#if GTK_CHECK_VERSION(3, 0, 0)
+	case GDK_KEY_F11:
+#else
+    case GDK_F11:
+#endif
             if ( player->priv->embedded != TRUE ) parole_player_full_screen_menu_item_activate (player);
 	    return TRUE;
 #ifdef HAVE_XF86_KEYSYM
@@ -2788,7 +2845,11 @@ parole_player_set_wm_opacity_hint (GtkWidget *widget)
     
     gdkwindow = gtk_widget_get_window (widget);
     
-    XChangeProperty (xdisplay, GDK_WINDOW_XID (gdkwindow),
+#if GTK_CHECK_VERSION(3, 0, 0)
+    XChangeProperty (xdisplay, gdk_x11_window_get_xid (gdkwindow),
+#else
+    XChangeProperty (xdisplay, gdk_x11_drawable_get_xid (gdkwindow),
+#endif
 		     atom, XA_CARDINAL,
 		     32, PropModeAppend,
 		     (guchar *) &mode, 
@@ -3005,7 +3066,11 @@ parole_player_init (ParolePlayer *player)
     
     /* Audio box */
     hbox_audiobox = GTK_WIDGET (gtk_builder_get_object (builder, "hbox_audiobox"));
+#if GTK_CHECK_VERSION(3, 0, 0)
+    g_signal_connect(hbox_audiobox, "draw",
+#else
     g_signal_connect(hbox_audiobox, "expose-event",
+#endif
         G_CALLBACK(parole_audiobox_expose_event), player);
     
     gdk_color_parse("black", &background);


More information about the Xfce4-commits mailing list