Allow to cancel a drag with ESC. (#58389, Søren Sandmann)

2006-03-11  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkrange.c (gtk_range_key_press): Allow to cancel
	a drag with ESC.  (#58389, Søren Sandmann)
This commit is contained in:
Matthias Clasen 2006-03-11 05:47:09 +00:00 committed by Matthias Clasen
parent 63985b018f
commit a1bf73c3f1
3 changed files with 34 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2006-03-11 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkrange.c (gtk_range_key_press): Allow to cancel
a drag with ESC. (#58389, Søren Sandmann)
2006-03-10 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkrange.c: Add a style property ::activate_slider that

View File

@ -1,3 +1,8 @@
2006-03-11 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkrange.c (gtk_range_key_press): Allow to cancel
a drag with ESC. (#58389, Søren Sandmann)
2006-03-10 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkrange.c: Add a style property ::activate_slider that

View File

@ -28,6 +28,7 @@
#include <config.h>
#include <stdio.h>
#include <math.h>
#include <gdk/gdkkeysyms.h>
#include "gtkintl.h"
#include "gtkmain.h"
#include "gtkmarshalers.h"
@ -186,6 +187,8 @@ static gboolean gtk_range_real_change_value (GtkRange *range,
GtkScrollType scroll,
gdouble value);
static void gtk_range_update_value (GtkRange *range);
static gboolean gtk_range_key_press (GtkWidget *range,
GdkEventKey *event);
static GtkWidgetClass *parent_class = NULL;
@ -255,6 +258,7 @@ gtk_range_class_init (GtkRangeClass *class)
widget_class->grab_notify = gtk_range_grab_notify;
widget_class->state_changed = gtk_range_state_changed;
widget_class->style_set = gtk_range_style_set;
widget_class->key_press_event = gtk_range_key_press;
class->move_slider = gtk_range_move_slider;
class->change_value = gtk_range_real_change_value;
@ -1410,6 +1414,26 @@ coord_to_value (GtkRange *range,
return value;
}
static gboolean
gtk_range_key_press (GtkWidget *widget,
GdkEventKey *event)
{
GtkRange *range = (GtkRange *)widget;
if (event->keyval == GDK_Escape)
{
stop_scrolling (range);
update_slider_position (range,
range->slide_initial_coordinate,
range->slide_initial_coordinate);
return TRUE;
}
return FALSE;
}
static gint
gtk_range_button_press (GtkWidget *widget,
GdkEventButton *event)