diff --git a/xfwm4-4.6.1-multi-monitor.patch b/xfwm4-4.6.1-multi-monitor.patch new file mode 100644 index 0000000..630eff2 --- /dev/null +++ b/xfwm4-4.6.1-multi-monitor.patch @@ -0,0 +1,84 @@ +From 455157569524053f1383a1b6fe1fa3f162e6d5cf Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Sat, 10 Oct 2009 18:05:36 +0000 +Subject: Keep windows entirely visible on screen change (bug #5795) + +--- +diff --git a/src/client.c b/src/client.c +index b3181e9..2e6342a 100644 +--- a/src/client.c ++++ b/src/client.c +@@ -722,8 +722,7 @@ clientConfigure (Client * c, XWindowChanges * wc, unsigned long mask, unsigned s + && CONSTRAINED_WINDOW (c) + && !((c->gravity == StaticGravity) && (c->x == 0) && (c->y == 0))) + { +- /* Keep fully visible only on resize */ +- clientConstrainPos (c, (mask & (CWWidth | CWHeight))); ++ clientConstrainPos (c, CFG_KEEP_VISIBLE); + + if (c->x != px) + { +@@ -804,7 +803,7 @@ clientMoveResizeWindow (Client * c, XWindowChanges * wc, unsigned long mask) + { + ScreenInfo *screen_info; + DisplayInfo *display_info; +- gboolean constrained; ++ unsigned short flags; + + g_return_if_fail (c != NULL); + TRACE ("entering clientMoveResizeWindow"); +@@ -843,14 +842,18 @@ clientMoveResizeWindow (Client * c, XWindowChanges * wc, unsigned long mask) + } + + /* Still a move/resize after cleanup? */ +- constrained = FALSE; ++ flags = CFG_REQUEST; + if (mask & (CWX | CWY | CWWidth | CWHeight)) + { + if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED)) + { + clientRemoveMaximizeFlag (c); + } +- constrained = TRUE; ++ flags |= CFG_REQUEST; ++ } ++ if (mask & (CWWidth | CWHeight)) ++ { ++ flags |= CFG_KEEP_VISIBLE; + } + /* + Let's say that if the client performs a XRaiseWindow, we show the window if focus +@@ -878,7 +881,7 @@ clientMoveResizeWindow (Client * c, XWindowChanges * wc, unsigned long mask) + } + } + /* And finally, configure the window */ +- clientConfigure (c, wc, mask, (constrained ? CFG_CONSTRAINED : 0) | CFG_REQUEST); ++ clientConfigure (c, wc, mask, flags); + } + + void +@@ -3499,7 +3502,7 @@ clientScreenResize(ScreenInfo *screen_info) + { + wc.x = c->x; + wc.y = c->y; +- clientConfigure (c, &wc, CWX | CWY, CFG_CONSTRAINED | CFG_REQUEST); ++ clientConfigure (c, &wc, CWX | CWY, CFG_CONSTRAINED | CFG_REQUEST | CFG_KEEP_VISIBLE); + } + } + +diff --git a/src/client.h b/src/client.h +index 58e0e51..1c6c032 100644 +--- a/src/client.h ++++ b/src/client.h +@@ -64,7 +64,8 @@ + #define CFG_CONSTRAINED (1<<0) + #define CFG_REQUEST (1<<1) + #define CFG_NOTIFY (1<<2) +-#define CFG_FORCE_REDRAW (1<<3) ++#define CFG_KEEP_VISIBLE (1<<3) ++#define CFG_FORCE_REDRAW (1<<4) + + #define INCLUDE_HIDDEN (1<<0) + #define INCLUDE_SHADED (1<<1) +-- +cgit v0.8.2.1 diff --git a/xfwm4.spec b/xfwm4.spec index 287b29d..addcea4 100644 --- a/xfwm4.spec +++ b/xfwm4.spec @@ -1,12 +1,13 @@ Summary: Next generation window manager for Xfce Name: xfwm4 Version: 4.6.1 -Release: 5%{?dist} +Release: 6%{?dist} License: GPLv2+ URL: http://www.xfce.org/ Source0: http://www.xfce.org/archive/xfce-%{version}/src/xfwm4-%{version}.tar.bz2 Patch0: xfwm4-4.6.1-nodoka.patch Patch1: xfwm4-4.6.1-focus.patch +Patch2: xfwm4-4.6.1-multi-monitor.patch Group: User Interface/Desktops BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -32,6 +33,7 @@ xfwm4 is a window manager compatible with GNOME, GNOME2, KDE2, KDE3 and Xfce. # use Nodoka Theme %patch0 -p1 -b .nodoka %patch1 -p1 -b .focus +%patch2 -p1 -b .multiwindow %build %configure --disable-static @@ -79,6 +81,9 @@ fi %{_libexecdir}/xfce4/xfwm4 %changelog +* Sun Dec 13 2009 Kevin Fenzi - 4.6.1-6 +- Add patch for multi monitor issue (xfce bug #5795) + * Sun Sep 20 2009 Christoph Wickert - 4.6.1-5 - Validate *.desktop files