summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-07-22 16:14:42 +0000
committerDana Jansens <danakj@orodu.net>2003-07-22 16:14:42 +0000
commitea6258ce0f8b4e7af8d44f2e540eb25ccfe8955b (patch)
treed87c5e2962b9d433f32f45c20870b327e8e4af7c
parent463c0004a182ed8686f0d5c43b781eb7a4440d2e (diff)
add a menuOverlap property to themes, and use it in the submenu placement
-rw-r--r--openbox/menu.c6
-rw-r--r--render/theme.c3
-rw-r--r--render/theme.h1
3 files changed, 7 insertions, 3 deletions
diff --git a/openbox/menu.c b/openbox/menu.c
index 5b78a176..ccf9df92 100644
--- a/openbox/menu.c
+++ b/openbox/menu.c
@@ -11,7 +11,7 @@
GHashTable *menu_hash = NULL;
GList *menu_visible = NULL;
-#define FRAME_EVENTMASK (ButtonPressMask |ButtonMotionMask | EnterWindowMask | \
+#define FRAME_EVENTMASK (ButtonPressMask |ButtonMotionMask | EnterWindowMask |\
LeaveWindowMask)
#define TITLE_EVENTMASK (ButtonPressMask | ButtonMotionMask)
#define ENTRY_EVENTMASK (EnterWindowMask | LeaveWindowMask | \
@@ -473,7 +473,7 @@ void menu_control_mouseover(ObMenuEntry *self, gboolean enter)
/* TODO: I don't understand why these bevels should be here.
Something must be wrong in the width calculation */
x = self->parent->location.x + self->parent->size.width +
- ob_rr_theme->bwidth;
+ ob_rr_theme->bwidth - ob_rr_theme->menu_overlap;
/* need to get the width. is this bad?*/
menu_render(self->submenu);
@@ -482,7 +482,7 @@ void menu_control_mouseover(ObMenuEntry *self, gboolean enter)
if (self->submenu->size.width + x >= a->x + a->width)
x = self->parent->location.x - self->submenu->size.width -
- ob_rr_theme->bwidth;
+ ob_rr_theme->bwidth + ob_rr_theme->menu_overlap;
menu_show_full(self->submenu, x,
self->parent->location.y + self->y,
diff --git a/render/theme.c b/render/theme.c
index 29f0663c..a7da009b 100644
--- a/render/theme.c
+++ b/render/theme.c
@@ -135,6 +135,9 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
theme->title_layout = g_strdup(font_str);
/* load direct dimensions */
+ if (!read_int(db, "menuOverlap", &theme->menu_overlap) ||
+ theme->menu_overlap < 0 || theme->menu_overlap > 20)
+ theme->handle_height = 0;
if (!read_int(db, "handleWidth", &theme->handle_height) ||
theme->handle_height < 0 || theme->handle_height > 100)
theme->handle_height = 6;
diff --git a/render/theme.h b/render/theme.h
index acf17c3e..74f309e7 100644
--- a/render/theme.h
+++ b/render/theme.h
@@ -20,6 +20,7 @@ struct _RrTheme {
gint title_height;
gint button_size;
gint grip_width;
+ gint menu_overlap;
/* style settings - colors */
RrColor *b_color;