diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-04-22 03:13:41 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-04-22 03:13:41 +0000 |
| commit | 51c3c8c34a9a3a12423a18d12d4c7b9f809151fc (patch) | |
| tree | b1e08143cbd08654410c1ace30f0e0c4b69e0d71 /openbox | |
| parent | 73b490f614e4dda2849274ca75ab09325a71362e (diff) | |
give labeled separators borders
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/menuframe.c | 36 | ||||
| -rw-r--r-- | openbox/menuframe.h | 1 |
2 files changed, 34 insertions, 3 deletions
diff --git a/openbox/menuframe.c b/openbox/menuframe.c index fd7e9520..d065881d 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -463,6 +463,7 @@ static void menu_frame_render(ObMenuFrame *self) GList *it; gboolean has_icon = FALSE; ObMenu *sub; + ObMenuEntryFrame *e; XSetWindowBorderWidth(ob_display, self->window, ob_rr_theme->mbwidth); XSetWindowBorder(ob_display, self->window, @@ -513,10 +514,28 @@ static void menu_frame_render(ObMenuFrame *self) for (it = self->entries; it; it = g_list_next(it)) { RrAppearance *text_a; - ObMenuEntryFrame *e = it->data; + e = it->data; + + /* if the first entry is a labeled separator, then make its border + overlap with the menu's outside border */ + if (it == self->entries && + e->entry->type == OB_MENU_ENTRY_TYPE_SEPARATOR && + e->entry->data.separator.label) + { + h -= ob_rr_theme->mbwidth; + } + + if (e->entry->type == OB_MENU_ENTRY_TYPE_SEPARATOR && + e->entry->data.separator.label) + { + e->border = ob_rr_theme->mbwidth; + } - RECT_SET_POINT(e->area, 0, h); - XMoveWindow(ob_display, e->window, 0, e->area.y); + RECT_SET_POINT(e->area, 0, h+e->border); + XMoveWindow(ob_display, e->window, e->area.x-e->border, e->area.y-e->border); + XSetWindowBorderWidth(ob_display, e->window, e->border); + XSetWindowBorder(ob_display, e->window, + RrColorPixel(ob_rr_theme->menu_b_color)); text_a = ((e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL && !e->entry->data.normal.enabled) ? @@ -552,6 +571,7 @@ static void menu_frame_render(ObMenuFrame *self) e->entry->data.separator.label; RrMinsize(self->a_title, &tw, &th); tw = MIN(tw, MAX_MENU_WIDTH); + th += ob_rr_theme->mbwidth * 2; } else { tw = 0; th = SEPARATOR_HEIGHT; @@ -564,6 +584,16 @@ static void menu_frame_render(ObMenuFrame *self) h += th; } + /* if the last entry is a labeled separator, then make its border + overlap with the menu's outside border */ + it = g_list_last(self->entries); + e = it ? it->data : NULL; + if (e && e->entry->type == OB_MENU_ENTRY_TYPE_SEPARATOR && + e->entry->data.separator.label) + { + h -= ob_rr_theme->mbwidth; + } + self->text_x = PADDING; self->text_w = w; diff --git a/openbox/menuframe.h b/openbox/menuframe.h index 9bc1bdc4..26f44b1b 100644 --- a/openbox/menuframe.h +++ b/openbox/menuframe.h @@ -80,6 +80,7 @@ struct _ObMenuEntryFrame guint ignore_enters; Rect area; + gint border; Window window; Window icon; |
