[gtk+] Add gtk_application_end_session
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add gtk_application_end_session
- Date: Sat, 7 Jan 2012 08:21:34 +0000 (UTC)
commit 3142d13972ea922c9bcdcacc219c6773ce6479e4
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jan 7 03:04:54 2012 -0500
Add gtk_application_end_session
This function allows applications to request that
the user session be ended by logout/shutdown/reboot.
gtk/gtk.symbols | 1 +
gtk/gtkapplication.c | 31 +++++++++++++++++++++++++++++++
gtk/gtkapplication.h | 10 ++++++++++
3 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index 06ebd7b..798993e 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -219,6 +219,7 @@ gtk_app_chooser_widget_set_show_other
gtk_app_chooser_widget_set_show_recommended
gtk_application_add_accelerator
gtk_application_add_window
+gtk_application_end_session
gtk_application_get_app_menu
gtk_application_get_menubar
gtk_application_get_type
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index 7ee766f..097d6d8 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -1209,4 +1209,35 @@ gtk_application_is_inhibited (GtkApplication *application,
return inhibited;
}
+gboolean
+gtk_application_end_session (GtkApplication *application,
+ GtkApplicationEndStyle style,
+ gboolean request_confirmation)
+{
+ g_return_val_if_fail (GTK_IS_APPLICATION (application), FALSE);
+ g_return_val_if_fail (!g_application_get_is_remote (G_APPLICATION (application)), FALSE);
+ g_return_val_if_fail (application->priv->sm_proxy != NULL, FALSE);
+
+ switch (style)
+ {
+ case GTK_APPLICATION_LOGOUT:
+ g_dbus_proxy_call (application->priv->sm_proxy,
+ "Logout",
+ g_variant_new ("(u)", request_confirmation),
+ G_DBUS_CALL_FLAGS_NONE,
+ G_MAXINT,
+ NULL, NULL, NULL);
+ break;
+ case GTK_APPLICATION_REBOOT:
+ case GTK_APPLICATION_SHUTDOWN:
+ g_dbus_proxy_call (application->priv->sm_proxy,
+ "Shutdown",
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ G_MAXINT,
+ NULL, NULL, NULL);
+ break;
+ }
+}
+
#endif
diff --git a/gtk/gtkapplication.h b/gtk/gtkapplication.h
index 298e50d..4e38441 100644
--- a/gtk/gtkapplication.h
+++ b/gtk/gtkapplication.h
@@ -116,6 +116,16 @@ void gtk_application_uninhibit (GtkApplication
gboolean gtk_application_is_inhibited (GtkApplication *application,
GtkApplicationInhibitFlags flags);
+typedef enum {
+ GTK_APPLICATION_LOGOUT,
+ GTK_APPLICATION_REBOOT,
+ GTK_APPLICATION_SHUTDOWN
+} GtkApplicationEndStyle;
+
+gboolean gtk_application_end_session (GtkApplication *application,
+ GtkApplicationEndStyle style,
+ gboolean request_confirmation);
+
G_END_DECLS
#endif /* __GTK_APPLICATION_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]