[gtk/portal-session-state] application: Add a query-end signal
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/portal-session-state] application: Add a query-end signal
- Date: Tue, 22 Jan 2019 01:46:35 +0000 (UTC)
commit 87a05b3257d661f46525b45aa66befbfbe68eb96
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Jan 21 20:45:15 2019 -0500
application: Add a query-end signal
This lets us take just-in-time inhibitors, and makes
the session support a little more real.
gtk/gtkapplication-dbus.c | 2 ++
gtk/gtkapplication.c | 19 +++++++++++++++++++
2 files changed, 21 insertions(+)
---
diff --git a/gtk/gtkapplication-dbus.c b/gtk/gtkapplication-dbus.c
index 07fd2ed6bd..eec78dfef8 100644
--- a/gtk/gtkapplication-dbus.c
+++ b/gtk/gtkapplication-dbus.c
@@ -234,6 +234,8 @@ screensaver_signal_portal (GDBusConnection *connection,
}
else if (session_state == QUERY_END)
{
+ g_signal_emit_by_name (dbus->impl.application, "query-end");
+
g_dbus_proxy_call (dbus->inhibit_proxy,
"QueryEndResponse",
g_variant_new ("(o)", dbus->session_id),
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index 5d26f07088..aff5749136 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -129,6 +129,7 @@
enum {
WINDOW_ADDED,
WINDOW_REMOVED,
+ QUERY_END,
LAST_SIGNAL
};
@@ -644,6 +645,24 @@ gtk_application_class_init (GtkApplicationClass *class)
g_cclosure_marshal_VOID__OBJECT,
G_TYPE_NONE, 1, GTK_TYPE_WINDOW);
+ /**
+ * GtkApplication::query-end:
+ * @application: the #GtkApplication which emitted the signal
+ *
+ * Emitted when the session manager is about to end the session, only
+ * if #GtkApplication::register-session is %TRUE. Applications can
+ * connect to this signal and call gtk_application_inhibit() with
+ * %GTK_APPLICATION_INHIBIT_LOGOUT to delay the end of the session
+ * until state has been saved.
+ *
+ * Since: 3.24.5
+ */
+ gtk_application_signals[QUERY_END] =
+ g_signal_new (I_("query-end"), GTK_TYPE_APPLICATION, G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
/**
* GtkApplication:register-session:
*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]