[Pkg-xfce-commits] r2467 - in desktop/trunk/xfwm4/debian: . patches
corsac at alioth.debian.org
corsac at alioth.debian.org
Tue Oct 28 07:53:59 UTC 2008
Author: corsac
Date: 2008-10-28 07:53:58 +0000 (Tue, 28 Oct 2008)
New Revision: 2467
Added:
desktop/trunk/xfwm4/debian/patches/13_rework-visual-depth-section.patch
desktop/trunk/xfwm4/debian/patches/14_fix-win-gravity-WM-hint.patch
Modified:
desktop/trunk/xfwm4/debian/changelog
desktop/trunk/xfwm4/debian/control
desktop/trunk/xfwm4/debian/patches/series
Log:
* new upstream bugfix release, fix:
- bug in overlays counting causing xscreensaver window to remain
- loosen the rule that prevents an application from iconifying itself when
- fix support for win-gravity WM hint (r27454, Xfce #3634) closes: #448443
* debian/control:
- update standards version to 3.8.0.
Modified: desktop/trunk/xfwm4/debian/changelog
===================================================================
--- desktop/trunk/xfwm4/debian/changelog 2008-10-28 07:53:52 UTC (rev 2466)
+++ desktop/trunk/xfwm4/debian/changelog 2008-10-28 07:53:58 UTC (rev 2467)
@@ -1,30 +1,19 @@
-xfwm4 (4.4.2-6) UNRELEASED; urgency=low
+xfwm4 (4.4.3-1) UNRELEASED; urgency=low
- * debian/patches, added:
- - 06_resize-overlay-on-randr-notif
- Resize overlays on XRandr notification. (r26969, Xfce #3763)
- - 07_overlay-counting-bug
- Fix a bug in overlays counting causing xscreensaver window to remain
+ * new upstream bugfix release, fix:
+ - bug in overlays counting causing xscreensaver window to remain
invisible. (r26973, Xfce #3849) closes: #483070
- - 08_only-count-fullscreen-overlay
- Make sure to count only the fullscreen overlays to be extra safe. (r26978)
- - 09_set-monitor-menu
- Set monitor when positionning menu (r27226, Xfce #4162)
- - 10_fix-artifacts-resize
- rework the resize of windows to avoid hidden portions to become visible,
- add a hook to update the compositor as relying on configure notify
- introduces lags and flickers (r27454, Xfce #4283)
- - 11_fix-maximization-claim
- Fix NET_WM_STATE claiming maximization vertical and horizontal even if
- only horizontal of vertical is actually set (r27996, Xfce #3969)
- - 12_fix-iconization
- Loosen the rule that prevents an application from iconifying itself when
+ - loosen the rule that prevents an application from iconifying itself when
skip_taskbar is set (r28012, Xfce #4434). closes: #491817
+ - fix support for win-gravity WM hint (r27454, Xfce #3634) closes: #448443
* debian/rules:
- stop messing with config.{guess,sub}.
+ * debian/control:
+ - update standards version to 3.8.0.
- -- Yves-Alexis Perez <corsac at debian.org> Thu, 16 Oct 2008 08:42:34 +0200
+ -- Yves-Alexis Perez <corsac at debian.org> Tue, 28 Oct 2008 07:35:13 +0100
+
xfwm4 (4.4.2-5) unstable; urgency=low
* switch to triggers:
Modified: desktop/trunk/xfwm4/debian/control
===================================================================
--- desktop/trunk/xfwm4/debian/control 2008-10-28 07:53:52 UTC (rev 2466)
+++ desktop/trunk/xfwm4/debian/control 2008-10-28 07:53:58 UTC (rev 2467)
@@ -4,7 +4,7 @@
Maintainer: Debian Xfce Maintainers <pkg-xfce-devel at lists.alioth.debian.org>
Uploaders: Emanuele Rocca <ema at debian.org>, Simon Huggins <huggie at earth.li>, Yves-Alexis Perez <corsac at debian.org>
Build-Depends: debhelper (>= 4.1.26), libgtk2.0-dev (>= 2.10.6), libxft-dev, xfce4-mcs-manager-dev (>= 4.4.2), quilt, libxdamage-dev, libxrender-dev, libxcomposite-dev, libxfixes-dev, chrpath
-Standards-Version: 3.7.3
+Standards-Version: 3.8.0
Homepage: http://www.xfce.org/
Vcs-Svn: svn://svn.debian.org/pkg-xfce/desktop/trunk/xfwm4/
Vcs-Browser: http://svn.debian.org/wsvn/pkg-xfce/desktop/trunk/xfwm4/
Added: desktop/trunk/xfwm4/debian/patches/13_rework-visual-depth-section.patch
===================================================================
--- desktop/trunk/xfwm4/debian/patches/13_rework-visual-depth-section.patch (rev 0)
+++ desktop/trunk/xfwm4/debian/patches/13_rework-visual-depth-section.patch 2008-10-28 07:53:58 UTC (rev 2467)
@@ -0,0 +1,47 @@
+commit 0b3799324f27412e8e4ca3a6d7c37fdc29bb4d4b
+Author: olivier <olivier at a0aa69c2-05f4-0310-b83c-d5d913b14636>
+Date: Tue Oct 7 19:40:54 2008 +0000
+
+ Rework visual depth selection of the frame window (Bug #4452)
+
+ git-svn-id: http://svn.xfce.org/svn/xfce/xfwm4/branches/xfce_4_4@28090 a0aa69c2-05f4-0310-b83c-d5d913b14636
+
+diff --git a/src/client.c b/src/client.c
+index 4cde2f3..afb4218 100644
+--- a/src/client.c
++++ b/src/client.c
+@@ -1963,26 +1963,24 @@ clientFrame (DisplayInfo *display_info, Window w, gboolean recapture)
+ attributes.bit_gravity = StaticGravity;
+
+ #ifdef HAVE_RENDER
+- if (display_info->have_render)
++ if ((attr.depth == 32) && (display_info->have_render))
+ {
+ c->visual = attr.visual;
+ c->depth = attr.depth;
++
+ attributes.colormap = attr.colormap;
+- valuemask |= CWColormap;
++ attributes.background_pixmap = None;
++ attributes.border_pixel = 0;
++ attributes.background_pixel = 0;
++
++ valuemask |= CWColormap|CWBackPixmap|CWBackPixel|CWBorderPixel;
+ }
+ else
+ {
++ /* Default depth/visual */
+ c->visual = screen_info->visual;
+ c->depth = screen_info->depth;
+ }
+-
+- if (c->depth == 32)
+- {
+- attributes.background_pixmap = None;
+- attributes.border_pixel = 0;
+- attributes.background_pixel = 0;
+- valuemask |= CWBackPixmap|CWBackPixel|CWBorderPixel;
+- }
+ #else /* HAVE_RENDER */
+ /* We don't support multiple depth/visual w/out render */
+ c->visual = screen_info->visual;
Added: desktop/trunk/xfwm4/debian/patches/14_fix-win-gravity-WM-hint.patch
===================================================================
--- desktop/trunk/xfwm4/debian/patches/14_fix-win-gravity-WM-hint.patch (rev 0)
+++ desktop/trunk/xfwm4/debian/patches/14_fix-win-gravity-WM-hint.patch 2008-10-28 07:53:58 UTC (rev 2467)
@@ -0,0 +1,509 @@
+commit b1f50deb72360ce2a77d805c7ba925d631ed3b96
+Author: olivier <olivier at a0aa69c2-05f4-0310-b83c-d5d913b14636>
+Date: Tue Oct 21 20:28:13 2008 +0000
+
+ Backport fron trunk, Add support for NET_MOVERESIZE_WINDOW, take gravity bit into account in configure resize only requests to comply with standard (bug #3634)
+
+ git-svn-id: http://svn.xfce.org/svn/xfce/xfwm4/branches/xfce_4_4@28349 a0aa69c2-05f4-0310-b83c-d5d913b14636
+
+diff --git a/src/client.c b/src/client.c
+index afb4218..c340d0a 100644
+--- a/src/client.c
++++ b/src/client.c
+@@ -236,8 +236,8 @@ clientUpdateAllFrames (ScreenInfo *screen_info, int mask)
+ }
+ if (mask & UPDATE_GRAVITY)
+ {
+- clientGravitate (c, REMOVE);
+- clientGravitate (c, APPLY);
++ clientCoordGravitate (c, c->gravity, REMOVE, &c->x, &c->y);
++ clientCoordGravitate (c, c->gravity, APPLY, &c->x, &c->y);
+ setNetFrameExtents (screen_info->display_info,
+ c->window,
+ frameTop (c),
+@@ -364,15 +364,14 @@ clientUpdateUrgency (Client *c)
+ }
+
+ void
+-clientCoordGravitate (Client * c, int mode, int *x, int *y)
++clientCoordGravitate (Client * c, int gravity, int mode, int *x, int *y)
+ {
+ int dx, dy;
+
+ g_return_if_fail (c != NULL);
+ TRACE ("entering clientCoordGravitate");
+
+- c->gravity = c->size->flags & PWinGravity ? c->size->win_gravity : NorthWestGravity;
+- switch (c->gravity)
++ switch (gravity)
+ {
+ case CenterGravity:
+ dx = (c->border_width * 2) - ((frameLeft (c) +
+@@ -426,6 +425,83 @@ clientCoordGravitate (Client * c, int mode, int *x, int *y)
+ }
+
+ void
++clientAdjustCoordGravity (Client * c, int gravity, unsigned long *mask, XWindowChanges *wc)
++{
++ int tx, ty, dw, dh;
++
++ g_return_if_fail (c != NULL);
++ TRACE ("entering clientAdjustCoordGravity");
++
++ tx = wc->x;
++ ty = wc->y;
++ clientCoordGravitate (c, gravity, APPLY, &tx, &ty);
++
++ switch (gravity)
++ {
++ case CenterGravity:
++ dw = (c->width - wc->width) / 2;
++ dh = (c->height - wc->height) / 2;
++ break;
++ case NorthGravity:
++ dw = (c->width - wc->width) / 2;
++ dh = 0;
++ break;
++ case SouthGravity:
++ dw = (c->width - wc->width) / 2;
++ dh = (c->height - wc->height);
++ break;
++ case EastGravity:
++ dw = (c->width - wc->width);
++ dh = (c->height - wc->height) / 2;
++ break;
++ case WestGravity:
++ dw = 0;
++ dh = (c->height - wc->height) / 2;
++ break;
++ case NorthWestGravity:
++ dw = 0;
++ dh = 0;
++ break;
++ case NorthEastGravity:
++ dw = (c->width - wc->width);
++ dh = 0;
++ break;
++ case SouthWestGravity:
++ dw = 0;
++ dh = (c->height - wc->height);
++ break;
++ case SouthEastGravity:
++ dw = (c->width - wc->width);
++ dh = (c->height - wc->height);
++ break;
++ default:
++ dw = 0;
++ dh = 0;
++ break;
++ }
++
++ if (*mask & CWX)
++ {
++ wc->x = tx;
++ }
++ else if (*mask & CWWidth)
++ {
++ wc->x = c->x + dw;
++ *mask |= CWX;
++ }
++
++ if (*mask & CWY)
++ {
++ wc->y = ty;
++ }
++ else if (*mask & CWHeight)
++ {
++ wc->y = c->y + dh;
++ *mask |= CWY;
++ }
++}
++
++void
+ clientGravitate (Client * c, int mode)
+ {
+ int x, y;
+@@ -435,7 +511,7 @@ clientGravitate (Client * c, int mode)
+
+ x = c->x;
+ y = c->y;
+- clientCoordGravitate (c, mode, &x, &y);
++ clientCoordGravitate (c, c->gravity, mode, &x, &y);
+ c->x = x;
+ c->y = y;
+ }
+@@ -851,6 +927,110 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s
+ }
+
+ void
++clientMoveResizeWindow (Client * c, XWindowChanges * wc, unsigned long mask)
++{
++ ScreenInfo *screen_info;
++ DisplayInfo *display_info;
++ gboolean constrained;
++
++ g_return_if_fail (c != NULL);
++ TRACE ("entering clientMoveResizeWindow");
++ TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
++
++ screen_info = c->screen_info;
++ display_info = screen_info->display_info;
++ if (c->type == WINDOW_DESKTOP)
++ {
++ /* Ignore stacking request for DESKTOP windows */
++ mask &= ~(CWSibling | CWStackMode);
++ }
++ if (FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
++ {
++ GdkRectangle rect;
++ gint monitor_nbr;
++ int cx, cy;
++
++ /* size request from fullscreen windows get fullscreen */
++
++ cx = frameX (c) + (frameWidth (c) / 2);
++ cy = frameY (c) + (frameHeight (c) / 2);
++
++ monitor_nbr = find_monitor_at_point (screen_info->gscr, cx, cy);
++ gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect);
++
++ wc->x = rect.x;
++ wc->y = rect.y;
++ wc->width = rect.width;
++ wc->height = rect.height;
++
++ mask |= (CWX | CWY | CWWidth | CWHeight);
++ }
++ else if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)
++ && (screen_info->params->borderless_maximize))
++ {
++ wc->x = c->x;
++ wc->y = c->y;
++ wc->width = c->width;
++ wc->height = c->height;
++ }
++ /* Clean up buggy requests that set all flags */
++ if ((mask & CWX) && (wc->x == c->x))
++ {
++ mask &= ~CWX;
++ }
++ if ((mask & CWY) && (wc->y == c->y))
++ {
++ mask &= ~CWY;
++ }
++ if ((mask & CWWidth) && (wc->width == c->width))
++ {
++ mask &= ~CWWidth;
++ }
++ if ((mask & CWHeight) && (wc->height == c->height))
++ {
++ mask &= ~CWHeight;
++ }
++
++ /* Still a move/resize after cleanup? */
++ constrained = FALSE;
++ if (mask & (CWX | CWY | CWWidth | CWHeight))
++ {
++ if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED))
++ {
++ clientRemoveMaximizeFlag (c);
++ }
++ constrained = TRUE;
++ }
++ /*
++ Let's say that if the client performs a XRaiseWindow, we show the window if focus
++ stealing prevention is not activated, otherwise we just set the "demands attention"
++ flag...
++ */
++ if ((mask & CWStackMode) && (wc->stack_mode == Above) && (wc->sibling == None) && !(c->type & WINDOW_TYPE_DONT_FOCUS))
++ {
++ Client *last_raised;
++
++ last_raised = clientGetLastRaise (screen_info);
++ if (last_raised && (c != last_raised))
++ {
++ if ((screen_info->params->prevent_focus_stealing) && (screen_info->params->activate_action == ACTIVATE_ACTION_NONE))
++ {
++ mask &= ~(CWSibling | CWStackMode);
++ TRACE ("Setting WM_STATE_DEMANDS_ATTENTION flag on \"%s\" (0x%lx)", c->name, c->window);
++ FLAG_SET (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION);
++ clientSetNetState (c);
++ }
++ else
++ {
++ clientActivate (c, getXServerTime (display_info));
++ }
++ }
++ }
++ /* And finally, configure the window */
++ clientConfigure (c, wc, mask, (constrained ? CFG_CONSTRAINED : 0) | CFG_REQUEST);
++}
++
++void
+ clientGetMWMHints (Client * c, gboolean update)
+ {
+ ScreenInfo *screen_info;
+@@ -986,6 +1166,9 @@ clientGetWMNormalHints (Client * c, gboolean update)
+ c->size->flags = 0;
+ }
+
++ /* Set/update gravity */
++ c->gravity = c->size->flags & PWinGravity ? c->size->win_gravity : NorthWestGravity;
++
+ previous_value = FLAG_TEST (c->xfwm_flags, XFWM_FLAG_IS_RESIZABLE);
+ FLAG_UNSET (c->xfwm_flags, XFWM_FLAG_IS_RESIZABLE);
+
+diff --git a/src/client.h b/src/client.h
+index 9a2859f..c9e9962 100644
+--- a/src/client.h
++++ b/src/client.h
+@@ -308,14 +308,22 @@ void clientUpdateWinState (Client *,
+ void clientUpdateUrgency (Client *);
+ void clientCoordGravitate (Client *,
+ int,
++ int,
+ int *,
+ int *);
++void clientAdjustCoordGravity (Client *,
++ int,
++ unsigned long *,
++ XWindowChanges *);
+ void clientGravitate (Client *,
+ int);
+ void clientConfigure (Client *,
+ XWindowChanges *,
+ unsigned long,
+ unsigned short);
++void clientMoveResizeWindow (Client *,
++ XWindowChanges *,
++ unsigned long);
+ void clientGetMWMHints (Client *,
+ gboolean);
+ void clientGetWMNormalHints (Client *,
+diff --git a/src/display.c b/src/display.c
+index 373e0f9..c58d312 100644
+--- a/src/display.c
++++ b/src/display.c
+@@ -88,6 +88,7 @@ myDisplayInitAtoms (DisplayInfo *display_info)
+ "_NET_DESKTOP_NAMES",
+ "_NET_DESKTOP_VIEWPORT",
+ "_NET_FRAME_EXTENTS",
++ "_NET_MOVERESIZE_WINDOW",
+ "_NET_NUMBER_OF_DESKTOPS",
+ "_NET_REQUEST_FRAME_EXTENTS",
+ "_NET_SHOWING_DESKTOP",
+diff --git a/src/display.h b/src/display.h
+index d3cfb36..e4716f0 100644
+--- a/src/display.h
++++ b/src/display.h
+@@ -130,6 +130,7 @@ enum
+ NET_DESKTOP_NAMES,
+ NET_DESKTOP_VIEWPORT,
+ NET_FRAME_EXTENTS,
++ NET_MOVERESIZE_WINDOW,
+ NET_NUMBER_OF_DESKTOPS,
+ NET_REQUEST_FRAME_EXTENTS,
+ NET_SHOWING_DESKTOP,
+diff --git a/src/events.c b/src/events.c
+index e4a51a7..d181ac3 100644
+--- a/src/events.c
++++ b/src/events.c
+@@ -1370,95 +1370,8 @@ handleConfigureRequest (DisplayInfo *display_info, XConfigureRequestEvent * ev)
+ /* Sorry, but it's not the right time for configure request */
+ return;
+ }
+- if (c->type == WINDOW_DESKTOP)
+- {
+- /* Ignore stacking request for DESKTOP windows */
+- ev->value_mask &= ~(CWSibling | CWStackMode);
+- }
+- clientCoordGravitate (c, APPLY, &wc.x, &wc.y);
+- if (FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
+- {
+- GdkRectangle rect;
+- gint monitor_nbr;
+- int cx, cy;
+-
+- /* size request from fullscreen windows get fullscreen */
+-
+- cx = frameX (c) + (frameWidth (c) / 2);
+- cy = frameY (c) + (frameHeight (c) / 2);
+-
+- monitor_nbr = find_monitor_at_point (screen_info->gscr, cx, cy);
+- gdk_screen_get_monitor_geometry (screen_info->gscr, monitor_nbr, &rect);
+-
+- wc.x = rect.x;
+- wc.y = rect.y;
+- wc.width = rect.width;
+- wc.height = rect.height;
+-
+- ev->value_mask |= (CWX | CWY | CWWidth | CWHeight);
+- }
+- else if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)
+- && (screen_info->params->borderless_maximize))
+- {
+- wc.x = c->x;
+- wc.y = c->y;
+- wc.width = c->width;
+- wc.height = c->height;
+- }
+- /* Clean up buggy requests that set all flags */
+- if ((ev->value_mask & CWX) && (wc.x == c->x))
+- {
+- ev->value_mask &= ~CWX;
+- }
+- if ((ev->value_mask & CWY) && (wc.y == c->y))
+- {
+- ev->value_mask &= ~CWY;
+- }
+- if ((ev->value_mask & CWWidth) && (wc.width == c->width))
+- {
+- ev->value_mask &= ~CWWidth;
+- }
+- if ((ev->value_mask & CWHeight) && (wc.height == c->height))
+- {
+- ev->value_mask &= ~CWHeight;
+- }
+- /* Still a move/resize after cleanup? */
+- if (ev->value_mask & (CWX | CWY | CWWidth | CWHeight))
+- {
+- if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED))
+- {
+- clientRemoveMaximizeFlag (c);
+- }
+- constrained = TRUE;
+- }
+-
+- /*
+- Let's say that if the client performs a XRaiseWindow, we show the window if focus
+- stealing prevention is not activated, otherwise we just set the "demands attention"
+- flag...
+- */
+- if ((ev->value_mask & CWStackMode) && (wc.stack_mode == Above) && (wc.sibling == None))
+- {
+- Client *last_raised;
+-
+- last_raised = clientGetLastRaise (screen_info);
+- if (last_raised && (c != last_raised))
+- {
+- if ((screen_info->params->prevent_focus_stealing) && (screen_info->params->activate_action == ACTIVATE_ACTION_NONE))
+- {
+- ev->value_mask &= ~(CWSibling | CWStackMode);
+- TRACE ("Setting WM_STATE_DEMANDS_ATTENTION flag on \"%s\" (0x%lx)", c->name, c->window);
+- FLAG_SET (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION);
+- clientSetNetState (c);
+- }
+- else
+- {
+- clientActivate (c, getXServerTime (display_info));
+- }
+- }
+- }
+-
+- clientConfigure (c, &wc, ev->value_mask, (constrained ? CFG_CONSTRAINED : 0) | CFG_REQUEST);
++ clientAdjustCoordGravity (c, c->gravity, &ev->value_mask, &wc);
++ clientMoveResizeWindow (c, &wc, ev->value_mask);
+ }
+ else
+ {
+@@ -2089,6 +2002,11 @@ handleClientMessage (DisplayInfo *display_info, XClientMessageEvent * ev)
+ TRACE ("client \"%s\" (0x%lx) has received a NET_WM_MOVERESIZE event", c->name, c->window);
+ clientNetMoveResize (c, ev);
+ }
++ else if ((ev->message_type == display_info->atoms[NET_MOVERESIZE_WINDOW]) && (ev->format == 32))
++ {
++ TRACE ("client \"%s\" (0x%lx) has received a NET_MOVERESIZE_WINDOW event", c->name, c->window);
++ clientNetMoveResizeWindow (c, ev);
++ }
+ else if ((ev->message_type == display_info->atoms[NET_ACTIVE_WINDOW]) && (ev->format == 32))
+ {
+ gboolean source_is_application;
+diff --git a/src/hints.c b/src/hints.c
+index 6ba9727..c7daec8 100644
+--- a/src/hints.c
++++ b/src/hints.c
+@@ -397,7 +397,7 @@ setGnomeProtocols (DisplayInfo *display_info, Window root, Window w)
+ void
+ setNetSupportedHint (DisplayInfo *display_info, Window root, Window check_win)
+ {
+- Atom atoms[64];
++ Atom atoms[ATOM_COUNT];
+ unsigned long data[1];
+ int i;
+
+@@ -412,6 +412,7 @@ setNetSupportedHint (DisplayInfo *display_info, Window root, Window check_win)
+ atoms[i++] = display_info->atoms[NET_DESKTOP_NAMES];
+ atoms[i++] = display_info->atoms[NET_DESKTOP_VIEWPORT];
+ atoms[i++] = display_info->atoms[NET_FRAME_EXTENTS];
++ atoms[i++] = display_info->atoms[NET_MOVERESIZE_WINDOW];
+ atoms[i++] = display_info->atoms[NET_NUMBER_OF_DESKTOPS];
+ atoms[i++] = display_info->atoms[NET_REQUEST_FRAME_EXTENTS];
+ atoms[i++] = display_info->atoms[NET_SHOWING_DESKTOP];
+@@ -463,7 +464,7 @@ setNetSupportedHint (DisplayInfo *display_info, Window root, Window check_win)
+ #ifdef HAVE_LIBSTARTUP_NOTIFICATION
+ atoms[i++] = display_info->atoms[NET_STARTUP_ID];
+ #endif
+- g_assert (i < 64);
++ g_assert (i < ATOM_COUNT);
+ data[0] = check_win;
+ XChangeProperty (display_info->dpy, root, display_info->atoms[NET_SUPPORTED],
+ XA_ATOM, 32, PropModeReplace, (unsigned char *) atoms, i);
+diff --git a/src/netwm.c b/src/netwm.c
+index 6e8f2c1..d349d43 100644
+--- a/src/netwm.c
++++ b/src/netwm.c
+@@ -687,6 +687,39 @@ clientNetMoveResize (Client * c, XClientMessageEvent * ev)
+ }
+
+ void
++clientNetMoveResizeWindow (Client * c, XClientMessageEvent * ev)
++{
++ XWindowChanges wc;
++ unsigned long mask;
++ int gravity;
++
++ g_return_if_fail (c != NULL);
++ TRACE ("entering clientNetMoveResizeWindow");
++ TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
++
++ if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING))
++ {
++ /* not allowed */
++ return;
++ }
++
++ gravity = (ev->data.l[0] & 0xff);
++ if (!gravity)
++ {
++ gravity = c->gravity;
++ }
++
++ wc.x = ev->data.l[1];
++ wc.y = ev->data.l[2];
++ wc.width = ev->data.l[3];
++ wc.height = ev->data.l[4];
++ mask = (ev->data.l[0] & 0xf00) >> 8;
++
++ clientAdjustCoordGravity (c, gravity, &mask, &wc);
++ clientMoveResizeWindow (c, &wc, mask);
++}
++
++void
+ clientUpdateFullscreenState (Client * c)
+ {
+ ScreenInfo *screen_info;
+diff --git a/src/netwm.h b/src/netwm.h
+index 789485c..c80a35c 100644
+--- a/src/netwm.h
++++ b/src/netwm.h
+@@ -35,7 +35,9 @@ void clientSetNetState (Client *);
+ void clientGetNetState (Client *);
+ void clientUpdateNetState (Client *,
+ XClientMessageEvent *);
+-void clientNetMoveResize (Client *,
++void clientNetMoveResize (Client *,
++ XClientMessageEvent *);
++void clientNetMoveResizeWindow (Client *,
+ XClientMessageEvent *);
+ void clientUpdateFullscreenState (Client *);
+ void clientGetNetWmType (Client *);
Property changes on: desktop/trunk/xfwm4/debian/patches/14_fix-win-gravity-WM-hint.patch
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: desktop/trunk/xfwm4/debian/patches/series
===================================================================
--- desktop/trunk/xfwm4/debian/patches/series 2008-10-28 07:53:52 UTC (rev 2466)
+++ desktop/trunk/xfwm4/debian/patches/series 2008-10-28 07:53:58 UTC (rev 2467)
@@ -10,3 +10,5 @@
10_fix-artifacts-resize.patch
11_fix-maximization-claim.patch
12_fix-iconization.patch
+13_rework-visual-depth-section.patch
+14_fix-win-gravity-WM-hint.patch
More information about the Pkg-xfce-commits
mailing list