all repos — openbox @ 51c3c8c34a9a3a12423a18d12d4c7b9f809151fc

openbox fork - make it a bit more like ryudo

give labeled separators borders
Dana Jansens danakj@orodu.net
commit

51c3c8c34a9a3a12423a18d12d4c7b9f809151fc

parent

73b490f614e4dda2849274ca75ab09325a71362e

2 files changed, 34 insertions(+), 3 deletions(-)

jump to
M openbox/menuframe.copenbox/menuframe.c

@@ -463,6 +463,7 @@ gint tw, th; /* temps */

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 @@ /* render the entries */

for (it = self->entries; it; it = g_list_next(it)) { RrAppearance *text_a; - ObMenuEntryFrame *e = it->data; + e = it->data; - RECT_SET_POINT(e->area, 0, h); - XMoveWindow(ob_display, e->window, 0, e->area.y); + /* 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+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 @@ self->a_title->texture[0].data.text.string =

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;

@@ -562,6 +582,16 @@ tw += 2*PADDING;

th += 2*PADDING; w = MAX(w, tw); 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;
M openbox/menuframe.hopenbox/menuframe.h

@@ -80,6 +80,7 @@

guint ignore_enters; Rect area; + gint border; Window window; Window icon;