summaryrefslogtreecommitdiff
path: root/openbox/menuframe.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2011-01-24 16:45:56 -0500
committerDana Jansens <danakj@orodu.net>2012-09-30 14:50:30 -0400
commitf53fa1e589589a6ea2a0e91d372d9771fa1cdd04 (patch)
treecc890248d313d88aca8bbc8ecfda1b3f40798939 /openbox/menuframe.c
parentfbc3e344cdbb0fc70b960c60153bd86d56b9eb43 (diff)
Fix for when the menu's update function returns FALSE and no menu is shown.
The ObMenuFrame was not being freed, and the child pointer was being left pointing to the frame that was not visible.
Diffstat (limited to 'openbox/menuframe.c')
-rw-r--r--openbox/menuframe.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/openbox/menuframe.c b/openbox/menuframe.c
index 6110045c..4887173b 100644
--- a/openbox/menuframe.c
+++ b/openbox/menuframe.c
@@ -1046,8 +1046,11 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent,
parent->child_entry = parent_entry;
}
- if (!menu_frame_show(self))
+ if (!menu_frame_show(self)) {
+ parent->child = NULL;
+ parent->child_entry = NULL;
return FALSE;
+ }
menu_frame_place_submenu(self, &x, &y);
menu_frame_move_on_screen(self, x, y, &dx, &dy);
@@ -1272,7 +1275,8 @@ void menu_entry_frame_show_submenu(ObMenuEntryFrame *self)
/* pass our direction on to our child */
f->direction_right = self->frame->direction_right;
- menu_frame_show_submenu(f, self->frame, self);
+ if (!menu_frame_show_submenu(f, self->frame, self))
+ menu_frame_free(f);
}
void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state)