Updating branch refs/heads/dbus-add-client to aaa53bbbc0ddf236a1977b1fbd4bdb5270275a4b (commit) from cfaeaeeb62f354e0060c1c036d8a04b41f4349bb (commit)
commit aaa53bbbc0ddf236a1977b1fbd4bdb5270275a4b Author: Brian J. Tarricone <bj...@cornell.edu> Date: Thu Apr 2 01:43:19 2009 -0700 WIP xfce4-session/xfsm-client-dbus.xml | 22 ++++++++++++++++++++++ xfce4-session/xfsm-client.c | 19 +++++++++++++++++++ xfce4-session/xfsm-manager.h | 10 ++++++++++ 3 files changed, 51 insertions(+), 0 deletions(-) diff --git a/xfce4-session/xfsm-client-dbus.xml b/xfce4-session/xfsm-client-dbus.xml index 6d1ead4..5c021ef 100644 --- a/xfce4-session/xfsm-client-dbus.xml +++ b/xfce4-session/xfsm-client-dbus.xml @@ -115,6 +115,28 @@ <method name="Terminate"/> <!-- + (Bool, UInt) org.xfce.Session.Client.AddToSavedSession() + + Forces the session manager to reopen the currently-active + session file, add this client to it, and then save it back + to disk. This allows "important" clients to get themselves + added to the session without dirty hacks. + + Note: the user may be prompted to confirm. + + Returns: %TRUE if the client was added successfully, %FALSE + otherwise. If %FALSE, the second return arg will + be an integer describing the reason for failure: + 0: Success/Unknown + 1: Write error + 2: User canceled + --> + <method name="AddToSavedSession"> + <arg direction="out" name="success" type="b"/> + <arg direction="out" name="reason" type="u"/> + </method> + + <!-- void org.xfce.Session.Client.StateChanged(Unsigned Int old_state, Unsigned Int new_state) diff --git a/xfce4-session/xfsm-client.c b/xfce4-session/xfsm-client.c index ca400d5..24af2f0 100644 --- a/xfce4-session/xfsm-client.c +++ b/xfce4-session/xfsm-client.c @@ -714,6 +714,10 @@ static gboolean xfsm_client_dbus_delete_sm_properties (XfsmClient *client, GError **error); static gboolean xfsm_client_dbus_terminate (XfsmClient *client, GError **error); +static gboolean xfsm_client_dbus_add_to_saved_session (XfsmClient *client, + gboolean *OUT_success, + guint *OUT_reason, + GError **error); /* header needs the above fwd decls */ @@ -1001,3 +1005,18 @@ xfsm_client_dbus_terminate (XfsmClient *client, { return xfsm_manager_terminate_client (client->manager, client, error); } + +static gboolean +xfsm_client_dbus_add_to_saved_session (XfsmClient *client, + gboolean *OUT_success, + guint *OUT_reason, + GError **error) +{ + XfsmManagerFailureReason ret; + + ret = xfsm_manager_add_client_to_saved_session (client->manager, client); + *OUT_success = (ret == XFSM_MANAGER_REASON_SUCCESS); + *OUT_reason = ret; + + return TRUE; +} diff --git a/xfce4-session/xfsm-manager.h b/xfce4-session/xfsm-manager.h index 1a4ffcc..1ee52b2 100644 --- a/xfce4-session/xfsm-manager.h +++ b/xfce4-session/xfsm-manager.h @@ -66,6 +66,13 @@ typedef enum XFSM_MANAGER_COMPAT_KDE, } XfsmManagerCompatType; +typedef enum +{ + XFSM_MANAGER_REASON_SUCCESS = 0, + XFSM_MANAGER_REASON_WRITE_ERROR, + XFSM_MANAGER_REASON_USER_CANCELED, +} XfsmManagerReason; + typedef struct _XfsmManager XfsmManager; GType xfsm_manager_get_type (void) G_GNUC_CONST; @@ -155,4 +162,7 @@ gboolean xfsm_manager_get_use_failsafe_mode (XfsmManager *manager); gboolean xfsm_manager_get_compat_startup (XfsmManager *manager, XfsmManagerCompatType type); +XfsmManagerReason xfsm_manager_add_client_to_saved_session (XfsmManager *manager, + XfsmClient *client); + #endif /* !__XFSM_MANAGER_H__ */ _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits