]> Pileus Git - ~andy/gtk/commitdiff
GtkApplication: adjust to GApplication changes
authorRyan Lortie <desrt@desrt.ca>
Mon, 30 Apr 2012 16:34:47 +0000 (12:34 -0400)
committerRyan Lortie <desrt@desrt.ca>
Mon, 30 Apr 2012 21:50:45 +0000 (17:50 -0400)
GApplication now makes the session bus and object path available as a
public API on the application instance.  Use that instead of trying to
guess values for ourselves.

This causes this version of Gtk+ to depend on GLib 2.32.2, so bumping
version dependency accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=671249

configure.ac
gtk/gtkapplication.c
gtk/gtkapplicationprivate.h
gtk/gtkapplicationwindow.c

index 440176cefd888c5ecdfacbb3c6faeb95c70eea82..7901e1e53eb768dd55175a31b1100ec33b7fac61 100644 (file)
@@ -39,7 +39,7 @@ AC_CONFIG_AUX_DIR([build-aux])
 m4_define([gtk_binary_version], [3.0.0])
 
 # required versions of other packages
-m4_define([glib_required_version], [2.32.0])
+m4_define([glib_required_version], [2.33.1])
 m4_define([pango_required_version], [1.30.0])
 m4_define([atk_required_version], [2.2.0])
 m4_define([cairo_required_version], [1.10.0])
index 945e333b1ded2e6df63dbb0e165b24f81cfdaf0a..06403d39ed518b3a924d4add03e5b742efeb4435 100644 (file)
@@ -149,7 +149,7 @@ struct _GtkApplicationPrivate
 #ifdef GDK_WINDOWING_X11
   GDBusConnection *session_bus;
   const gchar     *application_id;
-  gchar           *object_path;
+  const gchar     *object_path;
 
   gchar           *app_menu_path;
   guint            app_menu_id;
@@ -274,34 +274,13 @@ gtk_application_window_removed_x11 (GtkApplication *application,
     gtk_application_window_unpublish (GTK_APPLICATION_WINDOW (window));
 }
 
-static gchar *
-object_path_from_appid (const gchar *appid)
-{
-  gchar *appid_path, *iter;
-
-  appid_path = g_strconcat ("/", appid, NULL);
-  for (iter = appid_path; *iter; iter++)
-    {
-      if (*iter == '.')
-        *iter = '/';
-
-      if (*iter == '-')
-        *iter = '_';
-    }
-
-  return appid_path;
-}
-
 static void gtk_application_startup_session_dbus (GtkApplication *app);
 
 static void
 gtk_application_startup_x11 (GtkApplication *application)
 {
-  const gchar *application_id;
-
-  application_id = g_application_get_application_id (G_APPLICATION (application));
-  application->priv->session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
-  application->priv->object_path = object_path_from_appid (application_id);
+  application->priv->session_bus = g_application_get_dbus_connection (G_APPLICATION (application));
+  application->priv->object_path = g_application_get_dbus_object_path (G_APPLICATION (application));
 
   gtk_application_startup_session_dbus (GTK_APPLICATION (application));
 }
@@ -309,9 +288,8 @@ gtk_application_startup_x11 (GtkApplication *application)
 static void
 gtk_application_shutdown_x11 (GtkApplication *application)
 {
-  g_free (application->priv->object_path);
+  application->priv->session_bus = NULL;
   application->priv->object_path = NULL;
-  g_clear_object (&application->priv->session_bus);
 
   g_clear_object (&application->priv->sm_proxy);
   g_clear_object (&application->priv->client_proxy);
@@ -319,12 +297,6 @@ gtk_application_shutdown_x11 (GtkApplication *application)
   g_free (application->priv->client_path);
 }
 
-const gchar *
-gtk_application_get_dbus_object_path (GtkApplication *application)
-{
-  return application->priv->object_path;
-}
-
 const gchar *
 gtk_application_get_app_menu_object_path (GtkApplication *application)
 {
index a68015d5c9072c06678d5520906371b8d6db2abb..e838e88cbcb54f80a1f358632d4b6373abaf4b85 100644 (file)
@@ -43,8 +43,6 @@ GActionObservable     * gtk_application_window_get_observable           (GtkAppl
 G_GNUC_INTERNAL
 GtkAccelGroup         * gtk_application_window_get_accel_group          (GtkApplicationWindow *window);
 
-G_GNUC_INTERNAL
-const gchar *           gtk_application_get_dbus_object_path            (GtkApplication       *application);
 G_GNUC_INTERNAL
 const gchar *           gtk_application_get_app_menu_object_path        (GtkApplication       *application);
 G_GNUC_INTERNAL
index 1f045caa4d55f703e7a49e7c032c9dce68d9d3db..495897efcc9bbedf55978f549e1f1c5cb68714a5 100644 (file)
@@ -777,7 +777,7 @@ gtk_application_window_real_realize (GtkWidget *widget)
                                           g_dbus_connection_get_unique_name (window->priv->session));
 
         gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_APPLICATION_OBJECT_PATH",
-                                          gtk_application_get_dbus_object_path (application));
+                                          g_application_get_dbus_object_path (G_APPLICATION (application)));
 
         gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_WINDOW_OBJECT_PATH",
                                           window->priv->object_path);