diff --git a/ChangeLog b/ChangeLog index 4f94b3e81..dc13ce858 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2003-01-25 Havoc Pennington + + * src/stack.c (window_is_fullscreen_size): When checking if a + window is fullscreen size, only require it to be at the origin + of the work area, not at the origin of the screen/xinerama. + Still require it to be full screen in width x height. + May fix xine in the case where the user has a top panel. + + * src/window.c (constrain_position): restore the ability for + undecorated windows to position themselves overlapping the top + panel, but don't let decorated windows do so. Oh the hacks... + 2003-01-08 Havoc Pennington * src/screen.c (meta_screen_apply_startup_properties): small code diff --git a/src/stack.c b/src/stack.c index 5cb5dba50..a3898317f 100644 --- a/src/stack.c +++ b/src/stack.c @@ -183,20 +183,33 @@ window_is_fullscreen_size (MetaWindow *window) { int i; - if (window->rect.x <= 0 && - window->rect.y <= 0 && - window->rect.width >= window->screen->width && + if (window->rect.width >= window->screen->width && window->rect.height >= window->screen->height) - return TRUE; + { + /* we use the work area since windows that try to + * position at 0,0 will get pushed down by menu panel + */ + MetaRectangle workarea; + + meta_window_get_work_area (window, FALSE, &workarea); + if (window->rect.x <= workarea.x && + window->rect.y <= workarea.y) + return TRUE; + } i = 0; while (i < window->screen->n_xinerama_infos) { - if (window->rect.x == window->screen->xinerama_infos[i].x_origin && - window->rect.y == window->screen->xinerama_infos[i].y_origin && - window->rect.width >= window->screen->xinerama_infos[i].width && + if (window->rect.width >= window->screen->xinerama_infos[i].width && window->rect.height >= window->screen->xinerama_infos[i].height) - return TRUE; + { + MetaRectangle workarea; + + meta_window_get_work_area (window, TRUE, &workarea); + if (window->rect.x <= workarea.x && + window->rect.y <= workarea.y) + return TRUE; + } ++i; } diff --git a/src/window.c b/src/window.c index c80ad8a4a..41e8287be 100644 --- a/src/window.c +++ b/src/window.c @@ -5894,6 +5894,14 @@ constrain_position (MetaWindow *window, /* Now change NW limit to reflect amount offscreen in SE direction */ if (offscreen_w > 0) nw_x -= offscreen_w; + + /* do it for top of window for undecorated windows, + * since losing the titlebar isn't really an issue anyway, + * and it fixes fullscreen mode for stuff like Xine. + * but don't lose the titlebar on decorated windows. + */ + if (!window->decorated && offscreen_h > 0) + nw_y -= offscreen_h; /* Limit movement off the right/bottom. * Remember, we're constraining StaticGravity position.