This is an automated email from the git hooks/post-receive script.

nomad pushed a commit to branch master
in repository apps/xfdashboard.

commit cb4bc3f00a8e3236443dbc39e9587fadb8afa11c
Author: Stephan Haller <[email protected]>
Date:   Mon Dec 14 13:48:29 2015 +0100

    Implement action signal "exit" at XfdashboardApplication to perform quit of 
application which is useful at XfdashboardActionButton actors
---
 xfdashboard/application.c |   37 ++++++++++++++++++++++++++++++++++++-
 xfdashboard/application.h |    7 +++++++
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/xfdashboard/application.c b/xfdashboard/application.c
index 63beb0f..823fc5e 100644
--- a/xfdashboard/application.c
+++ b/xfdashboard/application.c
@@ -49,6 +49,7 @@
 #include "application-database.h"
 #include "application-tracker.h"
 #include "plugins-manager.h"
+#include "marshal.h"
 
 /* Define this class in GObject system */
 G_DEFINE_TYPE(XfdashboardApplication,
@@ -111,6 +112,9 @@ enum
        SIGNAL_RESUME,
        SIGNAL_THEME_CHANGED,
 
+       /* Actions */
+       ACTION_EXIT,
+
        SIGNAL_LAST
 };
 
@@ -195,6 +199,21 @@ static void 
_xfdashboard_application_quit(XfdashboardApplication *self, gboolean
                }
 }
 
+/* Action "exit" was called at application */
+static gboolean _xfdashboard_application_action_exit(XfdashboardApplication 
*self,
+                                                                               
                                XfdashboardFocusable *inSource,
+                                                                               
                                const gchar *inAction,
+                                                                               
                                ClutterEvent *inEvent)
+{
+       g_return_val_if_fail(XFDASHBOARD_IS_APPLICATION(self), 
CLUTTER_EVENT_PROPAGATE);
+
+       /* Quit application */
+       _xfdashboard_application_quit(self, FALSE);
+
+       /* Prevent the default handler being called */
+       return(CLUTTER_EVENT_STOP);
+}
+
 /* The session is going to quit */
 static void _xfdashboard_application_on_session_quit(XfdashboardApplication 
*self,
                                                                                
                                gpointer inUserData)
@@ -212,7 +231,7 @@ static gboolean 
_xfdashboard_application_on_delete_stage(XfdashboardApplication
                                                                                
                                        ClutterEvent *inEvent,
                                                                                
                                        gpointer inUserData)
 {
-       g_return_val_if_fail(XFDASHBOARD_IS_APPLICATION(self), FALSE);
+       g_return_val_if_fail(XFDASHBOARD_IS_APPLICATION(self), 
CLUTTER_EVENT_PROPAGATE);
 
        /* Quit application */
        _xfdashboard_application_quit(self, FALSE);
@@ -874,6 +893,8 @@ static void 
xfdashboard_application_class_init(XfdashboardApplicationClass *klas
        GObjectClass            *gobjectClass=G_OBJECT_CLASS(klass);
 
        /* Override functions */
+       klass->exit=_xfdashboard_application_action_exit;
+
        appClass->activate=_xfdashboard_application_activate;
        appClass->command_line=_xfdashboard_application_command_line;
 #if GLIB_CHECK_VERSION(2, 40, 0)
@@ -968,6 +989,20 @@ static void 
xfdashboard_application_class_init(XfdashboardApplicationClass *klas
                                                1,
                                                XFDASHBOARD_TYPE_THEME);
 
+       XfdashboardApplicationSignals[ACTION_EXIT]=
+               g_signal_new("exit",
+                                               G_TYPE_FROM_CLASS(klass),
+                                               G_SIGNAL_RUN_LAST | 
G_SIGNAL_ACTION,
+                                               
G_STRUCT_OFFSET(XfdashboardApplicationClass, exit),
+                                               
g_signal_accumulator_true_handled,
+                                               NULL,
+                                               
_xfdashboard_marshal_BOOLEAN__OBJECT_STRING_OBJECT,
+                                               G_TYPE_BOOLEAN,
+                                               3,
+                                               XFDASHBOARD_TYPE_FOCUSABLE,
+                                               G_TYPE_STRING,
+                                               CLUTTER_TYPE_EVENT);
+
        /* Register GValue transformation function not provided by any other 
library */
        xfdashboard_register_gvalue_transformation_funcs();
 }
diff --git a/xfdashboard/application.h b/xfdashboard/application.h
index 2a7164f..071f864 100644
--- a/xfdashboard/application.h
+++ b/xfdashboard/application.h
@@ -29,6 +29,7 @@
 #include <xfconf/xfconf.h>
 
 #include "theme.h"
+#include "focusable.h"
 
 G_BEGIN_DECLS
 
@@ -87,6 +88,12 @@ struct _XfdashboardApplicationClass
        void (*shutdown_final)(XfdashboardApplication *self);
 
        void (*theme_changed)(XfdashboardApplication *self, XfdashboardTheme 
*inTheme);
+
+       /* Binding actions */
+       gboolean (*exit)(XfdashboardApplication *self,
+                                               XfdashboardFocusable *inSource,
+                                               const gchar *inAction,
+                                               ClutterEvent *inEvent);
 };
 
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to