diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-08-28 07:49:57 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-08-28 07:49:57 +0000 |
| commit | c34915ae8d49f61426912ef332e8097be516bdd3 (patch) | |
| tree | 83f0a5eb4334f67c2830dd2ade09b125ac485f73 /openbox/menuframe.c | |
| parent | f7eb47dba4b091b67a28404ce461b15dffcb4298 (diff) | |
make submenus not require the menu to exist when they are created, not until they are shown.
crash fix in client_menu
Diffstat (limited to 'openbox/menuframe.c')
| -rw-r--r-- | openbox/menuframe.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/openbox/menuframe.c b/openbox/menuframe.c index ea7f254c..8ffd27ad 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -170,6 +170,7 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self) { RrAppearance *item_a, *text_a; gint th; /* temp */ + ObMenu *sub; item_a = ((self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL && !self->entry->data.normal.enabled) ? @@ -205,8 +206,8 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self) text_a->texture[0].data.text.string = self->entry->data.normal.label; break; case OB_MENU_ENTRY_TYPE_SUBMENU: - text_a->texture[0].data.text.string = - self->entry->data.submenu.submenu->title; + sub = self->entry->data.submenu.submenu; + text_a->texture[0].data.text.string = sub ? sub->title : ""; break; case OB_MENU_ENTRY_TYPE_SEPARATOR: break; @@ -265,6 +266,7 @@ static void menu_frame_render(ObMenuFrame *self) gint tw, th; /* temps */ GList *it; gboolean has_icon = FALSE, has_bullet = FALSE; + ObMenu *sub; XSetWindowBorderWidth(ob_display, self->window, ob_rr_theme->bwidth); XSetWindowBorder(ob_display, self->window, @@ -315,8 +317,8 @@ static void menu_frame_render(ObMenuFrame *self) /* XXX has_icon = TRUE; */ break; case OB_MENU_ENTRY_TYPE_SUBMENU: - text_a->texture[0].data.text.string = - e->entry->data.submenu.submenu->title; + sub = e->entry->data.submenu.submenu; + text_a->texture[0].data.text.string = sub ? sub->title : ""; RrMinsize(text_a, &tw, &th); has_bullet = TRUE; @@ -378,6 +380,8 @@ static void menu_frame_update(ObMenuFrame *self) { GList *mit, *fit; + menu_find_submenus(self->menu); + self->selected = NULL; for (mit = self->menu->entries, fit = self->entries; mit && fit; @@ -538,6 +542,8 @@ void menu_entry_frame_show_submenu(ObMenuEntryFrame *self) { ObMenuFrame *f; + if (!self->entry->data.submenu.submenu) return; + f = menu_frame_new(self->entry->data.submenu.submenu, self->frame->client); menu_frame_move(f, |
