summaryrefslogtreecommitdiff
path: root/gtk/gtkspinbutton.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2001-06-29 01:59:02 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-06-29 01:59:02 +0000
commit0bee26c7bac6928f05f6d928407e03f5bddbddff (patch)
treeb6e040f5702bb1e82dcf6dc20c5cc39976712e7d /gtk/gtkspinbutton.c
parent00f85bf815499a651ecec41fcccb234b56c2f383 (diff)
downloadgtk+-0bee26c7bac6928f05f6d928407e03f5bddbddff.tar.gz
Clip the retrieved image data to the screen, using a server grab to avoid
2001-06-28 Havoc Pennington <hp@pobox.com> * gdk/x11/gdkimage-x11.c (_gdk_x11_get_image): Clip the retrieved image data to the screen, using a server grab to avoid race conditions. * gtk/gtkitemfactory.c (gtk_item_factory_create_item): remove check for NULL return from gtk_image_new_from_stock(), it never returns NULL. (gtk_item_factory_create_item): fix bug where we parsed the stock ID as an inline pixbuf * gtk/gtktext.c (gtk_text_key_press): numeric keypad support * gtk/gtkspinbutton.c (gtk_spin_button_key_press): numeric keypad support (should be using binding set here) * gtk/gtkoptionmenu.c (gtk_option_menu_key_press): numeric keypad support (should be using binding set here) * gtk/gtkmenushell.c (gtk_menu_shell_class_init): numeric keypad support * gtk/gtkmenu.c (gtk_menu_class_init): numeric keypad support * gtk/gtkmenubar.c (gtk_menu_bar_class_init): numeric keypad * gtk/gtklistitem.c (gtk_list_item_class_init): numeric keypad * gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress): keypad * gtk/gtkfilesel.c (gtk_file_selection_key_press): keypad * gtk/gtkentry.c (gtk_entry_class_init): numeric keypad fixes * gtk/gtkctree.c (gtk_ctree_class_init): numeric keypad support * gtk/gtkcolorsel.c (palette_activate): keypad support (of course, should be binding-setted) * gtk/gtkwindow.c (gtk_window_class_init): numeric keypad fixes * gtk/gtkclist.c (gtk_clist_class_init): numeric keypad fixes * gtk/gtkcalendar.c: numeric keypad fixes * gtk/gtktextview.c (gtk_text_view_class_init): numeric keypad support * gdk/gdkwindow.c (gdk_window_get_clip_region): fix infinite loop screwup * gdk/gdkpixbuf-render.c (gdk_pixbuf_render_to_drawable_alpha): clip the render area to the drawable's clip region in advance, so we don't get data from the server that we don't need. * gdk/gdkpixbuf-render.c (gdk_pixbuf_render_to_drawable_alpha): check return value of gdk_pixbuf_get_from_drawable(), fall back to bilevel alpha if we can't get the pixbuf to composite against. * gdk/gdkdraw.c (gdk_drawable_get_image): set the image colormap * gdk/gdkimage.c (gdk_image_get_colormap): add gdk_image_set_colormap, gdk_image_get_colormap * gdk/gdkpixbuf-drawable.c (rgbconvert): Change all converters to take a region of the image, instead of converting the entire image. * gtk/gtkwidget.h (struct _GtkWidgetClass): add show_help keybinding signal. Add default bindings for it. Add default handler for show_help that shows the tooltip for the widget. * gtk/gtkdialog.c (gtk_dialog_class_init): add binding set and "close" keybinding signal, remove key press handler. * gtk/gtktooltips.c (gtk_tooltips_set_colors): Just remove this, it's not our usual practice to leave a deprecated function around with a runtime warning, plus we don't want it to appear in docs, plus if we make them yellow no one will want to change them anyhow.
Diffstat (limited to 'gtk/gtkspinbutton.c')
-rw-r--r--gtk/gtkspinbutton.c195
1 files changed, 104 insertions, 91 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c
index 324aa87504..df69180b38 100644
--- a/gtk/gtkspinbutton.c
+++ b/gtk/gtkspinbutton.c
@@ -1154,7 +1154,8 @@ gtk_spin_button_key_press (GtkWidget *widget,
GtkSpinButton *spin;
gint key;
gboolean key_repeat = FALSE;
-
+ gboolean retval = FALSE;
+
g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_SPIN_BUTTON (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
@@ -1164,100 +1165,112 @@ gtk_spin_button_key_press (GtkWidget *widget,
key_repeat = (event->time == spin->ev_time);
- if (GTK_ENTRY (widget)->editable &&
- (key == GDK_Up || key == GDK_Down ||
- key == GDK_Page_Up || key == GDK_Page_Down))
- gtk_spin_button_update (spin);
-
- switch (key)
+ if (GTK_ENTRY (widget)->editable)
{
- case GDK_Up:
-
- if (GTK_WIDGET_HAS_FOCUS (widget))
- {
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget),
- "key_press_event");
- if (!key_repeat)
- spin->timer_step = spin->adjustment->step_increment;
-
- gtk_spin_button_real_spin (spin, spin->timer_step);
-
- if (key_repeat)
- {
- if (spin->climb_rate > 0.0 && spin->timer_step
- < spin->adjustment->page_increment)
- {
- if (spin->timer_calls < MAX_TIMER_CALLS)
- spin->timer_calls++;
- else
- {
- spin->timer_calls = 0;
- spin->timer_step += spin->climb_rate;
- }
- }
- }
- return TRUE;
- }
- return FALSE;
-
- case GDK_Down:
-
- if (GTK_WIDGET_HAS_FOCUS (widget))
- {
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget),
- "key_press_event");
- if (!key_repeat)
- spin->timer_step = spin->adjustment->step_increment;
-
- gtk_spin_button_real_spin (spin, -spin->timer_step);
-
- if (key_repeat)
- {
- if (spin->climb_rate > 0.0 && spin->timer_step
- < spin->adjustment->page_increment)
- {
- if (spin->timer_calls < MAX_TIMER_CALLS)
- spin->timer_calls++;
- else
- {
- spin->timer_calls = 0;
- spin->timer_step += spin->climb_rate;
- }
- }
- }
- return TRUE;
- }
- return FALSE;
-
- case GDK_Page_Up:
-
- if (event->state & GDK_CONTROL_MASK)
- {
- gdouble diff = spin->adjustment->upper - spin->adjustment->value;
- if (diff > EPSILON)
- gtk_spin_button_real_spin (spin, diff);
- }
- else
- gtk_spin_button_real_spin (spin, spin->adjustment->page_increment);
- return TRUE;
-
- case GDK_Page_Down:
+ switch (key)
+ {
+ case GDK_KP_Up:
+ case GDK_Up:
+
+ if (GTK_WIDGET_HAS_FOCUS (widget))
+ {
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget),
+ "key_press_event");
+ if (!key_repeat)
+ spin->timer_step = spin->adjustment->step_increment;
+
+ gtk_spin_button_real_spin (spin, spin->timer_step);
+
+ if (key_repeat)
+ {
+ if (spin->climb_rate > 0.0 && spin->timer_step
+ < spin->adjustment->page_increment)
+ {
+ if (spin->timer_calls < MAX_TIMER_CALLS)
+ spin->timer_calls++;
+ else
+ {
+ spin->timer_calls = 0;
+ spin->timer_step += spin->climb_rate;
+ }
+ }
+ }
+ retval = TRUE;
+ }
+ break;
+
+ case GDK_KP_Down:
+ case GDK_Down:
+
+ if (GTK_WIDGET_HAS_FOCUS (widget))
+ {
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget),
+ "key_press_event");
+ if (!key_repeat)
+ spin->timer_step = spin->adjustment->step_increment;
+
+ gtk_spin_button_real_spin (spin, -spin->timer_step);
+
+ if (key_repeat)
+ {
+ if (spin->climb_rate > 0.0 && spin->timer_step
+ < spin->adjustment->page_increment)
+ {
+ if (spin->timer_calls < MAX_TIMER_CALLS)
+ spin->timer_calls++;
+ else
+ {
+ spin->timer_calls = 0;
+ spin->timer_step += spin->climb_rate;
+ }
+ }
+ }
+ retval = TRUE;
+ }
+ break;
+
+ case GDK_KP_Page_Up:
+ case GDK_Page_Up:
+
+ if (event->state & GDK_CONTROL_MASK)
+ {
+ gdouble diff = spin->adjustment->upper - spin->adjustment->value;
+ if (diff > EPSILON)
+ gtk_spin_button_real_spin (spin, diff);
+ }
+ else
+ gtk_spin_button_real_spin (spin, spin->adjustment->page_increment);
+
+ retval = TRUE;
+ break;
+
+ case GDK_KP_Page_Down:
+ case GDK_Page_Down:
+
+ if (event->state & GDK_CONTROL_MASK)
+ {
+ gdouble diff = spin->adjustment->value - spin->adjustment->lower;
+ if (diff > EPSILON)
+ gtk_spin_button_real_spin (spin, -diff);
+ }
+ else
+ gtk_spin_button_real_spin (spin, -spin->adjustment->page_increment);
+
+ retval = TRUE;
+ break;
+
+ default:
+ break;
+ }
+ }
- if (event->state & GDK_CONTROL_MASK)
- {
- gdouble diff = spin->adjustment->value - spin->adjustment->lower;
- if (diff > EPSILON)
- gtk_spin_button_real_spin (spin, -diff);
- }
- else
- gtk_spin_button_real_spin (spin, -spin->adjustment->page_increment);
+ if (retval)
+ {
+ gtk_spin_button_update (spin);
return TRUE;
-
- default:
- break;
}
-
- return GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event);
+ else
+ return GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event);
}
static gint