Add gtk_application_end_session

This function allows applications to request that
the user session be ended by logout/shutdown/reboot.
This commit is contained in:
Matthias Clasen 2012-01-07 03:04:54 -05:00
parent bdd7e15c84
commit 3142d13972
3 changed files with 42 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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__ */