]> Dogcows Code - chaz/openbox/commitdiff
make submenus open in the same direction as the top level menu
authorDana Jansens <danakj@orodu.net>
Wed, 2 May 2007 02:18:37 +0000 (02:18 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 2 May 2007 02:18:37 +0000 (02:18 +0000)
openbox/menuframe.c

index 06a434598b36bafbea6da18da159df90f4f63283..6f8ecad01149b338a38f61d2ae177aebe5ef95ab 100644 (file)
@@ -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;
This page took 0.026155 seconds and 4 git commands to generate.