]> Pileus Git - ~andy/gtk/commitdiff
Allow to cancel a drag with ESC. (#58389, Søren Sandmann)
authorMatthias Clasen <mclasen@redhat.com>
Sat, 11 Mar 2006 05:47:09 +0000 (05:47 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 11 Mar 2006 05:47:09 +0000 (05:47 +0000)
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)

ChangeLog
ChangeLog.pre-2-10
gtk/gtkrange.c

index ea24cc8cd82c72de269e8093e46c1bd58a1c02a6..058e6533018ffaf266085f9158ff2ea7b5733468 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index ea24cc8cd82c72de269e8093e46c1bd58a1c02a6..058e6533018ffaf266085f9158ff2ea7b5733468 100644 (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
index a5f5ca2fb6d62f274849a0c76f26add7318f2e3b..b1dcc14491126c5e9f940289f199a282f1bc12b3 100644 (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)