summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2007-10-04 08:21:41 +0200
committerDanny Baumann <dannybaumann@web.de>2007-10-04 08:21:41 +0200
commit7faf3a6a085cb70ffdfe5c3a5d746edb38ba0bfc (patch)
treeb0ec5cd9f15653ee0a21e0d838092fe6f1bcec75
parentf3130e44fa397d5a4f71c1b9f452fc185f90c60a (diff)
downloadworkarounds-7faf3a6a085cb70ffdfe5c3a5d746edb38ba0bfc.tar.gz
workarounds-7faf3a6a085cb70ffdfe5c3a5d746edb38ba0bfc.tar.bz2
We should never set the fullscreen state to desktop windows as this will break the stacking.
-rw-r--r--workarounds.c42
1 files changed, 24 insertions, 18 deletions
diff --git a/workarounds.c b/workarounds.c
index b17f32f..28c72a1 100644
--- a/workarounds.c
+++ b/workarounds.c
@@ -166,26 +166,31 @@ workaroundsFixupFullscreen (CompWindow *w)
WORKAROUNDS_WINDOW (w);
- if (w->type & CompWindowTypeDesktopMask)
- return;
-
- /* get output region for window */
- output = outputDeviceForWindow (w);
- box = &w->screen->outputDev[output].region.extents;
+ if (w->wmType & CompWindowTypeDesktopMask)
+ {
+ /* desktop windows are implicitly fullscreen */
+ isFullSize = FALSE;
+ }
+ else
+ {
+ /* get output region for window */
+ output = outputDeviceForWindow (w);
+ box = &w->screen->outputDev[output].region.extents;
- /* does the size match the output rectangle? */
- isFullSize = (w->serverX == box->x1) && (w->serverY == box->y1) &&
- (w->serverWidth == (box->x2 - box->x1)) &&
- (w->serverHeight == (box->y2 - box->y1));
+ /* does the size match the output rectangle? */
+ isFullSize = (w->serverX == box->x1) && (w->serverY == box->y1) &&
+ (w->serverWidth == (box->x2 - box->x1)) &&
+ (w->serverHeight == (box->y2 - box->y1));
- /* if not, check if it matches the whole screen */
- if (!isFullSize)
- {
- if ((w->serverX == 0) && (w->serverY == 0) &&
- (w->serverWidth == w->screen->width) &&
- (w->serverHeight == w->screen->height))
+ /* if not, check if it matches the whole screen */
+ if (!isFullSize)
{
- isFullSize = TRUE;
+ if ((w->serverX == 0) && (w->serverY == 0) &&
+ (w->serverWidth == w->screen->width) &&
+ (w->serverHeight == w->screen->height))
+ {
+ isFullSize = TRUE;
+ }
}
}
@@ -363,7 +368,8 @@ workaroundsHandleEvent (CompDisplay *d,
}
break;
case PropertyNotify:
- if (event->xproperty.atom == XA_WM_CLASS)
+ if ((event->xproperty.atom == XA_WM_CLASS) ||
+ (event->xproperty.atom == d->winTypeAtom))
{
w = findWindowAtDisplay (d, event->xproperty.window);
if (w)