From 23456dc25350aa27a2ad32a95aaff47cd09e3061 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 16 Feb 2008 17:51:02 +0000 Subject: [PATCH] app/display/gimpdisplayshell-callbacks.c 2008-02-16 Michael Natterer * app/display/gimpdisplayshell-callbacks.c * app/tools/gimpforegroundselecttool.c * app/tools/gimpimagemaptool.c * app/tools/gimpiscissorstool.c * app/tools/gimppolygonselecttool.c * app/tools/gimprectangletool.c * app/tools/gimptransformtool.c * app/tools/gimpvectortool.c * app/widgets/gimpcontainerpopup.c * app/widgets/gimppaletteview.c * libgimpwidgets/gimpcolorhexentry.c * libgimpwidgets/gimpnumberpairentry.c * plug-ins/script-fu/script-fu-console.c: Unify the handling of various "Enter" and "Space" keysyms all over the place. Fixes bug #516544 (also see gtk bug #515047). svn path=/trunk/; revision=24894 --- ChangeLog | 18 ++++++++ app/display/gimpdisplayshell-callbacks.c | 14 ++++-- app/tools/gimpforegroundselecttool.c | 3 +- app/tools/gimpimagemaptool.c | 3 +- app/tools/gimpiscissorstool.c | 3 +- app/tools/gimppolygonselecttool.c | 3 +- app/tools/gimprectangletool.c | 3 +- app/tools/gimptransformtool.c | 3 +- app/tools/gimpvectortool.c | 3 +- app/widgets/gimpcontainerpopup.c | 4 ++ app/widgets/gimppaletteview.c | 8 ++-- libgimpwidgets/gimpcolorhexentry.c | 57 ++++++++++++++---------- libgimpwidgets/gimpnumberpairentry.c | 4 +- plug-ins/script-fu/script-fu-console.c | 2 + 14 files changed, 90 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4d095efd0b..65ae4c4f50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2008-02-16 Michael Natterer + + * app/display/gimpdisplayshell-callbacks.c + * app/tools/gimpforegroundselecttool.c + * app/tools/gimpimagemaptool.c + * app/tools/gimpiscissorstool.c + * app/tools/gimppolygonselecttool.c + * app/tools/gimprectangletool.c + * app/tools/gimptransformtool.c + * app/tools/gimpvectortool.c + * app/widgets/gimpcontainerpopup.c + * app/widgets/gimppaletteview.c + * libgimpwidgets/gimpcolorhexentry.c + * libgimpwidgets/gimpnumberpairentry.c + * plug-ins/script-fu/script-fu-console.c: Unify the handling of + various "Enter" and "Space" keysyms all over the place. Fixes bug + #516544 (also see gtk bug #515047). + 2008-02-15 Kevin Cozens * configure.in: Adding a ; to the end of the list of mime types in diff --git a/app/display/gimpdisplayshell-callbacks.c b/app/display/gimpdisplayshell-callbacks.c index cb0a10ea76..52e5707332 100644 --- a/app/display/gimpdisplayshell-callbacks.c +++ b/app/display/gimpdisplayshell-callbacks.c @@ -141,7 +141,8 @@ gimp_display_shell_events (GtkWidget *widget, if (event->type == GDK_KEY_PRESS) { - if (kevent->keyval == GDK_space && shell->space_release_pending) + if ((kevent->keyval == GDK_space || + kevent->keyval == GDK_KP_Space) && shell->space_release_pending) { shell->space_pressed = TRUE; shell->space_release_pending = FALSE; @@ -149,7 +150,8 @@ gimp_display_shell_events (GtkWidget *widget, } else { - if (kevent->keyval == GDK_space && shell->space_pressed) + if ((kevent->keyval == GDK_space || + kevent->keyval == GDK_KP_Space) && shell->space_pressed) { shell->space_pressed = FALSE; shell->space_release_pending = TRUE; @@ -164,12 +166,15 @@ gimp_display_shell_events (GtkWidget *widget, case GDK_Left: case GDK_Right: case GDK_Up: case GDK_Down: case GDK_space: + case GDK_KP_Space: case GDK_Tab: case GDK_ISO_Left_Tab: case GDK_Alt_L: case GDK_Alt_R: case GDK_Shift_L: case GDK_Shift_R: case GDK_Control_L: case GDK_Control_R: - case GDK_Return: case GDK_KP_Enter: + case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: case GDK_BackSpace: case GDK_Delete: break; @@ -1346,6 +1351,7 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas, { case GDK_Return: case GDK_KP_Enter: + case GDK_ISO_Enter: case GDK_BackSpace: case GDK_Delete: case GDK_Escape: @@ -1369,6 +1375,7 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas, break; case GDK_space: + case GDK_KP_Space: gimp_display_shell_space_pressed (shell, state, time); return_val = TRUE; break; @@ -1460,6 +1467,7 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas, switch (kevent->keyval) { case GDK_space: + case GDK_KP_Space: gimp_display_shell_space_released (shell, state, time); return_val = TRUE; break; diff --git a/app/tools/gimpforegroundselecttool.c b/app/tools/gimpforegroundselecttool.c index c9a3be2893..bd876618f1 100644 --- a/app/tools/gimpforegroundselecttool.c +++ b/app/tools/gimpforegroundselecttool.c @@ -398,8 +398,9 @@ gimp_foreground_select_tool_key_press (GimpTool *tool, switch (kevent->keyval) { - case GDK_KP_Enter: case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: gimp_foreground_select_tool_apply (fg_select, display); return TRUE; diff --git a/app/tools/gimpimagemaptool.c b/app/tools/gimpimagemaptool.c index 80a2a729c2..8913c45cd6 100644 --- a/app/tools/gimpimagemaptool.c +++ b/app/tools/gimpimagemaptool.c @@ -476,8 +476,9 @@ gimp_image_map_tool_key_press (GimpTool *tool, { switch (kevent->keyval) { - case GDK_KP_Enter: case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: gimp_image_map_tool_response (NULL, GTK_RESPONSE_OK, image_map_tool); return TRUE; diff --git a/app/tools/gimpiscissorstool.c b/app/tools/gimpiscissorstool.c index c8ed14e747..bccc6fafd3 100644 --- a/app/tools/gimpiscissorstool.c +++ b/app/tools/gimpiscissorstool.c @@ -1060,8 +1060,9 @@ gimp_iscissors_tool_key_press (GimpTool *tool, switch (kevent->keyval) { - case GDK_KP_Enter: case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: if (iscissors->connected && iscissors->mask) { gimp_iscissors_tool_apply (iscissors, display); diff --git a/app/tools/gimppolygonselecttool.c b/app/tools/gimppolygonselecttool.c index 4052423413..46c303b06d 100644 --- a/app/tools/gimppolygonselecttool.c +++ b/app/tools/gimppolygonselecttool.c @@ -412,8 +412,9 @@ gimp_polygon_select_tool_key_press (GimpTool *tool, handled_key = TRUE; break; - case GDK_KP_Enter: case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: gimp_polygon_select_tool_commit (poly_sel_tool, display); handled_key = TRUE; break; diff --git a/app/tools/gimprectangletool.c b/app/tools/gimprectangletool.c index ce9cd12511..a56ded5b14 100644 --- a/app/tools/gimprectangletool.c +++ b/app/tools/gimprectangletool.c @@ -1350,8 +1350,9 @@ gimp_rectangle_tool_key_press (GimpTool *tool, dy = 1; break; - case GDK_KP_Enter: case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: if (gimp_rectangle_tool_execute (rect_tool)) gimp_rectangle_tool_halt (rect_tool); return TRUE; diff --git a/app/tools/gimptransformtool.c b/app/tools/gimptransformtool.c index 231798fa17..7ae68637c9 100644 --- a/app/tools/gimptransformtool.c +++ b/app/tools/gimptransformtool.c @@ -505,8 +505,9 @@ gimp_transform_tool_key_press (GimpTool *tool, { switch (kevent->keyval) { - case GDK_KP_Enter: case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: gimp_transform_tool_response (NULL, GTK_RESPONSE_OK, trans_tool); return TRUE; diff --git a/app/tools/gimpvectortool.c b/app/tools/gimpvectortool.c index 4c189c1cd2..c50cab264f 100644 --- a/app/tools/gimpvectortool.c +++ b/app/tools/gimpvectortool.c @@ -767,8 +767,9 @@ gimp_vector_tool_key_press (GimpTool *tool, switch (kevent->keyval) { - case GDK_KP_Enter: case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: gimp_vector_tool_to_selection_extended (vector_tool, kevent->state); break; diff --git a/app/widgets/gimpcontainerpopup.c b/app/widgets/gimpcontainerpopup.c index 856594111f..57406bfcef 100644 --- a/app/widgets/gimpcontainerpopup.c +++ b/app/widgets/gimpcontainerpopup.c @@ -123,8 +123,12 @@ gimp_container_popup_class_init (GimpContainerPopupClass *klass) "confirm", 0); gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0, "confirm", 0); + gtk_binding_entry_add_signal (binding_set, GDK_ISO_Enter, 0, + "confirm", 0); gtk_binding_entry_add_signal (binding_set, GDK_space, 0, "confirm", 0); + gtk_binding_entry_add_signal (binding_set, GDK_KP_Space, 0, + "confirm", 0); } static void diff --git a/app/widgets/gimppaletteview.c b/app/widgets/gimppaletteview.c index 84489c2b57..4e031ca7b4 100644 --- a/app/widgets/gimppaletteview.c +++ b/app/widgets/gimppaletteview.c @@ -266,9 +266,11 @@ gimp_palette_view_key_press (GtkWidget *widget, GimpPaletteView *view = GIMP_PALETTE_VIEW (widget); if (view->selected && - (kevent->keyval == GDK_space || - kevent->keyval == GDK_Return || - kevent->keyval == GDK_KP_Enter)) + (kevent->keyval == GDK_space || + kevent->keyval == GDK_KP_Space || + kevent->keyval == GDK_Return || + kevent->keyval == GDK_KP_Enter || + kevent->keyval == GDK_ISO_Enter)) { g_signal_emit (view, view_signals[ENTRY_CLICKED], 0, view->selected, kevent->state); diff --git a/libgimpwidgets/gimpcolorhexentry.c b/libgimpwidgets/gimpcolorhexentry.c index 1c930033fd..8c333114f7 100644 --- a/libgimpwidgets/gimpcolorhexentry.c +++ b/libgimpwidgets/gimpcolorhexentry.c @@ -216,39 +216,48 @@ gimp_color_hex_entry_events (GtkWidget *widget, GdkEvent *event) { GimpColorHexEntry *entry = GIMP_COLOR_HEX_ENTRY (widget); - const gchar *text; - gchar buffer[8]; - guchar r, g, b; switch (event->type) { case GDK_KEY_PRESS: - if (((GdkEventKey *) event)->keyval != GDK_Return) - break; - /* else fall through */ + { + GdkEventKey *kevent = (GdkEventKey *) event; + + if (kevent->keyval != GDK_Return && + kevent->keyval != GDK_KP_Enter && + kevent->keyval != GDK_ISO_Enter) + break; + /* else fall through */ + } case GDK_FOCUS_CHANGE: - text = gtk_entry_get_text (GTK_ENTRY (widget)); + { + const gchar *text; + gchar buffer[8]; + guchar r, g, b; - gimp_rgb_get_uchar (&entry->color, &r, &g, &b); - g_snprintf (buffer, sizeof (buffer), "%.2x%.2x%.2x", r, g, b); + text = gtk_entry_get_text (GTK_ENTRY (widget)); - if (g_ascii_strcasecmp (buffer, text) != 0) - { - GimpRGB color; - gsize len = strlen (text); + gimp_rgb_get_uchar (&entry->color, &r, &g, &b); + g_snprintf (buffer, sizeof (buffer), "%.2x%.2x%.2x", r, g, b); - if (len > 0 && - (gimp_rgb_parse_hex (&color, text, len) || - gimp_rgb_parse_name (&color, text, -1))) - { - gimp_color_hex_entry_set_color (entry, &color); - } - else - { - gtk_entry_set_text (GTK_ENTRY (entry), buffer); - } - } + if (g_ascii_strcasecmp (buffer, text) != 0) + { + GimpRGB color; + gsize len = strlen (text); + + if (len > 0 && + (gimp_rgb_parse_hex (&color, text, len) || + gimp_rgb_parse_name (&color, text, -1))) + { + gimp_color_hex_entry_set_color (entry, &color); + } + else + { + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + } + } + } break; default: diff --git a/libgimpwidgets/gimpnumberpairentry.c b/libgimpwidgets/gimpnumberpairentry.c index eb53c3f87d..dc3d03a9dc 100644 --- a/libgimpwidgets/gimpnumberpairentry.c +++ b/libgimpwidgets/gimpnumberpairentry.c @@ -818,7 +818,9 @@ gimp_number_pair_entry_events (GtkWidget *widget, { GdkEventKey *kevent = (GdkEventKey *) event; - if (kevent->keyval != GDK_Return) + if (kevent->keyval != GDK_Return && + kevent->keyval != GDK_KP_Enter && + kevent->keyval != GDK_ISO_Enter) break; /* If parsing was done due to widgets focus being lost, we only change diff --git a/plug-ins/script-fu/script-fu-console.c b/plug-ins/script-fu/script-fu-console.c index 5e868bdfb9..5da14fb97d 100644 --- a/plug-ins/script-fu/script-fu-console.c +++ b/plug-ins/script-fu/script-fu-console.c @@ -564,6 +564,8 @@ script_fu_cc_key_function (GtkWidget *widget, switch (event->keyval) { case GDK_Return: + case GDK_KP_Enter: + case GDK_ISO_Enter: if (script_fu_cc_is_empty (console)) return TRUE;