[gtk+] Add gtk_application_end_session



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]