Special case for unusual monitor setup
authorMikael Magnusson <mikachu@gmail.com>
Tue, 6 Jan 2015 22:26:34 +0000 (23:26 +0100)
committerMikael Magnusson <mikachu@gmail.com>
Tue, 6 Jan 2015 22:26:35 +0000 (23:26 +0100)
When no monitor is at (0,0), the screen rect containing all monitors
is not at the origin, but screen_apply_gravity_point assumes the passed
x/y are relative to the passed area, so adjust them.

openbox/actions/showmenu.c

index 0fdd8be..7411e98 100644 (file)
@@ -109,9 +109,11 @@ static gboolean run_func(ObActionsData *data, gpointer options)
 
         position = o->position;
     } else {
+        const Rect *allmon;
         monitor = screen_num_monitors;
-        position.x.pos = data->x;
-        position.y.pos = data->y;
+        allmon = screen_physical_area_monitor(monitor);
+        position.x.pos = data->x - allmon->x;
+        position.y.pos = data->y - allmon->y;
     }
 
     /* you cannot call ShowMenu from inside a menu */