summaryrefslogtreecommitdiff
path: root/gtk/gtkapplicationwindow.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@gnome.org>2012-04-20 19:29:11 +0200
committerChristian Persch <chpe@gnome.org>2012-05-03 17:45:46 +0200
commitff66d0d8e5817596cc7fd736abfebbf3dfd94fc5 (patch)
tree3f456995c21de297a3a8473d36f07affa3177ad1 /gtk/gtkapplicationwindow.c
parent824776cb02af011424ad6bdaa15238a1eafcb700 (diff)
downloadgtk+-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.c29
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;
+}