summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-02 02:18:37 +0000
committerDana Jansens <danakj@orodu.net>2007-05-02 02:18:37 +0000
commitcb030c6f3a6f464cacd46d970ab28c532df84104 (patch)
tree8714f38d5e5553551857244f8ba878d4d9bc29ef
parent10df03b957576d8feef365490345756c5af8a624 (diff)
make submenus open in the same direction as the top level menu
-rw-r--r--openbox/menuframe.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/openbox/menuframe.c b/openbox/menuframe.c
index 06a43459..6f8ecad0 100644
--- a/openbox/menuframe.c
+++ b/openbox/menuframe.c
@@ -221,15 +221,18 @@ static void menu_frame_place_topmenu(ObMenuFrame *self, gint *x, gint *y)
/* try to the right of the cursor */
menu_frame_move_on_screen(self, myx, *y, &dx, &dy);
+ self->direction_right = TRUE;
if (dx != 0) {
/* try to the left of the cursor */
myx = *x - self->area.width;
menu_frame_move_on_screen(self, myx, *y, &dx, &dy);
+ self->direction_right = FALSE;
}
if (dx != 0) {
/* if didnt fit on either side so just use what it says */
myx = *x;
menu_frame_move_on_screen(self, myx, *y, &dx, &dy);
+ self->direction_right = TRUE;
}
*x = myx + dx;
*y += dy;
@@ -241,29 +244,34 @@ static void menu_frame_place_topmenu(ObMenuFrame *self, gint *x, gint *y)
/* try to the bottom right of the cursor */
menu_frame_move_on_screen(self, myx, myy, &dx, &dy);
+ self->direction_right = TRUE;
if (dx != 0 || dy != 0) {
/* try to the bottom left of the cursor */
myx = *x - self->area.width;
myy = *y;
menu_frame_move_on_screen(self, myx, myy, &dx, &dy);
+ self->direction_right = FALSE;
}
if (dx != 0 || dy != 0) {
/* try to the top right of the cursor */
myx = *x;
myy = *y - self->area.height;
menu_frame_move_on_screen(self, myx, myy, &dx, &dy);
+ self->direction_right = TRUE;
}
if (dx != 0 || dy != 0) {
/* try to the top left of the cursor */
myx = *x - self->area.width;
myy = *y - self->area.height;
menu_frame_move_on_screen(self, myx, myy, &dx, &dy);
+ self->direction_right = FALSE;
}
if (dx != 0 || dy != 0) {
/* if didnt fit on either side so just use what it says */
myx = *x;
myy = *y;
menu_frame_move_on_screen(self, myx, myy, &dx, &dy);
+ self->direction_right = TRUE;
}
*x = myx + dx;
*y = myy + dy;