rpms/compiz/F-11 compiz-0.7.8-kde4-initialsize.patch, NONE, 1.1 compiz-0.7.8-kde43.patch, NONE, 1.1 compiz-0.7.8-kde44.patch, NONE, 1.1 compiz.spec, 1.163, 1.164

Kevin Kofler kkofler at fedoraproject.org
Sat Feb 13 18:26:20 UTC 2010


Author: kkofler

Update of /cvs/pkgs/rpms/compiz/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv29109/F-11

Modified Files:
	compiz.spec 
Added Files:
	compiz-0.7.8-kde4-initialsize.patch compiz-0.7.8-kde43.patch 
	compiz-0.7.8-kde44.patch 
Log Message:
* Sat Feb 13 2010 Kevin Kofler <Kevin at tigcc.ticalc.org> - 0.7.8-20
- backport patch to fix Oxygen/Ozone window decoration with KDE >= 4.3 (#519299)
- backport patch to fix the initial size issues with the KDE 4 window decorator
- backport patch to fix kde4-window-decorator build/run for KDE 4.4 (#564571)

This build will be included in the KDE 4.4.0 update group, please DO NOT push it separately (as it is being built against KDE 4.4.0).

Thanks to leigh123linux for the testing on 0.8.2.

compiz-0.7.8-kde4-initialsize.patch:
 window.cpp |   37 +++++++++++++++++++++++++++++++++++++
 window.h   |    1 +
 2 files changed, 38 insertions(+)

--- NEW FILE compiz-0.7.8-kde4-initialsize.patch ---
diff -ur compiz-0.7.8-kde43/kde/window-decorator-kde4/window.cpp compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.cpp
--- compiz-0.7.8-kde43/kde/window-decorator-kde4/window.cpp	2010-02-13 18:04:27.000000000 +0100
+++ compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.cpp	2010-02-13 19:02:47.000000000 +0100
@@ -768,6 +768,8 @@
 
     mDecor = decor;
 
+    mDecor->widget ()->installEventFilter (this);
+
     mPaintRedirector = new KWin::PaintRedirector (mDecor->widget ());
     connect (mPaintRedirector, SIGNAL (paintPending()),
              this, SLOT (decorRepaintPending ()));
@@ -1749,3 +1751,38 @@
 	return p + QPoint (mPadding.left, mPadding.right);
     return childAt (p.x (), p.y ())->mapFrom (decorWidget (), p + QPoint (mPadding.left, mPadding.right));
 }
+
+bool
+KWD::Window::eventFilter (QObject *o,
+			  QEvent  *e)
+{
+    if (!mDecor || o != mDecor->widget ())
+        return false;
+    if (e->type() == QEvent::Resize)
+    {
+	QResizeEvent* ev = static_cast<QResizeEvent*> (e);
+	// Filter out resize events that inform about size different than frame size.
+	// This will ensure that mDecor->width() etc. and mDecor->widget()->width() will be in sync.
+	// These events only seem to be delayed events from initial resizing before show() was called
+	// on the decoration widget.
+	if (ev->size () != (mGeometry.size () + QSize (mExtents.left + mExtents.right, 
+						       mExtents.top + mExtents.bottom)))
+	{
+	    int w = mGeometry.width () + mExtents.left + mExtents.right;
+	    int h = mGeometry.height () + mExtents.top + mExtents.bottom;
+    
+	    mDecor->resize (QSize (w, h));
+	    return true;
+	}
+	// HACK: Avoid decoration redraw delays. On resize Qt sets WA_WStateConfigPending
+	// which delays all painting until a matching ConfigureNotify event comes.
+	// But this process itself is the window manager, so it's not needed
+	// to wait for that event, the geometry is known.
+	// Note that if Qt in the future changes how this flag is handled and what it
+	// triggers then this may potentionally break things. See mainly QETWidget::translateConfigEvent().
+	mDecor->widget()->setAttribute( Qt::WA_WState_ConfigPending, false );
+	mDecor->widget()->update();
+	return false;
+    }
+    return false;
+}
diff -ur compiz-0.7.8-kde43/kde/window-decorator-kde4/window.h compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.h
--- compiz-0.7.8-kde43/kde/window-decorator-kde4/window.h	2010-02-13 18:04:27.000000000 +0100
+++ compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.h	2010-02-13 19:02:47.000000000 +0100
@@ -176,6 +176,7 @@
 	    return mFakeRelease;
 	}
 	
+	virtual bool eventFilter (QObject *o, QEvent *e);
 
     private:
 	void createDecoration (void);

compiz-0.7.8-kde43.patch:
 Makefile.am         |    3 
 Makefile.in         |   11 
 decorator.cpp       |  162 -------
 decorator.h         |   31 -
 main.cpp            |   76 ---
 paintredirector.cpp |  125 ++++++
 paintredirector.h   |   60 ++
 window.cpp          | 1082 ++++++++++++++--------------------------------------
 window.h            |   75 +--
 9 files changed, 551 insertions(+), 1074 deletions(-)

--- NEW FILE compiz-0.7.8-kde43.patch ---
diff -Nur compiz-0.7.8-kde42/kde/window-decorator-kde4/decorator.cpp compiz-0.7.8-kde43/kde/window-decorator-kde4/decorator.cpp
--- compiz-0.7.8-kde42/kde/window-decorator-kde4/decorator.cpp	2008-08-08 13:20:31.000000000 +0200
+++ compiz-0.7.8-kde43/kde/window-decorator-kde4/decorator.cpp	2010-02-13 18:04:27.000000000 +0100
@@ -61,16 +61,9 @@
 #define DBUS_METHOD_GET     "get"
 #define DBUS_SIGNAL_CHANGED "changed"
 
-double decorationOpacity = 0.75;
-bool   decorationOpacityShade = false;
-double activeDecorationOpacity = 1.0;
-bool   activeDecorationOpacityShade = false;
 int    blurType = BLUR_TYPE_NONE;
 
-decor_context_t KWD::Decorator::mDefaultContext;
-decor_extents_t KWD::Decorator::mDefaultBorder;
 decor_shadow_t *KWD::Decorator::mNoBorderShadow = 0;
-decor_shadow_t *KWD::Decorator::mDefaultShadow  = 0;
 KWD::PluginManager *KWD::Decorator::mPlugins = 0;
 KWD::Options *KWD::Decorator::mOptions = 0;
 NETRootInfo *KWD::Decorator::mRootInfo;
@@ -91,10 +84,8 @@
 }
 
 
-KWD::Decorator::Decorator (Display* display,
-			   Qt::HANDLE visual,
-			   Qt::HANDLE colormap) :
-    KApplication (display, visual, colormap),
+KWD::Decorator::Decorator () :
+    KApplication (),
     mConfig (0),
     mCompositeWindow (0),
     mSwitcher (0)
@@ -200,13 +191,11 @@
 }
 
 bool
-KWD::Decorator::enableDecorations (Time timestamp,
-				   int  damageEvent)
+KWD::Decorator::enableDecorations (Time timestamp)
 {
     QList <WId>::ConstIterator it;
 
     mDmSnTimestamp = timestamp;
-    mDamageEvent   = damageEvent;
 
     if (!pluginManager ()->loadPlugin (""))
 	return false;
@@ -239,8 +228,6 @@
     foreach (WId id, KWindowSystem::windows ())
 	handleWindowAdded (id);
 
-    connect (&mIdleTimer, SIGNAL (timeout ()), SLOT (processDamage ()));
-
     connect (Plasma::Theme::defaultTheme (), SIGNAL (themeChanged ()),
 	     SLOT (plasmaThemeChanged ()));
 
@@ -252,31 +239,6 @@
 }
 
 void
-KWD::Decorator::updateDefaultShadow (KWD::Window *w)
-{
-    bool uniqueHorzShape, uniqueVertShape;
-
-    if (mDefaultShadow)
-    {
-	decor_shadow_destroy (QX11Info::display(), mDefaultShadow);
-	mDefaultShadow = NULL;
-    }
-
-    w->getShapeInfo (&uniqueHorzShape, &uniqueVertShape);
-
-    /* only return shadow if decoration doesn't use a unique shape */
-    if (uniqueHorzShape || uniqueVertShape)
-	return;
-
-    mDefaultContext = *w->context ();
-    mDefaultBorder  = *w->border ();
-    mDefaultShadow  = w->shadow ();
-
-    if (mDefaultShadow)
-	decor_shadow_reference (mDefaultShadow);
-}
-
-void
 KWD::Decorator::updateAllShadowOptions (void)
 {
     QDBusInterface       *compiz;
@@ -345,12 +307,6 @@
     mShadowOptions = *opt;
 
     updateShadow ();
-
-    mDecorNormal->reloadDecoration ();
-    mDecorActive->reloadDecoration ();
-
-    for (it = mClients.constBegin (); it != mClients.constEnd (); it++)
-	it.value ()->reloadDecoration ();
 }
 
 void
@@ -362,12 +318,6 @@
 
     xscreen = ScreenOfDisplay (xdisplay, QX11Info::appScreen ());
 
-    if (mDefaultShadow)
-    {
-	decor_shadow_destroy (xdisplay, mDefaultShadow);
-	mDefaultShadow = NULL;
-    }
-
     if (mNoBorderShadow)
 	decor_shadow_destroy (xdisplay, mNoBorderShadow);
 
@@ -410,18 +360,6 @@
     }
 }
 
-void
-KWD::Decorator::processDamage (void)
-{
-    QMap <WId, KWD::Window *>::ConstIterator it;
-
-    mDecorNormal->processDamage ();
-    mDecorActive->processDamage ();
-
-    for (it = mClients.constBegin (); it != mClients.constEnd (); it++)
-	it.value ()->processDamage ();
-}
-
 bool
 KWD::Decorator::x11EventFilter (XEvent *xevent)
 {
@@ -429,50 +367,12 @@
     int		status;
 
     switch (xevent->type) {
-    case MapNotify: {
-	XMapEvent *xme = reinterpret_cast <XMapEvent *> (xevent);
-
-	if (mWindows.contains (xme->window))
-	    client = mWindows[xme->window];
-	else if (mDecorNormal->winId () == xme->window)
-	    client = mDecorNormal;
-	else if (mDecorActive->winId () == xme->window)
-	    client = mDecorActive;
-	else
-	    break;
-
-	if (client->handleMap ())
-	{
-	    if (!mIdleTimer.isActive ())
-	    {
-		mIdleTimer.setSingleShot (true);
-		mIdleTimer.start (0);
-	    }
-	}
-    } break;
     case ConfigureNotify: {
 	XConfigureEvent *xce = reinterpret_cast <XConfigureEvent *> (xevent);
 
 	if (mFrames.contains (xce->window))
 	    mFrames[xce->window]->updateFrame (xce->window);
 
-	if (mWindows.contains (xce->window))
-	    client = mWindows[xce->window];
-	else if (mDecorNormal->winId () == xce->window)
-	    client = mDecorNormal;
-	else if (mDecorActive->winId () == xce->window)
-	    client = mDecorActive;
-	else
-	    break;
-
-	if (client->handleConfigure (QSize (xce->width, xce->height)))
-	{
-	    if (!mIdleTimer.isActive ())
-	    {
-		mIdleTimer.setSingleShot (true);
-		mIdleTimer.start (0);
-	    }
-	}
     } break;
     case SelectionRequest:
 	decor_handle_selection_request (QX11Info::display(), xevent, mDmSnTimestamp);
@@ -512,6 +412,9 @@
 	    break;
 
 	client = mFrames[xce->window];
+	
+	if (!client->decorWidget ())
+	    break;
 
 	child = client->childAt (xce->x, xce->y);
 	if (child)
@@ -549,6 +452,9 @@
 	    break;
 
 	client = mFrames[xme->window];
[...1909 lines suppressed...]
+
+QWidget *
+KWD::Window::decorWidget (void) const
+{
+    if (!mDecor)
+	return 0;
+    return mDecor->widget ();
+}
+
+QWidget *
+KWD::Window::childAt (int x, int y) const
+{
+    if (!mDecor)
+	return 0;
+
+    QWidget *child = mDecor->widget ()->childAt (x + mPadding.left, y + mPadding.top);
+    return (child)? child : decorWidget ();
+}
+
+QPoint 
+KWD::Window::mapToChildAt (QPoint p) const
+{
+    if (!mDecor)
+	return p;
+    if (childAt (p.x (), p.y ()) == decorWidget ())
+	return p + QPoint (mPadding.left, mPadding.right);
+    return childAt (p.x (), p.y ())->mapFrom (decorWidget (), p + QPoint (mPadding.left, mPadding.right));
+}
diff -Nur compiz-0.7.8-kde42/kde/window-decorator-kde4/window.h compiz-0.7.8-kde43/kde/window-decorator-kde4/window.h
--- compiz-0.7.8-kde42/kde/window-decorator-kde4/window.h	2010-02-13 15:38:05.000000000 +0100
+++ compiz-0.7.8-kde43/kde/window-decorator-kde4/window.h	2010-02-13 18:04:27.000000000 +0100
@@ -43,9 +43,14 @@
 class KActionCollection;
 class QMenu;
 
+namespace KWin
+{
+    class PaintRedirector;
+}
+
 namespace KWD
 {
-class Window:public QWidget, public KDecorationBridgeUnstable {
+class Window: public QObject, public KDecorationBridgeUnstable {
     Q_OBJECT public:
 
 	enum Type
@@ -105,44 +110,38 @@
 	virtual void grabXServer (bool grab);
 
 	/* unstable API */
-	virtual void repaintShadow ();
 	virtual bool compositingActive () const;
-	virtual bool shadowsActive () const;
-	virtual double opacity () const;
 
 	void handleActiveChange (void);
 	void updateFrame (WId frame);
 	void updateWindowGeometry (void);
 	void updateCursor (QPoint pos);
 	void updateSelected (WId selected);
+	
 	WId frameId (void) const
 	{
 	    return mFrame;
 	}
+	
 	KDecoration *decoration (void) const
 	{
 	    return mDecor;
 	}
+	
+	QWidget *decorWidget (void) const;
+	QWidget *childAt (int x, int y) const;
+	QPoint mapToChildAt (QPoint p) const;
+	
 	QWidget *activeChild (void) const
 	{
 	    return mActiveChild;
 	}
+	
 	void setActiveChild (QWidget * child)
 	{
 	    mActiveChild = child;
 	}
-	QRegion *getShape (void)
-	{
-	    if (mShapeSet)
-		return &mShape;
-
-	    return NULL;
-	}
-	void getShapeInfo (bool *horz, bool *vert)
-	{
-	    *horz = mUniqueHorzShape;
-	    *vert = mUniqueVertShape;
-	}
+	
 	void moveWindow (QMouseEvent *qme);
 	void reloadDecoration (void);
 	void updateState (void);
@@ -157,21 +156,7 @@
 	{
 	    return mPixmap;
 	}
-	void addDamageRect (int x, int y, int w, int h)
-	{
-	    mDamage += QRegion (x, y, w, h);
-	}
-	bool handleMap (void);
-	bool handleConfigure (QSize size);
-	void processDamage (void);
-	decor_context_t *context (void)
-	{
-	    return &mContext;
-	}
-	decor_shadow_t *shadow (void)
-	{
-	    return mShadow;
-	}
+	
 	decor_extents_t *border (void)
 	{
 	    return &mBorder;
@@ -194,7 +179,7 @@
 
     private:
 	void createDecoration (void);
-	bool resizeDecoration (bool force = false);
+	void resizeDecoration (bool force = false);
 	void updateBlurProperty (int topOffset,
 				 int bottomOffset,
 				 int leftOffset,
@@ -205,16 +190,16 @@
 				  QMouseEvent		     *qme);
 	NET::Direction positionToDirection (int pos);
 	Cursor positionToCursor (QPoint pos);
-	void rebindPixmap (void);
 
 
     private slots:
-	void updateShadow (void);
 	void handlePopupActivated (QAction *action);
 	void handleOpacityPopupActivated (QAction *action);
 	void handleDesktopPopupActivated (QAction *action);
 	void handlePopupAboutToShow (void);
 
+	void decorRepaintPending ();
+
     private:
 	Type mType;
 	WId mParentId;
@@ -226,23 +211,14 @@
 	QPixmap mIcon;
 	QPixmap mMiniIcon;
 	decor_extents_t mBorder;
+	decor_extents_t mPadding;
+	decor_extents_t mExtents;
 	unsigned short mOpacity;
 	KDecoration *mDecor;
-	QPixmap mTexturePixmap;
-	QPixmap mTexturePixmapBuffer;
 	Pixmap mPixmap;
-	QRegion mDamage;
-	WId mDamageId;
-	decor_layout_t mLayout;
-	decor_context_t mContext;
-	decor_shadow_t *mShadow;
-	Picture mPicture;
-	Picture mTexturePicture;
-	Picture mDecorationPicture;
+	QPixmap mPixmapQt;
 	bool mUpdateProperty;
 	bool mShapeSet;
-	bool mUniqueHorzShape;
-	bool mUniqueVertShape;
 	QRegion mShape;
 	QWidget *mActiveChild;
 	bool mSupportTakeFocus;
@@ -252,10 +228,7 @@
 	QMenu *mOpacityMenu;
 	QMenu *mDesktopMenu;
 	unsigned long mState;
-	bool mMapped;
-	int mPendingMap;
-	int mPendingConfigure;
-	QSize mSize;
+
 	QProcess mProcessKiller;
 	KActionCollection mKeys;
 	bool mFakeRelease;
@@ -271,6 +244,8 @@
         QAction *mMinimizeOpAction;
         QAction *mCloseOpAction;
 	QAction *mDesktopOpAction;
+
+	KWin::PaintRedirector *mPaintRedirector;
     };
 }
 

compiz-0.7.8-kde44.patch:
 window.cpp |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 window.h   |   24 ++++++++++++
 2 files changed, 129 insertions(+), 9 deletions(-)

--- NEW FILE compiz-0.7.8-kde44.patch ---
diff -ur compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.cpp compiz-0.7.8-kde44/kde/window-decorator-kde4/window.cpp
--- compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.cpp	2010-02-13 19:02:47.000000000 +0100
+++ compiz-0.7.8-kde44/kde/window-decorator-kde4/window.cpp	2010-02-13 19:04:14.000000000 +0100
@@ -489,31 +489,39 @@
     showWindowMenu (pos.bottomLeft ());
 }
 
-void
-KWD::Window::processMousePressEvent (QMouseEvent *qme)
+KWD::Options::MouseCommand
+KWD::Window::buttonToCommand (Qt::MouseButtons button)
 {
     Options::MouseCommand com = Options::MouseNothing;
-    bool		  active = isActive ();
+    bool                  active = isActive ();
 
     if (!mSupportTakeFocus)
-	active = TRUE;
+	active = true;
 
-    switch (qme->button ()) {
+    switch (button) {
     case Qt::LeftButton:
 	com = active ? Decorator::options ()->commandActiveTitlebar1 () :
-	Decorator::options()->commandInactiveTitlebar1 ();
+	               Decorator::options()->commandInactiveTitlebar1 ();
 	break;
     case Qt::MidButton:
 	com = active ? Decorator::options ()->commandActiveTitlebar2 () :
-	Decorator::options()->commandInactiveTitlebar2 ();
+	               Decorator::options()->commandInactiveTitlebar2 ();
 	break;
     case Qt::RightButton:
 	com = active ? Decorator::options ()->commandActiveTitlebar3 () :
-	Decorator::options()->commandInactiveTitlebar3 ();
+	               Decorator::options()->commandInactiveTitlebar3 ();
     default:
 	break;
     }
 
+    return com;
+}
+
+void
+KWD::Window::processMousePressEvent (QMouseEvent *qme)
+{
+    Options::MouseCommand com = buttonToCommand (qme->button ());
+
     if (qme->button () == Qt::LeftButton)
     {
 	// actions where it's not possible to get the matching release event
@@ -755,6 +763,96 @@
     return true;
 }
 
+#if KDE_IS_VERSION(4,3,90)
+
+QRect
+KWD::Window::transparentRect () const
+{
+    return QRect ();
+}
+
+bool
+KWD::Window::isClientGroupActive ()
+{
+    return false;
+}
+
+QList<ClientGroupItem>
+KWD::Window::clientGroupItems () const
+{
+    QList<ClientGroupItem> items;
+
+    QIcon icon (mIcon);
+    icon.addPixmap (mMiniIcon);
+
+    items.append (ClientGroupItem (mName, icon));
+
+    return items;
+}
+
+long
+KWD::Window::itemId (int index)
+{
+    return (long) mClientId;
+}
+
+int
+KWD::Window::visibleClientGroupItem ()
+{
+    return 0;
+}
+
+void
+KWD::Window::setVisibleClientGroupItem (int index)
+{
+}
+
+void
+KWD::Window::moveItemInClientGroup (int index, int before)
+{
+}
+
+void
+KWD::Window::moveItemToClientGroup (long itemId, int before)
+{
+}
+
+void
+KWD::Window::removeFromClientGroup (int index, const QRect& newGeom)
+{
+}
+
+void
+KWD::Window::closeClientGroupItem (int index)
+{
+    closeWindow ();
+}
+
+void
+KWD::Window::closeAllInClientGroup ()
+{
+    closeWindow ();
+}
+
+void
+KWD::Window::displayClientMenu (int index, const QPoint& pos)
+{
+    showWindowMenu (pos);
+}
+
+KDecorationDefines::WindowOperation
+KWD::Window::buttonToWindowOperation(Qt::MouseButtons button)
+{
+    Options::MouseCommand com = buttonToCommand (button);
+
+    if (com == Options::MouseOperationsMenu)
+	return KDecorationDefines::OperationsOp;
+
+    return KDecorationDefines::NoOp;
+}
+
+#endif
+
 void
 KWD::Window::createDecoration (void)
 {
diff -ur compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.h compiz-0.7.8-kde44/kde/window-decorator-kde4/window.h
--- compiz-0.7.8-kde4-initialsize/kde/window-decorator-kde4/window.h	2010-02-13 19:02:47.000000000 +0100
+++ compiz-0.7.8-kde44/kde/window-decorator-kde4/window.h	2010-02-13 19:04:14.000000000 +0100
@@ -26,6 +26,7 @@
 
 #include <kdecorationbridge.h>
 #include <KDE/KActionCollection>
+#include <kdeversion.h>
 
 #include <qpixmap.h>
 #include <qwidget.h>
@@ -112,6 +113,25 @@
 	/* unstable API */
 	virtual bool compositingActive () const;
 
+#if KDE_IS_VERSION(4,3,90)
+	virtual QRect transparentRect () const;
+
+	virtual bool isClientGroupActive ();
+	virtual QList<ClientGroupItem> clientGroupItems () const;
+	virtual long itemId (int index);
+	virtual int visibleClientGroupItem ();
+	virtual void setVisibleClientGroupItem (int index);
+	virtual void moveItemInClientGroup (int index, int before);
+	virtual void moveItemToClientGroup (long itemId, int before);
+	virtual void removeFromClientGroup (int index, const QRect& newGeom);
+	virtual void closeClientGroupItem (int index);
+	virtual void closeAllInClientGroup ();
+	virtual void displayClientMenu (int index, const QPoint& pos);
+
+	virtual WindowOperation
+	    buttonToWindowOperation(Qt::MouseButtons button);
+#endif
+
 	void handleActiveChange (void);
 	void updateFrame (WId frame);
 	void updateWindowGeometry (void);
@@ -187,8 +207,10 @@
 				 int rightOffset);
 	void updateProperty (void);
 	void getWindowProtocols (void);
+
+	Options::MouseCommand buttonToCommand (Qt::MouseButtons button);
 	void performMouseCommand (KWD::Options::MouseCommand command,
-				  QMouseEvent		     *qme);
+				  QMouseEvent                *qme);
 	NET::Direction positionToDirection (int pos);
 	Cursor positionToCursor (QPoint pos);
 


Index: compiz.spec
===================================================================
RCS file: /cvs/pkgs/rpms/compiz/F-11/compiz.spec,v
retrieving revision 1.163
retrieving revision 1.164
diff -u -p -r1.163 -r1.164
--- compiz.spec	10 Jul 2009 11:57:27 -0000	1.163
+++ compiz.spec	13 Feb 2010 18:26:20 -0000	1.164
@@ -14,7 +14,7 @@ URL:            http://www.go-compiz.org
 License:        GPLv2+ and LGPLv2+ and MIT
 Group:          User Interface/Desktops
 Version:        0.7.8
-Release:        19%{?dist}
+Release:        20%{?dist}
 
 Summary:        OpenGL window and compositing manager
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -89,6 +89,18 @@ Patch127: compiz-0.7.8-kde42-krunner.pat
 # backport to fix RH #484056
 Patch128: compiz-0.7.8-gwd-pixmap-fix.patch
 
+# fix KDE4 window decorator for KDE >= 4.3, fixes Oxygen/Ozone windeco (#519299)
+# backport of upstream commit c49a8742241ba09739d0e07efed068f9b3d786ff
+Patch140: compiz-0.7.8-kde43.patch
+
+# fix initial size issues with the KDE4 window decorator
+# backport of upstream commit e90ea9aa2c2092ad61e77f6681ec71bed603f661
+Patch141: compiz-0.7.8-kde4-initialsize.patch
+
+# fix KDE4 window decorator to build and run with KDE 4.4 (#564571)
+# backport of upstream commit ef1a3e64d35d7a0f222de79006e17ff6609ce2c7
+Patch142: compiz-0.7.8-kde44.patch
+
 %description
 Compiz is one of the first OpenGL-accelerated compositing window
 managers for the X Window System. The integration allows it to perform
@@ -177,6 +189,11 @@ touch configure
 %patch127 -p1 -b .krunner
 %define _default_patch_fuzz 2
 %patch128 -p1 -b .gwd-pixmap
+%define _default_patch_fuzz 0
+
+%patch140 -p1 -b .kde43
+%patch141 -p1 -b .kde4-initialsize
+%patch142 -p1 -b .kde44
 
 %build
 rm -rf $RPM_BUILD_ROOT
@@ -388,6 +405,11 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Sat Feb 13 2010 Kevin Kofler <Kevin at tigcc.ticalc.org> - 0.7.8-20
+- backport patch to fix Oxygen/Ozone window decoration with KDE >= 4.3 (#519299)
+- backport patch to fix the initial size issues with the KDE 4 window decorator
+- backport patch to fix kde4-window-decorator build/run for KDE 4.4 (#564571)
+
 * Fri Jul 10 2009 Adel Gadllah <adel.gadllah at gmail.com> - 0.7.8-19
 - Replace compiz-0.7.8-pin-initial-plugins with a fixed up one
   by Philippe Troin <phil at fifi.org> (RH #473896)



More information about the scm-commits mailing list