diff --git a/xfwm4/.md5sum b/xfwm4/.md5sum index fc99c6e..9732243 100644 --- a/xfwm4/.md5sum +++ b/xfwm4/.md5sum @@ -1 +1,2 @@ +a1355e653eb52399aa736c483e4af09b xfwm4-4.4.1.patch c531edad76c909001acccc02936404f2 xfwm4-4.4.1.tar.bz2 diff --git a/xfwm4/Pkgfile b/xfwm4/Pkgfile index c323e22..fdc8799 100644 --- a/xfwm4/Pkgfile +++ b/xfwm4/Pkgfile @@ -6,11 +6,13 @@ name=xfwm4 version=4.4.1 -release=1 -source=(http://www.xfce.org/archive/xfce-$version/src/$name-$version.tar.bz2) +release=2 +source=(http://www.xfce.org/archive/xfce-$version/src/$name-$version.tar.bz2 \ + $name-$version.patch) build () { cd $name-$version + patch -p1 -i $SRC/$name-$version.patch ./configure --prefix=/usr \ --disable-static \ --disable-debug diff --git a/xfwm4/xfwm4-4.4.1.patch b/xfwm4/xfwm4-4.4.1.patch new file mode 100644 index 0000000..fa40222 --- /dev/null +++ b/xfwm4/xfwm4-4.4.1.patch @@ -0,0 +1,169 @@ +diff -Naur xfwm4-4.4.1/src/client.c xfwm4-4.4.1.new/src/client.c +--- xfwm4-4.4.1/src/client.c 2007-04-02 21:48:20.000000000 +0200 ++++ xfwm4-4.4.1.new/src/client.c 2007-09-21 17:52:04.000000000 +0200 +@@ -4868,21 +4868,19 @@ + + if (passdata.c) + { +- GdkPixbuf *icon; +- + TRACE ("entering cycle loop"); + passdata.wireframe = wireframeCreate (passdata.c); +- icon = getAppIcon (display_info, passdata.c->window, 32, 32); + passdata.tabwin = tabwinCreate (passdata.c->screen_info->gscr, c, + passdata.c, passdata.cycle_range, + screen_info->params->cycle_workspaces); + eventFilterPush (display_info->xfilter, clientCycleEventFilter, &passdata); + gtk_main (); + eventFilterPop (display_info->xfilter); +- wireframeDelete (screen_info, passdata.wireframe); + TRACE ("leaving cycle loop"); + tabwinDestroy (passdata.tabwin); + g_free (passdata.tabwin); ++ wireframeDelete (screen_info, passdata.wireframe); ++ updateXserverTime (display_info); + } + + if (passdata.c) +diff -Naur xfwm4-4.4.1/src/display.c xfwm4-4.4.1.new/src/display.c +--- xfwm4-4.4.1/src/display.c 2007-04-02 21:32:01.000000000 +0200 ++++ xfwm4-4.4.1.new/src/display.c 2007-09-21 17:52:30.000000000 +0200 +@@ -178,6 +178,19 @@ + FALSE, display_info->atoms) != 0); + } + ++static void ++myDisplayCreateTimestampWin (DisplayInfo *display_info) ++{ ++ XSetWindowAttributes attributes; ++ ++ attributes.event_mask = PropertyChangeMask; ++ attributes.override_redirect = TRUE; ++ display_info->timestamp_win = ++ XCreateWindow (display_info->dpy, DefaultRootWindow (display_info->dpy), ++ -100, -100, 10, 10, 0, 0, CopyFromParent, CopyFromParent, ++ CWEventMask | CWOverrideRedirect, &attributes); ++} ++ + DisplayInfo * + myDisplayInit (GdkDisplay *gdisplay) + { +@@ -309,6 +322,8 @@ + display->resize_cursor[CORNER_COUNT + SIDE_BOTTOM] = + XCreateFontCursor (display->dpy, XC_bottom_side); + ++ myDisplayCreateTimestampWin (display); ++ + display->xfilter = NULL; + display->screens = NULL; + display->clients = NULL; +@@ -340,6 +355,8 @@ + display->move_cursor = None; + XFreeCursor (display->dpy, display->root_cursor); + display->root_cursor = None; ++ XDestroyWindow (display->dpy, display->timestamp_win); ++ display->timestamp_win = None; + + if (display->hostname) + { +diff -Naur xfwm4-4.4.1/src/display.h xfwm4-4.4.1.new/src/display.h +--- xfwm4-4.4.1/src/display.h 2007-04-02 21:32:01.000000000 +0200 ++++ xfwm4-4.4.1.new/src/display.h 2007-09-21 17:52:56.000000000 +0200 +@@ -226,6 +226,7 @@ + gboolean quit; + gboolean reload; + ++ Window timestamp_win; + Cursor busy_cursor; + Cursor move_cursor; + Cursor root_cursor; +diff -Naur xfwm4-4.4.1/src/hints.c xfwm4-4.4.1.new/src/hints.c +--- xfwm4-4.4.1/src/hints.c 2007-03-11 14:44:43.000000000 +0100 ++++ xfwm4-4.4.1.new/src/hints.c 2007-09-21 18:05:26.000000000 +0200 +@@ -1167,27 +1167,18 @@ + return setXAtomManagerOwner(display_info, display_info->atoms[atom_id], root, w); + } + +- +-static Bool +-checkPropEvent (Display *display, XEvent *xevent, XPointer arg) ++void ++updateXserverTime (DisplayInfo *display_info) + { +- DisplayInfo *display_info; + ScreenInfo *screen_info; ++ char c = '\0'; + +- display_info = (DisplayInfo *) arg; +- g_return_val_if_fail (display_info, FALSE); +- +- screen_info = myDisplayGetDefaultScreen (display_info); +- g_return_val_if_fail (screen_info, FALSE); ++ g_return_if_fail (display_info); + +- if ((xevent->type == PropertyNotify) && +- (xevent->xproperty.window == screen_info->xfwm4_win) && +- (xevent->xproperty.atom == display_info->atoms[XFWM4_TIMESTAMP_PROP])) +- { +- return TRUE; +- } +- +- return FALSE; ++ XChangeProperty (display_info->dpy, display_info->timestamp_win, ++ display_info->atoms[XFWM4_TIMESTAMP_PROP], ++ display_info->atoms[XFWM4_TIMESTAMP_PROP], ++ 8, PropModeReplace, (unsigned char *) &c, 1); + } + + Time +@@ -1196,7 +1187,6 @@ + ScreenInfo *screen_info; + XEvent xevent; + Time timestamp; +- char c = '\0'; + + g_return_val_if_fail (display_info, (Time) CurrentTime); + timestamp = myDisplayGetCurrentTime (display_info); +@@ -1206,12 +1196,8 @@ + g_return_val_if_fail (screen_info, (Time) CurrentTime); + + TRACE ("getXServerTime: Using X server roundtrip"); +- XChangeProperty (display_info->dpy, screen_info->xfwm4_win, +- display_info->atoms[XFWM4_TIMESTAMP_PROP], +- display_info->atoms[XFWM4_TIMESTAMP_PROP], +- 8, PropModeReplace, (unsigned char *) &c, 1); +- XIfEvent (display_info->dpy, &xevent, checkPropEvent, (XPointer) display_info); +- ++ updateXserverTime (display_info); ++ XWindowEvent (display_info->dpy, display_info->timestamp_win, PropertyChangeMask, &xevent); + timestamp = (Time) myDisplayUpdateCurrentTime (display_info, &xevent); + } + +diff -Naur xfwm4-4.4.1/src/hints.h xfwm4-4.4.1.new/src/hints.h +--- xfwm4-4.4.1/src/hints.h 2007-03-11 14:44:43.000000000 +0100 ++++ xfwm4-4.4.1.new/src/hints.h 2007-09-21 17:55:26.000000000 +0200 +@@ -269,6 +269,7 @@ + int, + Window , + Window); ++void updateXserverTime (DisplayInfo *); + Time getXServerTime (DisplayInfo *); + + #ifdef ENABLE_KDE_SYSTRAY_PROXY +diff -Naur xfwm4-4.4.1/src/mypixmap.c xfwm4-4.4.1.new/src/mypixmap.c +--- xfwm4-4.4.1/src/mypixmap.c 2007-03-11 14:44:43.000000000 +0100 ++++ xfwm4-4.4.1.new/src/mypixmap.c 2007-09-21 17:54:00.000000000 +0200 +@@ -941,12 +941,7 @@ + g_return_val_if_fail (dir != NULL, FALSE); + g_return_val_if_fail (file != NULL, FALSE); + +- pm->screen_info = screen_info; +- pm->pixmap = None; +- pm->mask = None; +- pm->width = 1; +- pm->height = 1; +- ++ xfwmPixmapInit (screen_info, pm); + /* + * Always try to load the XPM first, using our own routine + * that supports XPM color symbol susbstitution (used to