do the menu_can_hide thing properly. was such a hack before? and the variable was getting set from all kinds of events like motion notify. totally not reliable. now it works all nice.
Dana Jansens danakj@orodu.net
3 files changed,
26 insertions(+),
17 deletions(-)
M
openbox/event.c
→
openbox/event.c
@@ -93,13 +93,10 @@ static gboolean focus_delay_cmp(gconstpointer d1, gconstpointer d2);
static gboolean focus_delay_func(gpointer data); static void focus_delay_client_dest(ObClient *client, gpointer data); -static gboolean menu_hide_delay_func(gpointer data); - /* The time for the current event being processed */ Time event_curtime = CurrentTime; static guint ignore_enter_focus = 0; -static gboolean menu_can_hide; static gboolean focus_left_screen = FALSE; #ifdef USE_SM@@ -1706,8 +1703,8 @@ gboolean ret = TRUE;
switch (ev->type) { case ButtonRelease: - if ((ev->xbutton.button < 4 || ev->xbutton.button > 5) - && menu_can_hide) + if (menu_hide_delay_reached() && + (ev->xbutton.button < 4 || ev->xbutton.button > 5)) { if ((e = menu_entry_frame_under(ev->xbutton.x_root, ev->xbutton.y_root)))@@ -1783,12 +1780,6 @@ /* make further actions work on the client being
moved/resized */ client = moveresize_client; - menu_can_hide = FALSE; - ob_main_loop_timeout_add(ob_main_loop, - config_menu_hide_delay * 1000, - menu_hide_delay_func, - NULL, g_direct_equal, NULL); - if (e->type == ButtonPress || e->type == ButtonRelease || e->type == MotionNotify)@@ -1802,12 +1793,6 @@ keyboard_event((focus_cycle_target ? focus_cycle_target :
(client ? client : focus_client)), e); } } -} - -static gboolean menu_hide_delay_func(gpointer data) -{ - menu_can_hide = TRUE; - return FALSE; /* no repeat */ } static void focus_delay_dest(gpointer data)