summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Koegel <eric.koegel@gmail.com>2013-09-21 10:50:39 +0300
committerEric Koegel <eric.koegel@gmail.com>2013-09-21 10:51:53 +0300
commit1d9dca11efbc9ac7f416d9c9dccb2049be2b5997 (patch)
treea72d0075ef6af5d7f416af6922ec3c853da4827e
parentf4fa63b92f0ee07268f0af8b0bccb39a03c0e0e5 (diff)
downloadxfdesktop-1d9dca11efbc9ac7f416d9c9dccb2049be2b5997.tar.gz
Workaround g_action_map being too new
This adds in code for g_simple_action_group stuff so that it will work with glib versions earlier than 2.32.
-rw-r--r--src/xfdesktop-application.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/xfdesktop-application.c b/src/xfdesktop-application.c
index f1b29442..f52c821f 100644
--- a/src/xfdesktop-application.c
+++ b/src/xfdesktop-application.c
@@ -99,6 +99,10 @@ struct _XfdesktopApplication
{
GApplication parent;
+#if !GLIB_CHECK_VERSION (2, 32, 0)
+ GSimpleActionGroup *actions;
+#endif
+
GtkWidget **desktops;
XfconfChannel *channel;
gint nscreens;
@@ -130,33 +134,51 @@ xfdesktop_application_class_init(XfdesktopApplicationClass *klass)
}
static void
+xfdesktop_application_add_action(XfdesktopApplication *app, GAction *action)
+{
+#if GLIB_CHECK_VERSION (2, 32, 0)
+ g_action_map_add_action(G_ACTION_MAP(app), action);
+#else
+ g_simple_action_group_insert(app->actions, action);
+#endif
+}
+
+static void
xfdesktop_application_init(XfdesktopApplication *app)
{
GSimpleAction *action;
+#if !GLIB_CHECK_VERSION (2, 32, 0)
+ app->actions = g_simple_action_group_new();
+#endif
+
/* reload action */
action = g_simple_action_new("reload", NULL);
g_signal_connect(action, "activate", G_CALLBACK(cb_xfdesktop_application_reload), app);
- g_action_map_add_action(G_ACTION_MAP(app), G_ACTION(action));
+ xfdesktop_application_add_action(app, G_ACTION(action));
g_object_unref(action);
/* quit action */
action = g_simple_action_new("quit", NULL);
g_signal_connect(action, "activate", G_CALLBACK(cb_xfdesktop_application_quit), app);
- g_action_map_add_action(G_ACTION_MAP(app), G_ACTION(action));
+ xfdesktop_application_add_action(app, G_ACTION(action));
g_object_unref(action);
/* menu action, parameter pops up primary (TRUE) or windowlist menu */
action = g_simple_action_new("menu", G_VARIANT_TYPE_BOOLEAN);
g_signal_connect(action, "activate", G_CALLBACK(cb_xfdesktop_application_menu), app);
- g_action_map_add_action(G_ACTION_MAP(app), G_ACTION(action));
+ xfdesktop_application_add_action(app, G_ACTION(action));
g_object_unref(action);
/* arrange action */
action = g_simple_action_new("arrange", NULL);
g_signal_connect(action, "activate", G_CALLBACK(cb_xfdesktop_application_arrange), app);
- g_action_map_add_action(G_ACTION_MAP(app), G_ACTION(action));
+ xfdesktop_application_add_action(app, G_ACTION(action));
g_object_unref(action);
+
+#if !GLIB_CHECK_VERSION (2, 32, 0)
+ g_application_set_action_group(G_APPLICATION(app), (GActionGroup*)app->actions);
+#endif
}
static void