diff options
author | Ted Gould <ted@gould.cx> | 2013-08-13 14:02:01 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2013-08-13 14:02:01 -0500 |
commit | 3da51a23b87fb396a9067443d198f5c9e5fa2bb7 (patch) | |
tree | 2cb955fe9d616b7c1a861f59e13cf5665bbc9417 /src/app-section.c | |
parent | ec9ca618ca3f0bb6c3c8ab470b3ef3e1c6f8c0c9 (diff) | |
parent | 97d88bc9bc34f0bf654281d32c3e0aab85fa0f4d (diff) | |
download | ayatana-indicator-messages-3da51a23b87fb396a9067443d198f5c9e5fa2bb7.tar.gz ayatana-indicator-messages-3da51a23b87fb396a9067443d198f5c9e5fa2bb7.tar.bz2 ayatana-indicator-messages-3da51a23b87fb396a9067443d198f5c9e5fa2bb7.zip |
Merge from trunk
Diffstat (limited to 'src/app-section.c')
-rw-r--r-- | src/app-section.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/app-section.c b/src/app-section.c index 3a55147..4f91835 100644 --- a/src/app-section.c +++ b/src/app-section.c @@ -25,6 +25,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include "config.h" #endif +#include <gdk/gdk.h> #include <glib/gi18n.h> #include <gio/gdesktopappinfo.h> #include <gio/gio.h> @@ -289,6 +290,17 @@ app_section_finalize (GObject *object) G_OBJECT_CLASS (app_section_parent_class)->dispose (object); } +static GAppLaunchContext * +get_launch_context (guint32 timestamp) +{ + GdkDisplay *display = gdk_display_get_default(); + GdkAppLaunchContext *launch_context = gdk_display_get_app_launch_context (display); + + gdk_app_launch_context_set_timestamp (launch_context, timestamp); + + return G_APP_LAUNCH_CONTEXT (launch_context); +} + /* Respond to one of the shortcuts getting clicked on. */ static void nick_activate_cb (GSimpleAction *action, @@ -305,6 +317,8 @@ nick_activate_cb (GSimpleAction *action, g_warning("Unable to execute nick '%s' for desktop file '%s'", nick, g_desktop_app_info_get_filename (priv->appinfo)); } + + g_object_unref (context); } static void @@ -389,7 +403,7 @@ app_section_update_menu (AppSection *self) g_simple_action_group_clear (priv->static_shortcuts); is_running = priv->name_watch_id > 0; - launch = g_simple_action_new_stateful ("launch", NULL, g_variant_new_boolean (is_running)); + launch = g_simple_action_new_stateful ("launch", G_VARIANT_TYPE_UINT32, g_variant_new_boolean (is_running)); g_signal_connect (launch, "activate", G_CALLBACK (activate_cb), self); g_signal_connect (launch, "change-state", G_CALLBACK (launch_action_change_state), self); g_simple_action_group_insert (priv->static_shortcuts, G_ACTION (launch)); @@ -414,7 +428,7 @@ app_section_update_menu (AppSection *self) name = indicator_desktop_shortcuts_nick_get_name(priv->ids, nicks[i]); - action = g_simple_action_new (nicks[i], NULL); + action = g_simple_action_new (nicks[i], G_VARIANT_TYPE_UINT32); g_signal_connect(action, "activate", G_CALLBACK (nick_activate_cb), self); g_simple_action_group_insert (priv->static_shortcuts, G_ACTION (action)); g_object_unref (action); @@ -510,13 +524,16 @@ activate_cb (GSimpleAction *action, AppSection * mi = APP_SECTION (userdata); AppSectionPrivate * priv = mi->priv; GError *error = NULL; + GAppLaunchContext *launch_context = get_launch_context (g_variant_get_uint32 (param)); - if (!g_app_info_launch (G_APP_INFO (priv->appinfo), NULL, NULL, &error)) { + if (!g_app_info_launch (G_APP_INFO (priv->appinfo), NULL, launch_context, &error)) { g_warning("Unable to execute application for desktop file '%s': %s", g_desktop_app_info_get_filename (priv->appinfo), error->message); g_error_free (error); } + + g_object_unref (launch_context); } static void |