Hi all, attached is a patch which extends the window resize notify function: Instead of just passing the CompWindow*, additionally the resize difference information is passed (difference of position, width and height). Originally, I wrote this one for Beryl as we needed it for the group plugin, but I think it makes sense that Compiz also has this for the sake of plugin interoperability; especially as the move notify function also does have the dx and dy parameters.
Hope that's helpful :-) Regards, Danny
diff --git a/include/compiz.h b/include/compiz.h index 2cf59b4..9fdcd32 100644 --- a/include/compiz.h +++ b/include/compiz.h @@ -26,7 +26,7 @@ #ifndef _COMPIZ_H #define _COMPIZ_H -#define ABIVERSION 20070201 +#define ABIVERSION 20070220 #include <stdio.h> #include <sys/time.h> @@ -1417,7 +1417,11 @@ typedef void (*GetOutputExtentsForWindowProc) (CompWindow *w, typedef Bool (*FocusWindowProc) (CompWindow *window); -typedef void (*WindowResizeNotifyProc) (CompWindow *window); +typedef void (*WindowResizeNotifyProc) (CompWindow *window, + int dx, + int dy, + int dwidth, + int dheight); typedef void (*WindowMoveNotifyProc) (CompWindow *window, int dx, @@ -2285,7 +2289,11 @@ Bool focusWindow (CompWindow *w); void -windowResizeNotify (CompWindow *w); +windowResizeNotify (CompWindow *w, + int dx, + int dy, + int dwidth, + int dheight); void windowMoveNotify (CompWindow *w, diff --git a/plugins/blur.c b/plugins/blur.c index 090f35f..9cb0a0c 100644 --- a/plugins/blur.c +++ b/plugins/blur.c @@ -1406,7 +1406,11 @@ blurHandleEvent (CompDisplay *d, } static void -blurWindowResizeNotify (CompWindow *w) +blurWindowResizeNotify (CompWindow *w, + int dx, + int dy, + int dwidth, + int dheight) { BLUR_SCREEN (w->screen); @@ -1420,7 +1424,7 @@ blurWindowResizeNotify (CompWindow *w) } UNWRAP (bs, w->screen, windowResizeNotify); - (*w->screen->windowResizeNotify) (w); + (*w->screen->windowResizeNotify) (w, dx, dy, dwidth, dheight); WRAP (bs, w->screen, windowResizeNotify, blurWindowResizeNotify); } diff --git a/plugins/decoration.c b/plugins/decoration.c index 9ea0e55..de1aeab 100644 --- a/plugins/decoration.c +++ b/plugins/decoration.c @@ -1186,7 +1186,11 @@ decorWindowMoveNotify (CompWindow *w, } static void -decorWindowResizeNotify (CompWindow *w) +decorWindowResizeNotify (CompWindow *w, + int dx, + int dy, + int dwidth, + int dheight) { DECOR_SCREEN (w->screen); @@ -1194,7 +1198,7 @@ decorWindowResizeNotify (CompWindow *w) updateWindowDecorationScale (w); UNWRAP (ds, w->screen, windowResizeNotify); - (*w->screen->windowResizeNotify) (w); + (*w->screen->windowResizeNotify) (w, dx, dy, dwidth, dheight); WRAP (ds, w->screen, windowResizeNotify, decorWindowResizeNotify); } diff --git a/plugins/fade.c b/plugins/fade.c index 9e22041..1123805 100644 --- a/plugins/fade.c +++ b/plugins/fade.c @@ -650,7 +650,11 @@ fadeFocusWindow (CompWindow *w) } static void -fadeWindowResizeNotify (CompWindow *w) +fadeWindowResizeNotify (CompWindow *w, + int dx, + int dy, + int dwidth, + int dheight) { FADE_SCREEN (w->screen); @@ -658,7 +662,7 @@ fadeWindowResizeNotify (CompWindow *w) fadeWindowStop (w); UNWRAP (fs, w->screen, windowResizeNotify); - (*w->screen->windowResizeNotify) (w); + (*w->screen->windowResizeNotify) (w, dx, dy, dwidth, dheight); WRAP (fs, w->screen, windowResizeNotify, fadeWindowResizeNotify); } diff --git a/plugins/minimize.c b/plugins/minimize.c index b03ae34..b85a7d3 100644 --- a/plugins/minimize.c +++ b/plugins/minimize.c @@ -272,7 +272,7 @@ minSetShade (CompWindow *w, w->matrix.x0 -= (w->attrib.x * w->matrix.xx); w->matrix.y0 -= ((w->attrib.y - (h - shade)) * w->matrix.yy); - (*w->screen->windowResizeNotify) (w); + (*w->screen->windowResizeNotify) (w, 0, 0, 0, 0); } static Bool diff --git a/plugins/wobbly.c b/plugins/wobbly.c index 960aaf3..e2c1f86 100644 --- a/plugins/wobbly.c +++ b/plugins/wobbly.c @@ -2553,7 +2553,11 @@ wobblyDamageWindowRect (CompWindow *w, } static void -wobblyWindowResizeNotify (CompWindow *w) +wobblyWindowResizeNotify (CompWindow *w, + int dx, + int dy, + int dwidth, + int dheight) { WOBBLY_SCREEN (w->screen); WOBBLY_WINDOW (w); @@ -2626,7 +2630,7 @@ wobblyWindowResizeNotify (CompWindow *w) } UNWRAP (ws, w->screen, windowResizeNotify); - (*w->screen->windowResizeNotify) (w); + (*w->screen->windowResizeNotify) (w, dx, dy, dwidth, dheight); WRAP (ws, w->screen, windowResizeNotify, wobblyWindowResizeNotify); } diff --git a/src/window.c b/src/window.c index 123920f..e7fe28b 100644 --- a/src/window.c +++ b/src/window.c @@ -1065,7 +1065,7 @@ updateWindowOutputExtents (CompWindow *w) { w->output = output; - (*w->screen->windowResizeNotify) (w); + (*w->screen->windowResizeNotify) (w, 0, 0, 0, 0); } } @@ -2204,6 +2204,7 @@ resizeWindow (CompWindow *w, w->attrib.border_width != borderWidth) { unsigned int pw, ph, actualWidth, actualHeight, ui; + int dx, dy, dwidth, dheight; Pixmap pixmap = None; Window root; Status result; @@ -2234,6 +2235,11 @@ resizeWindow (CompWindow *w, addWindowDamage (w); + dx = x - w->attrib.x; + dy = y - w->attrib.y; + dwidth = width - w->attrib.width; + dheight = height - w->attrib.height; + w->attrib.x = x; w->attrib.y = y; w->attrib.width = width; @@ -2250,7 +2256,7 @@ resizeWindow (CompWindow *w, if (w->mapNum) updateWindowRegion (w); - (*w->screen->windowResizeNotify) (w); + (*w->screen->windowResizeNotify) (w, dx, dy, dwidth, dheight); addWindowDamage (w); @@ -2518,7 +2524,11 @@ focusWindow (CompWindow *w) } void -windowResizeNotify (CompWindow *w) +windowResizeNotify (CompWindow *w, + int dx, + int dy, + int dwidth, + int dheight) { }
_______________________________________________ compiz mailing list compiz@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/compiz