split menu overlap into x and y components
This commit is contained in:
parent
6bda8c2903
commit
8186a81fe0
3 changed files with 16 additions and 9 deletions
|
@ -249,23 +249,24 @@ static void menu_frame_place_topmenu(ObMenuFrame *self, gint *x, gint *y)
|
|||
|
||||
static void menu_frame_place_submenu(ObMenuFrame *self, gint *x, gint *y)
|
||||
{
|
||||
gint overlap;
|
||||
gint overlapx, overlapy;
|
||||
gint bwidth;
|
||||
|
||||
overlap = ob_rr_theme->menu_overlap;
|
||||
overlapx = ob_rr_theme->menu_overlap_x;
|
||||
overlapy = ob_rr_theme->menu_overlap_y;
|
||||
bwidth = ob_rr_theme->mbwidth;
|
||||
|
||||
if (self->direction_right)
|
||||
*x = self->parent->area.x + self->parent->area.width -
|
||||
overlap - bwidth;
|
||||
overlapx - bwidth;
|
||||
else
|
||||
*x = self->parent->area.x - self->area.width + overlap + bwidth;
|
||||
*x = self->parent->area.x - self->area.width + overlapx + bwidth;
|
||||
|
||||
*y = self->parent->area.y + self->parent_entry->area.y;
|
||||
if (config_menu_middle)
|
||||
*y -= (self->area.height - (bwidth * 2) - ITEM_HEIGHT) / 2;
|
||||
else
|
||||
*y += overlap;
|
||||
*y += overlapy;
|
||||
}
|
||||
|
||||
void menu_frame_move_on_screen(ObMenuFrame *self, gint x, gint y,
|
||||
|
|
|
@ -177,9 +177,14 @@ RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name,
|
|||
theme->osd_font = RrFontOpenDefault(inst);
|
||||
|
||||
/* load direct dimensions */
|
||||
if (!read_int(db, "menu.overlap", &theme->menu_overlap) ||
|
||||
theme->menu_overlap < -100 || theme->menu_overlap > 100)
|
||||
theme->menu_overlap = 0;
|
||||
if ((!read_int(db, "menu.overlap.x", &theme->menu_overlap_x) &&
|
||||
!read_int(db, "menu.overlap", &theme->menu_overlap_x)) ||
|
||||
theme->menu_overlap_x < -100 || theme->menu_overlap_x > 100)
|
||||
theme->menu_overlap_x = 0;
|
||||
if ((!read_int(db, "menu.overlap.y", &theme->menu_overlap_y) &&
|
||||
!read_int(db, "menu.overlap", &theme->menu_overlap_y)) ||
|
||||
theme->menu_overlap_y < -100 || theme->menu_overlap_y > 100)
|
||||
theme->menu_overlap_y = 0;
|
||||
if (!read_int(db, "window.handle.width", &theme->handle_height) ||
|
||||
theme->handle_height < 0 || theme->handle_height > 100)
|
||||
theme->handle_height = 6;
|
||||
|
|
|
@ -45,7 +45,8 @@ struct _RrTheme {
|
|||
gint obwidth; /*!< osd border width */
|
||||
gint cbwidthx;
|
||||
gint cbwidthy;
|
||||
gint menu_overlap;
|
||||
gint menu_overlap_x;
|
||||
gint menu_overlap_y;
|
||||
/* these ones are calculated, not set directly by the theme file */
|
||||
gint win_font_height;
|
||||
gint menu_title_font_height;
|
||||
|
|
Loading…
Reference in a new issue