diff options
author | Mark Thomas <markbt@efaref.net> | 2008-05-15 00:03:06 +0100 |
---|---|---|
committer | Mark Thomas <markbt@efaref.net> | 2008-05-15 00:03:06 +0100 |
commit | c1616f9b42c23a8f57e1b3384b460111a00652d9 (patch) | |
tree | 1d06e1eca94eb85b53e378907fc8ce8dee144a73 | |
parent | b09c67bea7d7b7a5b6ea305122e1c24ef22ba77e (diff) | |
download | static-c1616f9b42c23a8f57e1b3384b460111a00652d9.tar.gz static-c1616f9b42c23a8f57e1b3384b460111a00652d9.tar.bz2 |
Bypass ApplyScreenTransform for panel windows (fixes 3D-Windows).compiz-0.8
-rw-r--r-- | static.c | 23 | ||||
-rw-r--r-- | static.xml.in | 3 |
2 files changed, 26 insertions, 0 deletions
@@ -44,6 +44,7 @@ typedef struct _StaticScreen { PaintWindowProc paintWindow; PaintOutputProc paintOutput; + ApplyScreenTransformProc applyScreenTransform; PaintTransformedOutputProc paintTransformedOutput; PreparePaintScreenProc preparePaintScreen; @@ -103,6 +104,26 @@ staticPaintTransformedOutput (CompScreen *s, WRAP (ss, s, paintTransformedOutput, staticPaintTransformedOutput); } +static void +staticApplyScreenTransform (CompScreen *s, + const ScreenPaintAttrib *sAttrib, + CompOutput *output, + CompTransform *transform) +{ + STATIC_SCREEN(s); + + if (ss->staticMode == STATIC_STATIC) + { + applyScreenTransform (s, sAttrib, output, transform); + } + else + { + UNWRAP (ss, s, applyScreenTransform); + (*s->applyScreenTransform) (s, sAttrib, output, transform); + WRAP (ss, s, applyScreenTransform, staticApplyScreenTransform); + } +} + static Bool staticPaintOutput(CompScreen *s, const ScreenPaintAttrib *sAttrib, @@ -190,6 +211,7 @@ staticInitScreen (CompPlugin *p, WRAP (ss, s, paintWindow, staticPaintWindow); WRAP (ss, s, paintOutput, staticPaintOutput); + WRAP (ss, s, applyScreenTransform, staticApplyScreenTransform); WRAP (ss, s, paintTransformedOutput, staticPaintTransformedOutput); WRAP (ss, s, preparePaintScreen, staticPreparePaintScreen); @@ -206,6 +228,7 @@ staticFiniScreen (CompPlugin *p, UNWRAP (ss, s, preparePaintScreen); UNWRAP (ss, s, paintTransformedOutput); + UNWRAP (ss, s, applyScreenTransform); UNWRAP (ss, s, paintOutput); UNWRAP (ss, s, paintWindow); diff --git a/static.xml.in b/static.xml.in index d8f3ba9..b5c9aa8 100644 --- a/static.xml.in +++ b/static.xml.in @@ -5,6 +5,9 @@ <_long>Keep windows such as dock or panels static</_long> <category>Desktop</category> <deps> + <relation type="after"> + <plugin>3d</plugin> + </relation> <relation type="before"> <plugin>expo</plugin> <plugin>zoom</plugin> |