diff options
| author | su_v <suv-sf@users.sourceforge.net> | 2013-01-22 14:40:50 +0000 |
|---|---|---|
| committer | ~suv <suv-sf@users.sourceforge.net> | 2013-01-22 14:40:50 +0000 |
| commit | 34baadb48632ee5c2f39cba0411b7810265bdc6a (patch) | |
| tree | c7a76b25fd57605c40082d32644ff9a0da22d20e /src/widgets/spinbutton-events.cpp | |
| parent | merge from trunk (r12005) (diff) | |
| parent | Filters. Add missing inkscape namespace declaration for 'Channel Painting' (diff) | |
| download | inkscape-34baadb48632ee5c2f39cba0411b7810265bdc6a.tar.gz inkscape-34baadb48632ee5c2f39cba0411b7810265bdc6a.zip | |
merge from trunk (r12051)
(bzr r11668.1.48)
Diffstat (limited to 'src/widgets/spinbutton-events.cpp')
| -rw-r--r-- | src/widgets/spinbutton-events.cpp | 184 |
1 files changed, 100 insertions, 84 deletions
diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp index 96d746468..7a481aea8 100644 --- a/src/widgets/spinbutton-events.cpp +++ b/src/widgets/spinbutton-events.cpp @@ -3,7 +3,9 @@ * * Authors: * bulia byak <bulia@users.sourceforge.net> + * Jon A. Cruz <jon@joncruz.org> * + * Copyright (C) 2013 authors * Copyright (C) 2003 authors * * Released under GNU GPL, read the file 'COPYING' for more information @@ -22,122 +24,136 @@ #include "widget-sizes.h" #include "spinbutton-events.h" -gboolean -spinbutton_focus_in (GtkWidget *w, GdkEventKey * /*event*/, gpointer /*data*/) +gboolean spinbutton_focus_in(GtkWidget *w, GdkEventKey * /*event*/, gpointer /*data*/) { - gdouble *ini = static_cast<gdouble *>(g_object_get_data(G_OBJECT(w), "ini")); - if (ini) g_free (ini); // free the old value if any + gdouble *ini = static_cast<gdouble *>(g_object_get_data(G_OBJECT(w), "ini")); + if (ini) { + g_free(ini); // free the old value if any + } - // retrieve the value - ini = g_new (gdouble, 1); - *ini = gtk_spin_button_get_value (GTK_SPIN_BUTTON(w)); + // retrieve the value + ini = g_new(gdouble, 1); + *ini = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); - // remember it - g_object_set_data (G_OBJECT (w), "ini", ini); + // remember it + g_object_set_data(G_OBJECT(w), "ini", ini); - return FALSE; // I didn't consume the event + return FALSE; // I didn't consume the event } -void -spinbutton_undo (GtkWidget *w) +void spinbutton_undo(GtkWidget *w) { - gdouble *ini = static_cast<gdouble *>(g_object_get_data(G_OBJECT (w), "ini")); - if (ini) { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), *ini); - } + gdouble *ini = static_cast<gdouble *>(g_object_get_data(G_OBJECT(w), "ini")); + if (ini) { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), *ini); + } } -void -spinbutton_defocus (GtkWidget *container) +void spinbutton_defocus(GtkWidget *container) { - // defocus spinbuttons by moving focus to the canvas, unless "stay" is on - gboolean stay = GPOINTER_TO_INT(g_object_get_data(G_OBJECT (container), "stay")); - if (stay) { - g_object_set_data (G_OBJECT (container), "stay", GINT_TO_POINTER (FALSE)); - } else { - GtkWidget *canvas = GTK_WIDGET(g_object_get_data(G_OBJECT (container), "dtw")); - if (canvas) { - gtk_widget_grab_focus (GTK_WIDGET(canvas)); - } - } + // defocus spinbuttons by moving focus to the canvas, unless "stay" is on + gboolean stay = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(container), "stay")); + if (stay) { + g_object_set_data(G_OBJECT(container), "stay", GINT_TO_POINTER(FALSE)); + } else { + GtkWidget *canvas = GTK_WIDGET(g_object_get_data(G_OBJECT(container), "dtw")); + if (canvas) { + gtk_widget_grab_focus(GTK_WIDGET(canvas)); + } + } } -gboolean spinbutton_keypress(GtkWidget *w, GdkEventKey *event, gpointer data) +gboolean spinbutton_keypress(GtkWidget *w, GdkEventKey *event, gpointer /*data*/) { - gdouble v; - gdouble step; - gdouble page; + gboolean result = FALSE; // I didn't consume the event - switch (get_group0_keyval (event)) { + switch (get_group0_keyval(event)) { case GDK_KEY_Escape: // defocus - spinbutton_undo(w); - spinbutton_defocus(w); - return TRUE; // I consumed the event - break; + spinbutton_undo(w); + spinbutton_defocus(w); + result = TRUE; // I consumed the event + break; case GDK_KEY_Return: // defocus case GDK_KEY_KP_Enter: - spinbutton_defocus(w); - return TRUE; // I consumed the event - break; + spinbutton_defocus(w); + result = TRUE; // I consumed the event + break; case GDK_KEY_Tab: case GDK_KEY_ISO_Left_Tab: - // set the flag meaning "do not leave toolbar when changing value" - g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); - return FALSE; // I didn't consume the event - break; + // set the flag meaning "do not leave toolbar when changing value" + g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); + result = FALSE; // I didn't consume the event + break; - // The following keys are processed manually because GTK implements them in strange ways - // (increments start with double step value and seem to grow as you press the key continuously) + // The following keys are processed manually because GTK implements them in strange ways + // (increments start with double step value and seem to grow as you press the key continuously) case GDK_KEY_Up: case GDK_KEY_KP_Up: - g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); - v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); - gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); - v += step; - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); - return TRUE; // I consumed the event - break; + { + g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); + gdouble v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); + gdouble step = 0; + gdouble page = 0; + gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); + v += step; + gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); + result = TRUE; // I consumed the event + break; + } case GDK_KEY_Down: case GDK_KEY_KP_Down: - g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); - v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); - gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); - v -= step; - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); - return TRUE; // I consumed the event - break; + { + g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); + gdouble v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); + gdouble step = 0; + gdouble page = 0; + gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); + v -= step; + gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); + result = TRUE; // I consumed the event + break; + } case GDK_KEY_Page_Up: case GDK_KEY_KP_Page_Up: - g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); - v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); - gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); - v += page; - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); - return TRUE; // I consumed the event - break; + { + g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); + gdouble v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); + gdouble step = 0; + gdouble page = 0; + gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); + v += page; + gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); + result = TRUE; // I consumed the event + break; + } case GDK_KEY_Page_Down: case GDK_KEY_KP_Page_Down: - g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); - v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); - gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); - v -= page; - gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); - return TRUE; // I consumed the event - break; + { + g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); + gdouble v = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); + gdouble step = 0; + gdouble page = 0; + gtk_spin_button_get_increments(GTK_SPIN_BUTTON(w), &step, &page); + v -= page; + gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); + result = TRUE; // I consumed the event + break; + } case GDK_KEY_z: case GDK_KEY_Z: - g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); - if (event->state & GDK_CONTROL_MASK) { - spinbutton_undo(w); - return TRUE; // I consumed the event - } - break; + g_object_set_data(G_OBJECT(w), "stay", GINT_TO_POINTER(TRUE)); + if (event->state & GDK_CONTROL_MASK) { + spinbutton_undo(w); + result = TRUE; // I consumed the event + } + break; default: - return FALSE; - break; - } - return FALSE; // I didn't consume the event + result = FALSE; + break; + } + + return result; } /* |
