diff options
author | Christian Persch <chpe@gnome.org> | 2012-04-20 19:29:11 +0200 |
---|---|---|
committer | Christian Persch <chpe@gnome.org> | 2012-05-03 17:45:46 +0200 |
commit | ff66d0d8e5817596cc7fd736abfebbf3dfd94fc5 (patch) | |
tree | 3f456995c21de297a3a8473d36f07affa3177ad1 /gtk/gtkapplicationwindow.c | |
parent | 824776cb02af011424ad6bdaa15238a1eafcb700 (diff) | |
download | gtk+-ff66d0d8e5817596cc7fd736abfebbf3dfd94fc5.tar.gz |
application: Add unique IDs for GtkApplicationWindow
This will allow to refer to specific GtkApplicationWindows remotely by ID.
https://bugzilla.gnome.org/show_bug.cgi?id=674409
Diffstat (limited to 'gtk/gtkapplicationwindow.c')
-rw-r--r-- | gtk/gtkapplicationwindow.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/gtk/gtkapplicationwindow.c b/gtk/gtkapplicationwindow.c index 495897efcc..ab98920b4e 100644 --- a/gtk/gtkapplicationwindow.c +++ b/gtk/gtkapplicationwindow.c @@ -218,6 +218,8 @@ struct _GtkApplicationWindowPrivate GDBusConnection *session; gchar *object_path; guint export_id; + + guint id; }; static void @@ -809,11 +811,13 @@ gtk_application_window_real_unrealize (GtkWidget *widget) gboolean gtk_application_window_publish (GtkApplicationWindow *window, GDBusConnection *session, - const gchar *object_path) + const gchar *object_path, + guint object_id) { g_assert (window->priv->session == NULL); g_assert (window->priv->export_id == 0); g_assert (window->priv->object_path == NULL); + g_assert (window->priv->id == 0); window->priv->export_id = g_dbus_connection_export_action_group (session, object_path, G_ACTION_GROUP (window->priv->actions), @@ -824,6 +828,7 @@ gtk_application_window_publish (GtkApplicationWindow *window, window->priv->session = session; window->priv->object_path = g_strdup (object_path); + window->priv->id = object_id; return TRUE; } @@ -834,10 +839,12 @@ gtk_application_window_unpublish (GtkApplicationWindow *window) g_assert (window->priv->session != NULL); g_assert (window->priv->export_id != 0); g_assert (window->priv->object_path != NULL); + g_assert (window->priv->id != 0); g_dbus_connection_unexport_action_group (window->priv->session, window->priv->export_id); window->priv->session = NULL; window->priv->export_id = 0; + window->priv->id = 0; g_free (window->priv->object_path); window->priv->object_path = NULL; @@ -1086,3 +1093,23 @@ gtk_application_window_get_accel_group (GtkApplicationWindow *window) { return window->priv->accels; } + +/** + * gtk_application_window_get_id: + * @window: a #GtkApplicationWindow + * + * Returns the unique ID of the window. If the window has not yet been added to + * a #GtkApplication, returns <literal>0</literal>. + * + * Returns: the unique ID for @window, or <literal>0</literal> if the window + * has not yet been added to a #GtkApplication + * + * Since: 3.6 + */ +guint +gtk_application_window_get_id (GtkApplicationWindow *window) +{ + g_return_val_if_fail (GTK_IS_APPLICATION_WINDOW (window), 0); + + return window->priv->id; +} |