]> Pileus Git - ~andy/gtk/commitdiff
implemented default handler for key-release events, which checks for
authorTim Janik <timj@gtk.org>
Tue, 30 Jun 1998 08:02:53 +0000 (08:02 +0000)
committerTim Janik <timj@src.gnome.org>
Tue, 30 Jun 1998 08:02:53 +0000 (08:02 +0000)
Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
        default handler for key-release events, which checks for activation
        of GDK_RELEASE_MASK key bindings.

        * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdktypes.h
gtk/gtkwidget.c

index 00a9e911f35566eb4d932b4abaf3dbc77faa34df..64ebfbd16435de8c2fd17f1e97ae94ff4143b957 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
+       default handler for key-release events, which checks for activation
+       of GDK_RELEASE_MASK key bindings.
+
+       * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.
+
 Mon Jun 29 13:39:45 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkarrow.h: GtkType and macro fixups.
index 00a9e911f35566eb4d932b4abaf3dbc77faa34df..64ebfbd16435de8c2fd17f1e97ae94ff4143b957 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
+       default handler for key-release events, which checks for activation
+       of GDK_RELEASE_MASK key bindings.
+
+       * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.
+
 Mon Jun 29 13:39:45 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkarrow.h: GtkType and macro fixups.
index 00a9e911f35566eb4d932b4abaf3dbc77faa34df..64ebfbd16435de8c2fd17f1e97ae94ff4143b957 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
+       default handler for key-release events, which checks for activation
+       of GDK_RELEASE_MASK key bindings.
+
+       * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.
+
 Mon Jun 29 13:39:45 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkarrow.h: GtkType and macro fixups.
index 00a9e911f35566eb4d932b4abaf3dbc77faa34df..64ebfbd16435de8c2fd17f1e97ae94ff4143b957 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
+       default handler for key-release events, which checks for activation
+       of GDK_RELEASE_MASK key bindings.
+
+       * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.
+
 Mon Jun 29 13:39:45 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkarrow.h: GtkType and macro fixups.
index 00a9e911f35566eb4d932b4abaf3dbc77faa34df..64ebfbd16435de8c2fd17f1e97ae94ff4143b957 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
+       default handler for key-release events, which checks for activation
+       of GDK_RELEASE_MASK key bindings.
+
+       * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.
+
 Mon Jun 29 13:39:45 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkarrow.h: GtkType and macro fixups.
index 00a9e911f35566eb4d932b4abaf3dbc77faa34df..64ebfbd16435de8c2fd17f1e97ae94ff4143b957 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
+       default handler for key-release events, which checks for activation
+       of GDK_RELEASE_MASK key bindings.
+
+       * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.
+
 Mon Jun 29 13:39:45 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkarrow.h: GtkType and macro fixups.
index 00a9e911f35566eb4d932b4abaf3dbc77faa34df..64ebfbd16435de8c2fd17f1e97ae94ff4143b957 100644 (file)
@@ -1,3 +1,11 @@
+Tue Jun 30 09:24:40 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwidget.c (gtk_widget_real_key_release_event): implemented
+       default handler for key-release events, which checks for activation
+       of GDK_RELEASE_MASK key bindings.
+
+       * gdk/gdktypes.h (enum): added GDK_RELEASE_MASK to GdkModifierType.
+
 Mon Jun 29 13:39:45 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkarrow.h: GtkType and macro fixups.
index dc317fcfd1aa59e5640dc01007857b93dd7f4289..67c05816c2f3b3efd17a5e9e9ea5948356f7f334 100644 (file)
@@ -441,7 +441,8 @@ typedef enum
   GDK_BUTTON3_MASK  = 1 << 10,
   GDK_BUTTON4_MASK  = 1 << 11,
   GDK_BUTTON5_MASK  = 1 << 12,
-  GDK_MODIFIER_MASK = 0x1fff
+  GDK_RELEASE_MASK  = 1 << 13,
+  GDK_MODIFIER_MASK = 0x3fff
 } GdkModifierType;
 
 typedef enum
index 51b7b86b7da2ef925bd3982cb286c8f3dbedf111..18404fb3193cd4d5f237cb51cf0ccf894c1b2825 100644 (file)
@@ -186,6 +186,8 @@ static void gtk_widget_real_size_allocate    (GtkWidget         *widget,
                                                  GtkAllocation     *allocation);
 static gint gtk_widget_real_key_press_event      (GtkWidget         *widget,
                                                  GdkEventKey       *event);
+static gint gtk_widget_real_key_release_event    (GtkWidget         *widget,
+                                                 GdkEventKey       *event);
 static void gtk_widget_style_set                (GtkWidget         *widget,
                                                  GtkStyle          *previous_style);
      
@@ -720,7 +722,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
   klass->destroy_event = NULL;
   klass->expose_event = NULL;
   klass->key_press_event = gtk_widget_real_key_press_event;
-  klass->key_release_event = NULL;
+  klass->key_release_event = gtk_widget_real_key_release_event;
   klass->enter_notify_event = NULL;
   klass->leave_notify_event = NULL;
   klass->configure_event = NULL;
@@ -749,8 +751,8 @@ gtk_widget_class_init (GtkWidgetClass *klass)
     GtkBindingSet *binding_set;
 
     binding_set = gtk_binding_set_by_class (klass);
-    gtk_binding_entry_add_signal (binding_set, '9', GDK_CONTROL_MASK, "hide", 0);
-    gtk_binding_entry_add_signal (binding_set, '9', GDK_CONTROL_MASK, "show", 0);
+    gtk_binding_entry_add_signal (binding_set, '9', GDK_CONTROL_MASK|GDK_RELEASE_MASK, "hide", 0);
+    gtk_binding_entry_add_signal (binding_set, '9', GDK_CONTROL_MASK|GDK_RELEASE_MASK, "show", 0);
   }
 }
 
@@ -1956,7 +1958,26 @@ gtk_widget_real_key_press_event (GtkWidget         *widget,
 
   if (!handled)
     handled = gtk_bindings_activate (GTK_OBJECT (widget),
-                                    event->keyval, event->state);
+                                    event->keyval,
+                                    event->state);
+
+  return handled;
+}
+
+static gint
+gtk_widget_real_key_release_event (GtkWidget         *widget,
+                                  GdkEventKey       *event)
+{
+  gboolean handled = FALSE;
+
+  g_return_val_if_fail (widget != NULL, handled);
+  g_return_val_if_fail (GTK_IS_WIDGET (widget), handled);
+  g_return_val_if_fail (event != NULL, handled);
+
+  if (!handled)
+    handled = gtk_bindings_activate (GTK_OBJECT (widget),
+                                    event->keyval,
+                                    event->state | GDK_RELEASE_MASK);
 
   return handled;
 }