From 1d9dca11efbc9ac7f416d9c9dccb2049be2b5997 Mon Sep 17 00:00:00 2001 From: Eric Koegel Date: Sat, 21 Sep 2013 10:50:39 +0300 Subject: 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. --- src/xfdesktop-application.c | 30 ++++++++++++++++++++++++++---- 1 file 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; @@ -129,34 +133,52 @@ xfdesktop_application_class_init(XfdesktopApplicationClass *klass) gapplication_class->command_line = xfdesktop_application_command_line; } +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 -- cgit v1.2.1