summaryrefslogtreecommitdiff
path: root/gtk/gtkhscale.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@src.gnome.org>2001-04-28 20:18:29 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-04-28 20:18:29 +0000
commit7ad364135340a4f685c1a286589d2c90ce4f757d (patch)
tree0e0fde569fefd6e012ae6ab01c21e1d2e7b8db58 /gtk/gtkhscale.c
parentf06a725358e0997eaf3d02bc8257f2c3cf0043ca (diff)
downloadgtk+-7ad364135340a4f685c1a286589d2c90ce4f757d.tar.gz
voc Pennington <hp@redhat.com>
* gtk/gtktextlayout.c (gtk_text_layout_move_iter_to_previous_line): (gtk_text_layout_move_iter_to_next_line): fix these two for invisible text, lots of other stuff still hosed. * gtk/gtkcolorsel.c (gtk_color_selection_set_change_palette_hook): new function, replaces the get/set palette stuff. This function is intended for use by libgnomeui which should set the hook to a thing which sets the palette in GConf, and we need the GConf-to-xsettings proxy which will result in the change being propagated back to the GTK app. * gtk/gtkaccelgroup.c (gtk_accel_group_add): add note to warning about unusable signals that it may be because the signal has parameters. * gtk/gtkwidget.c (gtk_widget_modify_style): always copy the style, otherwise gtkrc.c won't know to create a new GtkStyle for it. (gtk_widget_modify_color_component): call gtk_widget_modify_style() so the rc style will get copied. (gtk_widget_modify_font): ditto * gtk/gtkrc.c: make a couple variables static * gtk/gtkcolorseldialog.c (gtk_color_selection_dialog_init): hide help button by default, since it does nothing * gtk/gtkcolorsel.c: add tooltips, work on key navigation, fool around with UI * gtk/gtkentry.c (gtk_entry_realize): request enter/leave notify so we can have tooltips * gtk/gtkhsv.c (gtk_hsv_realize): request enter/leave notify so we can have tooltips * gdk/gdkimage.h: mark gdk_image_new_bitmap with GDK_ENABLE_BROKEN, because its memory behavior is completely hosed. * gtk/gtknotebook.c: remove key press handler, replace with binding set, add numeric keypad support * gtk/gtktextview.c (gtk_text_view_class_init): accept KP_Delete * gtk/gtktext.c (gtk_text_key_press): add a bunch of KP keysyms * gtk/gtkentry.c (gtk_entry_class_init): accept GDK_KP_Delete in addition to plain Delete * gtk/gtktextview.c (gtk_text_view_key_press_event): accept GDK_KP_Enter in addition to GDK_Return * gtk/gtkfontsel.c (gtk_font_selection_size_key_press): connect to activate on entry instead of key press (gtk_font_selection_on_clist_key_press): get rid of this signal handler, not needed with new font sel. * gtk/gtkfilesel.c (gtk_file_selection_key_press): remove a no-longer-needed emit_stop_by_name(), just return TRUE * gtk/gtkhscrollbar.c, gtk/gtkvscrollbar.c: remove keybindings cruft, this widget is no longer focusable. * gtk/gtkrange.h, gtk/gtkrange.c, gtk/gtkvscale.c, gtk/gtkhscale.c: Get rid of trough_keys virtual function, add move_slider action signal, add binding set for vscale/hscale, in the process support numeric keypad * gtk/gtkentry.c (gtk_entry_class_init): Add keypad bindings; make GDK_Return and GDK_KP_Enter activate the entry via binding set, instead of hardcoded.
Diffstat (limited to 'gtk/gtkhscale.c')
-rw-r--r--gtk/gtkhscale.c89
1 files changed, 48 insertions, 41 deletions
diff --git a/gtk/gtkhscale.c b/gtk/gtkhscale.c
index 1f654518e6..43739548bb 100644
--- a/gtk/gtkhscale.c
+++ b/gtk/gtkhscale.c
@@ -29,6 +29,7 @@
#include "gtksignal.h"
#include "gdk/gdkkeysyms.h"
#include "gtkintl.h"
+#include "gtkbindings.h"
#define SCALE_CLASS(w) GTK_SCALE_GET_CLASS (w)
#define RANGE_CLASS(w) GTK_RANGE_GET_CLASS (w)
@@ -65,10 +66,7 @@ static void gtk_hscale_pos_background (GtkHScale *hscale,
gint *h);
static void gtk_hscale_draw_slider (GtkRange *range);
static void gtk_hscale_draw_value (GtkScale *scale);
-static gboolean gtk_hscale_trough_keys (GtkRange *range,
- GdkEventKey *key,
- GtkScrollType *scroll,
- GtkTroughType *pos);
+
static void gtk_hscale_clear_background (GtkRange *range);
@@ -97,6 +95,12 @@ gtk_hscale_get_type (void)
return hscale_type;
}
+#define add_slider_binding(binding_set, keyval, mask, scroll, trough) \
+ gtk_binding_entry_add_signal (binding_set, keyval, mask, \
+ "move_slider", 2, \
+ GTK_TYPE_SCROLL_TYPE, scroll, \
+ GTK_TYPE_TROUGH_TYPE, trough)
+
static void
gtk_hscale_class_init (GtkHScaleClass *class)
{
@@ -105,7 +109,8 @@ gtk_hscale_class_init (GtkHScaleClass *class)
GtkWidgetClass *widget_class;
GtkRangeClass *range_class;
GtkScaleClass *scale_class;
-
+ GtkBindingSet *binding_set;
+
gobject_class = (GObjectClass*) class;
object_class = (GtkObjectClass*) class;
widget_class = (GtkWidgetClass*) class;
@@ -123,7 +128,6 @@ gtk_hscale_class_init (GtkHScaleClass *class)
range_class->trough_click = _gtk_range_default_htrough_click;
range_class->motion = _gtk_range_default_hmotion;
range_class->draw_slider = gtk_hscale_draw_slider;
- range_class->trough_keys = gtk_hscale_trough_keys;
range_class->clear_background = gtk_hscale_clear_background;
scale_class->draw_value = gtk_hscale_draw_value;
@@ -135,7 +139,45 @@ gtk_hscale_class_init (GtkHScaleClass *class)
_("The GtkAdjustment that determines the values to use for this HScale."),
GTK_TYPE_ADJUSTMENT,
G_PARAM_READWRITE));
+ binding_set = gtk_binding_set_by_class (object_class);
+
+ add_slider_binding (binding_set, GDK_Left, 0,
+ GTK_SCROLL_STEP_LEFT, GTK_TROUGH_NONE);
+
+ add_slider_binding (binding_set, GDK_Left, GDK_CONTROL_MASK,
+ GTK_SCROLL_PAGE_LEFT, GTK_TROUGH_NONE);
+
+ add_slider_binding (binding_set, GDK_KP_Left, 0,
+ GTK_SCROLL_STEP_LEFT, GTK_TROUGH_NONE);
+
+ add_slider_binding (binding_set, GDK_KP_Left, GDK_CONTROL_MASK,
+ GTK_SCROLL_PAGE_LEFT, GTK_TROUGH_NONE);
+
+
+ add_slider_binding (binding_set, GDK_Right, 0,
+ GTK_SCROLL_STEP_RIGHT, GTK_TROUGH_NONE);
+
+ add_slider_binding (binding_set, GDK_Right, GDK_CONTROL_MASK,
+ GTK_SCROLL_PAGE_RIGHT, GTK_TROUGH_NONE);
+
+ add_slider_binding (binding_set, GDK_KP_Right, 0,
+ GTK_SCROLL_STEP_RIGHT, GTK_TROUGH_NONE);
+
+ add_slider_binding (binding_set, GDK_KP_Right, GDK_CONTROL_MASK,
+ GTK_SCROLL_PAGE_RIGHT, GTK_TROUGH_NONE);
+
+ add_slider_binding (binding_set, GDK_Home, 0,
+ GTK_SCROLL_NONE, GTK_TROUGH_START);
+ add_slider_binding (binding_set, GDK_KP_Home, 0,
+ GTK_SCROLL_NONE, GTK_TROUGH_START);
+
+
+ add_slider_binding (binding_set, GDK_End, 0,
+ GTK_SCROLL_NONE, GTK_TROUGH_END);
+
+ add_slider_binding (binding_set, GDK_KP_End, 0,
+ GTK_SCROLL_NONE, GTK_TROUGH_END);
}
static void
@@ -555,38 +597,3 @@ gtk_hscale_draw_value (GtkScale *scale)
g_object_unref (G_OBJECT (layout));
}
}
-
-static gboolean
-gtk_hscale_trough_keys (GtkRange *range,
- GdkEventKey *key,
- GtkScrollType *scroll,
- GtkTroughType *pos)
-{
- gint return_val = FALSE;
- switch (key->keyval)
- {
- case GDK_Left:
- return_val = TRUE;
- if (key->state & GDK_CONTROL_MASK)
- *scroll = GTK_SCROLL_PAGE_LEFT;
- else
- *scroll = GTK_SCROLL_STEP_LEFT;
- break;
- case GDK_Right:
- return_val = TRUE;
- if (key->state & GDK_CONTROL_MASK)
- *scroll = GTK_SCROLL_PAGE_RIGHT;
- else
- *scroll = GTK_SCROLL_STEP_RIGHT;
- break;
- case GDK_Home:
- return_val = TRUE;
- *pos = GTK_TROUGH_START;
- break;
- case GDK_End:
- return_val = TRUE;
- *pos = GTK_TROUGH_END;
- break;
- }
- return return_val;
-}