mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-25 05:01:09 +00:00
fixed submenu popup timeouts, we decide whether or not to delay the
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.
This commit is contained in:
parent
3441c3f2c4
commit
7ea8bb92a6
@ -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>
|
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
||||||
|
@ -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>
|
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
||||||
|
@ -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>
|
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
||||||
|
@ -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>
|
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
||||||
|
@ -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>
|
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
||||||
|
@ -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>
|
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
||||||
|
@ -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>
|
1998-12-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
* gtk/gtkwidget.h (struct _GtkWidgetClass): Added a "grab_focus"
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#define BORDER_SPACING 3
|
#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)
|
#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 GtkItemClass *parent_class;
|
||||||
static guint menu_item_signals[LAST_SIGNAL] = { 0 };
|
static guint menu_item_signals[LAST_SIGNAL] = { 0 };
|
||||||
|
static guint32 last_submenu_deselect_time = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GtkType
|
GtkType
|
||||||
@ -532,12 +534,17 @@ gtk_real_menu_item_select (GtkItem *item)
|
|||||||
/* if (menu_item->submenu && !GTK_WIDGET_VISIBLE (menu_item->submenu))*/
|
/* if (menu_item->submenu && !GTK_WIDGET_VISIBLE (menu_item->submenu))*/
|
||||||
if (menu_item->submenu)
|
if (menu_item->submenu)
|
||||||
{
|
{
|
||||||
/* Boy this is a hack! */
|
guint32 etime;
|
||||||
GdkEvent *current_event = gtk_get_current_event();
|
GdkEvent *event = gtk_get_current_event ();
|
||||||
if (current_event && (current_event->type != GDK_ENTER_NOTIFY))
|
|
||||||
gtk_menu_item_select_timeout (menu_item);
|
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
|
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_set_state (GTK_WIDGET (menu_item), GTK_STATE_PRELIGHT);
|
||||||
@ -556,10 +563,20 @@ gtk_real_menu_item_deselect (GtkItem *item)
|
|||||||
|
|
||||||
if (menu_item->submenu)
|
if (menu_item->submenu)
|
||||||
{
|
{
|
||||||
|
guint32 etime;
|
||||||
|
GdkEvent *event = gtk_get_current_event ();
|
||||||
|
|
||||||
if (menu_item->timer)
|
if (menu_item->timer)
|
||||||
|
{
|
||||||
gtk_timeout_remove (menu_item->timer);
|
gtk_timeout_remove (menu_item->timer);
|
||||||
|
menu_item->timer = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
gtk_menu_popdown (GTK_MENU (menu_item->submenu));
|
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);
|
gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_NORMAL);
|
||||||
|
Loading…
Reference in New Issue
Block a user