aboutsummaryrefslogtreecommitdiff
path: root/src/app-section.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/app-section.c')
-rw-r--r--src/app-section.c23
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