X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fpopup.c;h=5ecf2fa50843eb38b2a73a7bdeafa29ea7d42076;hb=HEAD;hp=8ff8c5330df1670e17fd87a53d1c6e11c1117e70;hpb=aa3685d16af4a565eecdc39047ee8d140ef5cd99;p=chaz%2Fopenbox diff --git a/openbox/popup.c b/openbox/popup.c index 8ff8c533..5ecf2fa5 100644 --- a/openbox/popup.c +++ b/openbox/popup.c @@ -148,7 +148,6 @@ static gboolean popup_show_timeout(gpointer data) self->delay_mapped = FALSE; self->delay_timer = 0; - XFlush(obt_display); return FALSE; /* don't repeat */ } @@ -201,11 +200,11 @@ void popup_delay_show(ObPopup *self, gulong msec, gchar *text) textx += iconw + ob_rr_theme->paddingx; if (textw) emptyx += ob_rr_theme->paddingx; /* between the icon and text */ + icony = (h - iconh - emptyy) / 2 + t + ob_rr_theme->paddingy; } else iconw = 0; texty = (h - texth - emptyy) / 2 + t + ob_rr_theme->paddingy; - icony = (h - iconh - emptyy) / 2 + t + ob_rr_theme->paddingy; /* when there is no icon, then fill the whole dialog with the text appearance @@ -251,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); @@ -269,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 */