summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-09-09 19:33:47 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-09-09 19:33:47 +0000
commit9fe53a2a431e7d836fa5aa3dfa475943dafe6ebf (patch)
tree18fe54525612d7e163ff6a5be638305c8a232806
parentf69216c64458e28e3bce3e2b294803336f4eeff5 (diff)
downloadtdebase-9fe53a2a431e7d836fa5aa3dfa475943dafe6ebf.tar.gz
tdebase-9fe53a2a431e7d836fa5aa3dfa475943dafe6ebf.zip
Fix kompmgr failing to move windows in opaque mode
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1252373 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
-rw-r--r--kwin/kompmgr/kompmgr.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/kwin/kompmgr/kompmgr.c b/kwin/kompmgr/kompmgr.c
index 64ddce408..3bb0a856a 100644
--- a/kwin/kompmgr/kompmgr.c
+++ b/kwin/kompmgr/kompmgr.c
@@ -117,6 +117,7 @@ typedef struct _win {
Pixmap pixmap;
#endif
XWindowAttributes a;
+ XWindowAttributes a_prev;
#if CAN_DO_USABLE
Bool usable; /* mapped and all damaged at one point */
XRectangle damage_bounds; /* bounds of damage */
@@ -1773,16 +1774,19 @@ map_win (Display *dpy, Window id, unsigned long sequence, Bool fade)
w->damaged = 0;
#if WORK_AROUND_FGLRX
- XserverRegion extents = win_extents (dpy, w);
- XDamageNotifyEvent de;
- de.drawable = w->id;
- de.area.x = 0;
- de.area.y = 0;
- de.area.width = w->a.width + w->a.border_width * 2;
- de.area.height = w->a.height + w->a.border_width * 2;
- damage_win(dpy, &de);
- XFixesDestroyRegion (dpy, extents);
+ if (w->a.x != 0) {
+ XserverRegion extents = win_extents (dpy, w);
+ XDamageNotifyEvent de;
+ de.drawable = w->id;
+ de.area.x = 0;
+ de.area.y = 0;
+ de.area.width = w->a.width + w->a.border_width * 2;
+ de.area.height = w->a.height + w->a.border_width * 2;
+ damage_win(dpy, &de);
+ XFixesDestroyRegion (dpy, extents);
+ }
#endif
+ w->a_prev = w->a;
if (fade && winTypeFade[w->windowType])
set_fade (dpy, w, 0, get_opacity_prop(dpy, w, OPAQUE)*1.0/OPAQUE, fade_in_step, 0, False, True, True, True);
@@ -2228,6 +2232,7 @@ add_win (Display *dpy, Window id, Window prev)
new->shape_bounds_prev = new->shape_bounds;
new->shape_bounds.width = new->a.width;
new->shape_bounds.height = new->a.height;
+ new->a_prev = new->a;
new->damaged = 0;
#if CAN_DO_USABLE
new->usable = False;