forked from AuroraMiddleware/gtk
GtkPadController: Make ring/strip actions be activated with the axis value
This way these axes may be used in detail by the implementors of pad GActions. https://bugzilla.gnome.org/show_bug.cgi?id=770026
This commit is contained in:
parent
b24a865d9b
commit
e9771d642f
@ -61,6 +61,10 @@
|
||||
* …
|
||||
* pad_controller = gtk_pad_controller_new (window, action_group, NULL);
|
||||
* ]|
|
||||
*
|
||||
* The actions belonging to rings/strips will be activated with a parameter
|
||||
* of type %G_VARIANT_TYPE_DOUBLE bearing the value of the given axis, it
|
||||
* is required that those are made stateful and accepting this #GVariantType.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
@ -154,6 +158,16 @@ gtk_pad_controller_activate_action (GtkPadController *controller,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_pad_controller_activate_action_with_axis (GtkPadController *controller,
|
||||
const GtkPadActionEntry *entry,
|
||||
gdouble value)
|
||||
{
|
||||
g_action_group_activate_action (controller->action_group,
|
||||
entry->action_name,
|
||||
g_variant_new_double (value));
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_pad_controller_handle_mode_switch (GtkPadController *controller,
|
||||
GdkDevice *pad,
|
||||
@ -253,7 +267,16 @@ gtk_pad_controller_handle_event (GtkEventController *controller,
|
||||
if (!entry)
|
||||
return GDK_EVENT_PROPAGATE;
|
||||
|
||||
gtk_pad_controller_activate_action (pad_controller, entry);
|
||||
if (event->type == GDK_PAD_RING ||
|
||||
event->type == GDK_PAD_STRIP)
|
||||
{
|
||||
gtk_pad_controller_activate_action_with_axis (pad_controller, entry,
|
||||
event->pad_axis.value);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_pad_controller_activate_action (pad_controller, entry);
|
||||
}
|
||||
|
||||
return GDK_EVENT_STOP;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user