summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.pre-2-07
-rw-r--r--ChangeLog.pre-2-107
-rw-r--r--ChangeLog.pre-2-27
-rw-r--r--ChangeLog.pre-2-47
-rw-r--r--ChangeLog.pre-2-67
-rw-r--r--ChangeLog.pre-2-87
-rw-r--r--gtk/gtkmenuitem.c33
8 files changed, 74 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 39052ae0c0..0852cf9b8f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon Dec 14 02:13:01 1998 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkmenuitem.c: fixed submenu popup timeouts, we decide whether or
+ not to delay the submenu popup from a menu item deselection time stamp.
+ the code looks even more hackish than before, but in practice "feels"
+ very well.
+
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index 39052ae0c0..0852cf9b8f 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,10 @@
+Mon Dec 14 02:13:01 1998 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkmenuitem.c: fixed submenu popup timeouts, we decide whether or
+ not to delay the submenu popup from a menu item deselection time stamp.
+ the code looks even more hackish than before, but in practice "feels"
+ very well.
+
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 39052ae0c0..0852cf9b8f 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,10 @@
+Mon Dec 14 02:13:01 1998 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkmenuitem.c: fixed submenu popup timeouts, we decide whether or
+ not to delay the submenu popup from a menu item deselection time stamp.
+ the code looks even more hackish than before, but in practice "feels"
+ very well.
+
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index 39052ae0c0..0852cf9b8f 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,10 @@
+Mon Dec 14 02:13:01 1998 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkmenuitem.c: fixed submenu popup timeouts, we decide whether or
+ not to delay the submenu popup from a menu item deselection time stamp.
+ the code looks even more hackish than before, but in practice "feels"
+ very well.
+
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 39052ae0c0..0852cf9b8f 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,10 @@
+Mon Dec 14 02:13:01 1998 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkmenuitem.c: fixed submenu popup timeouts, we decide whether or
+ not to delay the submenu popup from a menu item deselection time stamp.
+ the code looks even more hackish than before, but in practice "feels"
+ very well.
+
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 39052ae0c0..0852cf9b8f 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,10 @@
+Mon Dec 14 02:13:01 1998 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkmenuitem.c: fixed submenu popup timeouts, we decide whether or
+ not to delay the submenu popup from a menu item deselection time stamp.
+ the code looks even more hackish than before, but in practice "feels"
+ very well.
+
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 39052ae0c0..0852cf9b8f 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,10 @@
+Mon Dec 14 02:13:01 1998 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkmenuitem.c: fixed submenu popup timeouts, we decide whether or
+ not to delay the submenu popup from a menu item deselection time stamp.
+ the code looks even more hackish than before, but in practice "feels"
+ very well.
+
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c
index 1b9765c9dd..3f6e3462fb 100644
--- a/gtk/gtkmenuitem.c
+++ b/gtk/gtkmenuitem.c
@@ -26,7 +26,7 @@
#define BORDER_SPACING 3
-#define SELECT_TIMEOUT 20
+#define SELECT_TIMEOUT 75
#define MENU_ITEM_CLASS(w) GTK_MENU_ITEM_CLASS (GTK_OBJECT (w)->klass)
@@ -68,6 +68,8 @@ static void gtk_menu_item_forall (GtkContainer *container,
static GtkItemClass *parent_class;
static guint menu_item_signals[LAST_SIGNAL] = { 0 };
+static guint32 last_submenu_deselect_time = 0;
+
GtkType
@@ -532,14 +534,19 @@ gtk_real_menu_item_select (GtkItem *item)
/* if (menu_item->submenu && !GTK_WIDGET_VISIBLE (menu_item->submenu))*/
if (menu_item->submenu)
{
- /* Boy this is a hack! */
- GdkEvent *current_event = gtk_get_current_event();
- if (current_event && (current_event->type != GDK_ENTER_NOTIFY))
- gtk_menu_item_select_timeout (menu_item);
+ guint32 etime;
+ GdkEvent *event = gtk_get_current_event ();
+
+ etime = event ? gdk_event_get_time (event) : GDK_CURRENT_TIME;
+ if (etime >= last_submenu_deselect_time &&
+ last_submenu_deselect_time + SELECT_TIMEOUT > etime)
+ menu_item->timer = gtk_timeout_add (SELECT_TIMEOUT - (etime - last_submenu_deselect_time),
+ gtk_menu_item_select_timeout,
+ menu_item);
else
- menu_item->timer = gtk_timeout_add (SELECT_TIMEOUT, gtk_menu_item_select_timeout, menu_item);
+ gtk_menu_item_select_timeout (menu_item);
}
-
+
gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_PRELIGHT);
gtk_widget_draw (GTK_WIDGET (menu_item), NULL);
}
@@ -556,10 +563,20 @@ gtk_real_menu_item_deselect (GtkItem *item)
if (menu_item->submenu)
{
+ guint32 etime;
+ GdkEvent *event = gtk_get_current_event ();
+
if (menu_item->timer)
- gtk_timeout_remove (menu_item->timer);
+ {
+ gtk_timeout_remove (menu_item->timer);
+ menu_item->timer = 0;
+ }
else
gtk_menu_popdown (GTK_MENU (menu_item->submenu));
+
+ etime = event ? gdk_event_get_time (event) : GDK_CURRENT_TIME;
+ if (etime > last_submenu_deselect_time)
+ last_submenu_deselect_time = etime;
}
gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_NORMAL);