diff --git a/openbox/menuframe.c b/openbox/menuframe.c
index f8c0b055..30c332ce 100644
--- a/openbox/menuframe.c
+++ b/openbox/menuframe.c
@@ -689,8 +689,6 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent,
 
     if (menu_frame_is_visible(self))
         return TRUE;
-    if (!menu_frame_show(self))
-        return FALSE;
 
     self->monitor = parent->monitor;
     self->parent = parent;
@@ -701,6 +699,9 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent,
         menu_frame_hide(parent->child);
     parent->child = self;
 
+    if (!menu_frame_show(self))
+        return FALSE;
+
     menu_frame_place_submenu(self);
     menu_frame_move_on_screen(self, &dx, &dy);