Merge branch 'backport' into work
[mikachu/openbox.git] / openbox / event.c
index 4d1b6ab..d1c345a 100644 (file)
@@ -738,6 +738,11 @@ static void event_process(const XEvent *ec, gpointer data)
              e->type == MotionNotify)
         event_handle_user_input(client, e);
 
+    XFlush(obt_display);
+
+    /* run all the hooks at once */
+    hooks_run_queue();
+
     /* if something happens and it's not from an XEvent, then we don't know
        the time */
     event_curtime = CurrentTime;
@@ -1721,7 +1726,8 @@ static gboolean event_handle_menu_input(XEvent *ev)
 
             else if (keycode == ob_keycode(OB_KEY_LEFT)) {
                 /* Left goes to the parent menu */
-                menu_frame_select(frame, NULL, TRUE);
+                if (frame->parent)
+                    menu_frame_select(frame, NULL, TRUE);
                 ret = TRUE;
             }
 
@@ -1884,11 +1890,16 @@ static void event_handle_user_input(ObClient *client, XEvent *e)
             if (!client || !frame_iconify_animating(client->frame))
                 mouse_event(client, e);
         } else
-            keyboard_event((focus_cycle_target ? focus_cycle_target :
-                            (client ? client : focus_client)), e);
+            keyboard_event(event_target_client(client), e);
     }
 }
 
+ObClient* event_target_client(ObClient *client)
+{
+    return (focus_cycle_target ? focus_cycle_target :
+            (client ? client : focus_client));
+}
+
 static void focus_delay_dest(gpointer data)
 {
     g_free(data);