diff options
author | Havoc Pennington <hp@pobox.com> | 2001-06-29 01:59:02 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2001-06-29 01:59:02 +0000 |
commit | 0bee26c7bac6928f05f6d928407e03f5bddbddff (patch) | |
tree | b6e040f5702bb1e82dcf6dc20c5cc39976712e7d /gtk/gtkspinbutton.c | |
parent | 00f85bf815499a651ecec41fcccb234b56c2f383 (diff) | |
download | gtk+-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.c | 195 |
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 |