[gimp] Bug 754171 - cmd - missing modifier key to configure input controllers
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 754171 - cmd - missing modifier key to configure input controllers
- Date: Tue, 22 Nov 2016 18:47:54 +0000 (UTC)
commit 21ab694715df19654758a0dcca44fad7ba3816f2
Author: Michael Natterer <mitch gimp org>
Date: Tue Nov 22 19:46:24 2016 +0100
Bug 754171 - cmd - missing modifier key to configure input controllers
Forgot GimpControllerMouse when fixing this bug. Also apply
the cleanup from the commit below.
app/widgets/gimpcontrollermouse.c | 181 +++++++++++++++++++------------------
1 files changed, 95 insertions(+), 86 deletions(-)
---
diff --git a/app/widgets/gimpcontrollermouse.c b/app/widgets/gimpcontrollermouse.c
index 9c471ed..6e2bfd5 100644
--- a/app/widgets/gimpcontrollermouse.c
+++ b/app/widgets/gimpcontrollermouse.c
@@ -22,6 +22,7 @@
#include "config.h"
#include <gegl.h>
+#undef GDK_MULTIHEAD_SAFE /* for gdk_keymap_get_default() */
#include <gtk/gtk.h>
#include "libgimpwidgets/gimpwidgets.h"
@@ -35,17 +36,15 @@
#include "gimp-intl.h"
-#define MODIFIER_MASK (GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK)
-
-
typedef struct _MouseEvent MouseEvent;
struct _MouseEvent
{
- const guint button;
- const GdkModifierType modifiers;
- const gchar *name;
- const gchar *blurb;
+ const guint button;
+ const gchar *modifier_string;
+ GdkModifierType modifiers;
+ const gchar *name;
+ const gchar *blurb;
};
@@ -66,129 +65,129 @@ G_DEFINE_TYPE (GimpControllerMouse, gimp_controller_mouse,
static MouseEvent mouse_events[] =
{
- { 8, 0,
+ { 8, NULL, 0,
"8",
N_("Button 8") },
- { 8, GDK_SHIFT_MASK,
+ { 8, "<Shift>", 0,
"8-shift",
N_("Button 8") },
- { 8, GDK_CONTROL_MASK,
- "8-control",
+ { 8, "<Primary>", 0,
+ "8-primary",
N_("Button 8") },
- { 8, GDK_MOD1_MASK,
+ { 8, "<Alt>", 0,
"8-alt",
N_("Button 8") },
- { 8, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "8-shift-control",
+ { 8, "<Shift><Primary>", 0,
+ "8-shift-primary",
N_("Button 8") },
- { 8, GDK_MOD1_MASK | GDK_SHIFT_MASK,
+ { 8, "<Shift><Alt>", 0,
"8-shift-alt",
N_("Button 8") },
- { 8, GDK_MOD1_MASK | GDK_CONTROL_MASK,
- "8-control-alt",
+ { 8, "<Primary><Alt>", 0,
+ "8-primary-alt",
N_("Button 8") },
- { 8, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "8-shift-control-alt",
+ { 8, "<Shift><Primary><Alt>", 0,
+ "8-shift-primary-alt",
N_("Button 8") },
- { 9, 0,
+ { 9, NULL, 0,
"9",
N_("Button 9") },
- { 9, GDK_SHIFT_MASK,
+ { 9, "<Shift>", 0,
"9-shift",
N_("Button 9") },
- { 9, GDK_CONTROL_MASK,
- "9-control",
+ { 9, "<Primary>", 0,
+ "9-primary",
N_("Button 9") },
- { 9, GDK_MOD1_MASK,
+ { 9, "<Alt>", 0,
"9-alt",
N_("Button 9") },
- { 9, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "9-shift-control",
+ { 9, "<Shift><Primary>", 0,
+ "9-shift-primary",
N_("Button 9") },
- { 9, GDK_MOD1_MASK | GDK_SHIFT_MASK,
+ { 9, "<Shift><Alt>", 0,
"9-shift-alt",
N_("Button 9") },
- { 9, GDK_MOD1_MASK | GDK_CONTROL_MASK,
- "9-control-alt",
+ { 9, "<Primary><Alt>", 0,
+ "9-primary-alt",
N_("Button 9") },
- { 9, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "9-shift-control-alt",
+ { 9, "<Shift><Primary><Alt>", 0,
+ "9-shift-primary-alt",
N_("Button 9") },
- { 10, 0,
+ { 10, NULL, 0,
"10",
N_("Button 10") },
- { 10, GDK_SHIFT_MASK,
+ { 10, "<Shift>", 0,
"10-shift",
N_("Button 10") },
- { 10, GDK_CONTROL_MASK,
- "10-control",
+ { 10, "<Primary>", 0,
+ "10-primary",
N_("Button 10") },
- { 10, GDK_MOD1_MASK,
+ { 10, "<Alt>", 0,
"10-alt",
N_("Button 10") },
- { 10, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "10-shift-control",
+ { 10, "<Shift><Primary>", 0,
+ "10-shift-primary",
N_("Button 10") },
- { 10, GDK_MOD1_MASK | GDK_SHIFT_MASK,
+ { 10, "<Shift><Alt>", 0,
"10-shift-alt",
N_("Button 10") },
- { 10, GDK_MOD1_MASK | GDK_CONTROL_MASK,
- "10-control-alt",
+ { 10, "<Primary><Alt>", 0,
+ "10-primary-alt",
N_("Button 10") },
- { 10, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "10-shift-control-alt",
+ { 10, "<Shift><Primary><Alt>", 0,
+ "10-shift-primary-alt",
N_("Button 10") },
- { 11, 0,
+ { 11, NULL, 0,
"11",
N_("Button 11") },
- { 11, GDK_SHIFT_MASK,
+ { 11, "<Shift>", 0,
"11-shift",
N_("Button 11") },
- { 11, GDK_CONTROL_MASK,
- "11-control",
+ { 11, "<Primary>", 0,
+ "11-primary",
N_("Button 11") },
- { 11, GDK_MOD1_MASK,
+ { 11, "<Alt>", 0,
"11-alt",
N_("Button 11") },
- { 11, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "11-shift-control",
+ { 11, "<Shift><Primary>", 0,
+ "11-shift-primary",
N_("Button 11") },
- { 11, GDK_MOD1_MASK | GDK_SHIFT_MASK,
+ { 11, "<Shift><Alt>", 0,
"11-shift-alt",
N_("Button 11") },
- { 11, GDK_MOD1_MASK | GDK_CONTROL_MASK,
- "11-control-alt",
+ { 11, "<Primary><Alt>", 0,
+ "11-primary-alt",
N_("Button 11") },
- { 11, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "11-shift-control-alt",
+ { 11, "<Shift><Primary><Alt>", 0,
+ "11-shift-primary-alt",
N_("Button 11") },
- { 12, 0,
+ { 12, NULL, 0,
"12",
N_("Button 12") },
- { 12, GDK_SHIFT_MASK,
+ { 12, "<Shift>", 0,
"12-shift",
N_("Button 12") },
- { 12, GDK_CONTROL_MASK,
- "12-control",
+ { 12, "<Primary>", 0,
+ "12-primary",
N_("Button 12") },
- { 12, GDK_MOD1_MASK,
+ { 12, "<Alt>", 0,
"12-alt",
N_("Button 12") },
- { 12, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "12-shift-control",
+ { 12, "<Shift><Primary>", 0,
+ "12-shift-primary",
N_("Button 12") },
- { 12, GDK_MOD1_MASK | GDK_SHIFT_MASK,
+ { 12, "<Shift><Alt>", 0,
"12-shift-alt",
N_("Button 12") },
- { 12, GDK_MOD1_MASK | GDK_CONTROL_MASK,
- "12-control-alt",
+ { 12, "<Primary><Alt>", 0,
+ "12-primary-alt",
N_("Button 12") },
- { 12, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "12-shift-control-alt",
+ { 12, "<Shift><Primary><Alt>", 0,
+ "12-shift-primary-alt",
N_("Button 12") },
};
@@ -217,17 +216,25 @@ gimp_controller_mouse_init (GimpControllerMouse *mouse)
if (! event_names_initialized)
{
- gint i;
+ GdkKeymap *keymap = gdk_keymap_get_default ();
+ gint i;
for (i = 0; i < G_N_ELEMENTS (mouse_events); i++)
{
- MouseEvent *wevent = &mouse_events[i];
+ MouseEvent *mevent = &mouse_events[i];
- if (wevent->modifiers != 0)
+ if (mevent->modifier_string)
{
- wevent->blurb =
- g_strdup_printf ("%s (%s)", gettext (wevent->blurb),
- gimp_get_mod_string (wevent->modifiers));
+ gtk_accelerator_parse (mevent->modifier_string, NULL,
+ &mevent->modifiers);
+ gdk_keymap_map_virtual_modifiers (keymap, &mevent->modifiers);
+ }
+
+ if (mevent->modifiers != 0)
+ {
+ mevent->blurb =
+ g_strdup_printf ("%s (%s)", gettext (mevent->blurb),
+ gimp_get_mod_string (mevent->modifiers));
}
}
@@ -281,24 +288,26 @@ gimp_controller_mouse_button (GimpControllerMouse *mouse,
g_return_val_if_fail (GIMP_IS_CONTROLLER_MOUSE (mouse), FALSE);
g_return_val_if_fail (bevent != NULL, FALSE);
- for (i = 0; i < G_N_ELEMENTS (mouse_events); i++)
+ /* start with the last event because the last ones in the
+ * up,down,left,right groups have the most keyboard modifiers
+ */
+ for (i = G_N_ELEMENTS (mouse_events) - 1; i >= 0; i--)
{
- if (mouse_events[i].button == bevent->button)
+ if (mouse_events[i].button == bevent->button &&
+ (mouse_events[i].modifiers & bevent->state) ==
+ mouse_events[i].modifiers)
{
- if ((bevent->state & MODIFIER_MASK) == mouse_events[i].modifiers)
- {
- GimpControllerEvent controller_event;
- GimpControllerEventTrigger *trigger;
+ GimpControllerEvent controller_event;
+ GimpControllerEventTrigger *trigger;
- trigger = (GimpControllerEventTrigger *) &controller_event;
+ trigger = (GimpControllerEventTrigger *) &controller_event;
- trigger->type = GIMP_CONTROLLER_EVENT_TRIGGER;
- trigger->source = GIMP_CONTROLLER (mouse);
- trigger->event_id = i;
+ trigger->type = GIMP_CONTROLLER_EVENT_TRIGGER;
+ trigger->source = GIMP_CONTROLLER (mouse);
+ trigger->event_id = i;
- return gimp_controller_event (GIMP_CONTROLLER (mouse),
- &controller_event);
- }
+ return gimp_controller_event (GIMP_CONTROLLER (mouse),
+ &controller_event);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]