Unrevert gtkactionmuxer: Reintroduce the passing of event timestamps

Fix an accidental revert of a6a2cea414 - a patch that hacked
the cut-and-pasted code from GTK+ to pass timestamps when activating
remote actions.

https://bugzilla.gnome.org/show_bug.cgi?id=747323
This commit is contained in:
Owen W. Taylor 2015-04-07 10:14:05 -04:00
parent c6d2946ce6
commit a0632e3e02

View File

@ -24,6 +24,8 @@
#include "gtkactionobservable.h" #include "gtkactionobservable.h"
#include "gtkactionobserver.h" #include "gtkactionobserver.h"
#include <clutter/clutter.h>
#include <string.h> #include <string.h>
/** /**
@ -413,6 +415,26 @@ gtk_action_muxer_activate_action (GActionGroup *action_group,
g_action_group_activate_action (G_ACTION_GROUP (muxer->parent), action_name, parameter); g_action_group_activate_action (G_ACTION_GROUP (muxer->parent), action_name, parameter);
} }
static GVariant *
get_platform_data (void)
{
gchar time[32];
GVariantBuilder *builder;
GVariant *result;
g_snprintf (time, 32, "_TIME%d", clutter_get_current_event_time ());
builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}"));
g_variant_builder_add (builder, "{sv}", "desktop-startup-id",
g_variant_new_string (time));
result = g_variant_builder_end (builder);
g_variant_builder_unref (builder);
return result;
}
static void static void
gtk_action_muxer_change_action_state (GActionGroup *action_group, gtk_action_muxer_change_action_state (GActionGroup *action_group,
const gchar *action_name, const gchar *action_name,
@ -425,7 +447,15 @@ gtk_action_muxer_change_action_state (GActionGroup *action_group,
group = gtk_action_muxer_find_group (muxer, action_name, &unprefixed_name); group = gtk_action_muxer_find_group (muxer, action_name, &unprefixed_name);
if (group) if (group)
g_action_group_change_action_state (group->group, unprefixed_name, state); {
if (G_IS_REMOTE_ACTION_GROUP (group->group))
g_remote_action_group_change_action_state_full (G_REMOTE_ACTION_GROUP (group->group),
unprefixed_name,
state,
get_platform_data ());
else
g_action_group_change_action_state (group->group, unprefixed_name, state);
}
else if (muxer->parent) else if (muxer->parent)
g_action_group_change_action_state (G_ACTION_GROUP (muxer->parent), action_name, state); g_action_group_change_action_state (G_ACTION_GROUP (muxer->parent), action_name, state);
} }