summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2003-01-25 16:58:24 +0000
committerHavoc Pennington <hp@src.gnome.org>2003-01-25 16:58:24 +0000
commit5defca471d931ba97c85c9f7d79572d3363625a6 (patch)
treef53547260e54e6a89349fad55d309c2e2efd4344
parent81c18e23febc6c9483eb3e5a69968ed5245aae3e (diff)
downloadmetacity-5defca471d931ba97c85c9f7d79572d3363625a6.tar.gz
(not for 2.2.0)
2003-01-25 Havoc Pennington <hp@pobox.com> (not for 2.2.0) * 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...
-rw-r--r--ChangeLog14
-rw-r--r--src/stack.c29
-rw-r--r--src/window.c8
3 files changed, 43 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 260a24b7..57b6e81e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2003-01-25 Havoc Pennington <hp@pobox.com>
+
+ (not for 2.2.0)
+
+ * 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 <hp@pobox.com>
(not for 2.2.0)
diff --git a/src/stack.c b/src/stack.c
index 5cb5dba5..a3898317 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 c80ad8a4..41e8287b 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.