]> Dogcows Code - chaz/openbox/blobdiff - openbox/menuframe.c
open the menu with the mouse cursor just outside the top item
[chaz/openbox] / openbox / menuframe.c
index f8c0b0556505badca1190041aaf2951274233175..9455410c24e4001085f2f9d3d1c1dff713b489a6 100644 (file)
@@ -193,13 +193,8 @@ void menu_frame_place_topmenu(ObMenuFrame *self, gint x, gint y)
         x = self->client->frame->area.x + self->client->frame->size.left;
         y = self->client->frame->area.y + self->client->frame->size.top;
     } else {
-        if (config_menu_middle) {
-            x -= self->area.width / 2;
-            y -= self->title_h*3/4;
-        } else {
-            x -= ob_rr_theme->mbwidth;
-            y -= ob_rr_theme->mbwidth;
-        }
+        x -= self->area.width / 2;
+        y -= self->title_h;
     }
     menu_frame_move(self, x, y);
 }
@@ -210,19 +205,20 @@ void menu_frame_place_submenu(ObMenuFrame *self)
     gint overlap;
     gint bwidth;
 
-    overlap = (config_menu_middle ? 0 : ob_rr_theme->menu_overlap);
+    overlap = ob_rr_theme->menu_overlap;
     bwidth = ob_rr_theme->mbwidth;
 
-
     if (self->direction_right)
         x = self->parent->area.x + self->parent->area.width - overlap - bwidth;
     else
         x = self->parent->area.x - self->area.width + overlap + bwidth;
 
     y = self->parent->area.y + self->parent->title_h +
-        self->parent_entry->area.y + overlap;
+        self->parent_entry->area.y;
     if (config_menu_middle)
-        y = y - self->area.height/2 + self->item_h/2;
+        y -= (self->area.height - (bwidth * 2) - self->item_h) / 2;
+    else
+        y += overlap;
 
     menu_frame_move(self, x, y);
 }
@@ -689,8 +685,6 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent,
 
     if (menu_frame_is_visible(self))
         return TRUE;
-    if (!menu_frame_show(self))
-        return FALSE;
 
     self->monitor = parent->monitor;
     self->parent = parent;
@@ -701,6 +695,9 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent,
         menu_frame_hide(parent->child);
     parent->child = self;
 
+    if (!menu_frame_show(self))
+        return FALSE;
+
     menu_frame_place_submenu(self);
     menu_frame_move_on_screen(self, &dx, &dy);
 
This page took 0.021983 seconds and 4 git commands to generate.