[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