GtkPadController: Notify actions back to the windowing on wayland

This allows applications to provide descriptions of the actions performed
by each pad feature. pass the GtkPadActionEntry labels for this.

https://bugzilla.gnome.org/show_bug.cgi?id=770026
This commit is contained in:
Carlos Garnacho 2016-08-04 19:49:27 +02:00
parent 87af999b5d
commit e66a821a74

View File

@ -160,6 +160,36 @@ gtk_pad_controller_handle_mode_switch (GtkPadController *controller,
guint group,
guint mode)
{
#ifdef GDK_WINDOWING_WAYLAND
if (GDK_IS_WAYLAND_DISPLAY (gdk_device_get_display (pad)))
{
const GtkPadActionEntry *entry;
gint elem, idx, n_features;
for (elem = GTK_PAD_ACTION_BUTTON; elem <= GTK_PAD_ACTION_STRIP; elem++)
{
n_features = gdk_device_pad_get_n_features (GDK_DEVICE_PAD (pad),
elem);
for (idx = 0; idx < n_features; idx++)
{
if (gdk_device_pad_get_feature_group (GDK_DEVICE_PAD (pad),
elem, idx) != group)
continue;
entry = gtk_pad_action_find_match (controller, elem, idx, mode);
if (!entry)
continue;
if (!g_action_group_has_action (controller->action_group,
entry->action_name))
continue;
gdk_wayland_device_pad_set_feedback (pad, elem, idx,
g_dgettext (NULL, entry->label));
}
}
}
#endif
}
static gboolean