fix for acroread - don't shrink windows when they specifically fit an entire monitor

This commit is contained in:
Dana Jansens 2007-08-01 18:54:02 -04:00
parent 7c7bfd770d
commit 44802ea327

View file

@ -403,26 +403,33 @@ void client_manage(Window window)
client_normal(self) && client_normal(self) &&
!self->session))) !self->session)))
{ {
Rect placer; Rect *monitor, *a, placer;
monitor = screen_physical_area_monitor(client_monitor(self));
RECT_SET(placer, placex, placey, placew, placeh); RECT_SET(placer, placex, placey, placew, placeh);
frame_rect_to_frame(self->frame, &placer); frame_rect_to_frame(self->frame, &placer);
Rect *a = screen_area(self->desktop, SCREEN_AREA_ONE_MONITOR, &placer); a = screen_area(self->desktop, SCREEN_AREA_ONE_MONITOR, &placer);
/* shrink by the frame's area */ /* shrink by the frame's area */
a->width -= self->frame->size.left + self->frame->size.right; a->width -= self->frame->size.left + self->frame->size.right;
a->height -= self->frame->size.top + self->frame->size.bottom; a->height -= self->frame->size.top + self->frame->size.bottom;
/* fit the window inside the area */ /* fit the window inside the area
if (placew > a->width || self->area.height > a->height) { but, don't shrink oldschool fullscreen windows to fit inside the
struts (fixes Acroread, which makes its fullscreen window
fit the screen but it is not USSize'd or USPosition'd) */
if ((placew > a->width || self->area.height > a->height) &&
!(self->decorations == 0 && RECT_EQUAL(placer, *monitor)))
{
placew = MIN(self->area.width, a->width); placew = MIN(self->area.width, a->width);
placeh = MIN(self->area.height, a->height); placeh = MIN(self->area.height, a->height);
ob_debug("setting window size to %dx%d\n", ob_debug("setting window size to %dx%d\n", placew, placeh);
self->area.width, self->area.height);
} }
g_free(a); g_free(a);
g_free(monitor);
} }