summaryrefslogtreecommitdiff
path: root/openbox/popup.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbox/popup.c')
-rw-r--r--openbox/popup.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/openbox/popup.c b/openbox/popup.c
index 2a83d7b8..5ecf2fa5 100644
--- a/openbox/popup.c
+++ b/openbox/popup.c
@@ -250,16 +250,22 @@ void popup_delay_show(ObPopup *self, gulong msec, gchar *text)
break;
}
- /* Find the monitor which contains the biggest part of the popup.
- * If the popup is completely off screen, limit it to the intersection
- * of all monitors and then try again. If it's still off screen, put it
- * on monitor 0. */
- RECT_SET(mon, x, y, w, h);
- m = screen_find_monitor(&mon);
+ /* If the popup belongs to a client (eg, the moveresize popup), get
+ * the monitor for that client, otherwise do other stuff */
+ if (self->client) {
+ m = client_monitor(self->client);
+ } else {
+ /* Find the monitor which contains the biggest part of the popup.
+ * If the popup is completely off screen, limit it to the intersection
+ * of all monitors and then try again. If it's still off screen, put it
+ * on monitor 0. */
+ RECT_SET(mon, x, y, w, h);
+ m = screen_find_monitor(&mon);
+ }
area = screen_physical_area_monitor(m);
- x=MAX(MIN(x, area->x+area->width-w),area->x);
- y=MAX(MIN(y, area->y+area->height-h),area->y);
+ x = MAX(MIN(x, area->x+area->width-w), area->x);
+ y = MAX(MIN(y, area->y+area->height-h), area->y);
if (m == screen_num_monitors) {
RECT_SET(mon, x, y, w, h);
@@ -268,8 +274,8 @@ void popup_delay_show(ObPopup *self, gulong msec, gchar *text)
m = 0;
area = screen_physical_area_monitor(m);
- x=MAX(MIN(x, area->x+area->width-w),area->x);
- y=MAX(MIN(y, area->y+area->height-h),area->y);
+ x = MAX(MIN(x, area->x+area->width-w), area->x);
+ y = MAX(MIN(y, area->y+area->height-h), area->y);
}
/* set the windows/appearances up */