From: Dennis Kasprzyk Date: Fri, 12 Feb 2010 20:07:41 +0000 (+0100) Subject: Kde 4.4 support. X-Git-Url: http://gitweb.compiz.org/?p=compiz%2Fcore;a=commitdiff_plain;h=04c6a44893a00088c63acd3ba327022f8aa551cc;hp=65ed618a5f36b795dbef69ba04ebde6b911d228c Kde 4.4 support. --- diff --git a/kde/window-decorator-kde4/window.cpp b/kde/window-decorator-kde4/window.cpp index a7cd2d4..99c502d 100644 --- a/kde/window-decorator-kde4/window.cpp +++ b/kde/window-decorator-kde4/window.cpp @@ -486,31 +486,39 @@ KWD::Window::showWindowMenu (const QRect &pos) 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 @@ -752,6 +760,96 @@ KWD::Window::compositingActive (void) const return true; } +#if KDE_IS_VERSION(4,3,90) + +QRect +KWD::Window::transparentRect () const +{ + return QRect (); +} + +bool +KWD::Window::isClientGroupActive () +{ + return false; +} + +QList +KWD::Window::clientGroupItems () const +{ + QList 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) { @@ -1466,7 +1564,7 @@ KWD::Window::moveWindow (QMouseEvent *qme) NET::Direction direction; direction = positionToDirection (mDecor->mousePosition (qme->pos ())); - + QPoint p (mGeometry.x () - mExtents.left, mGeometry.y () - mExtents.top); p += qme->pos (); @@ -1476,7 +1574,7 @@ KWD::Window::moveWindow (QMouseEvent *qme) Decorator::rootInfo ()->restackRequest (mClientId, NET::FromApplication, None, Above, QX11Info::appTime()); - + Decorator::rootInfo ()->moveResizeRequest (mClientId, p.x (), p.y (), diff --git a/kde/window-decorator-kde4/window.h b/kde/window-decorator-kde4/window.h index 40a5076..c2b274b 100644 --- a/kde/window-decorator-kde4/window.h +++ b/kde/window-decorator-kde4/window.h @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -111,7 +112,24 @@ class Window: public QObject, public KDecorationBridgeUnstable { /* unstable API */ virtual bool compositingActive () const; - +#if KDE_IS_VERSION(4,3,90) + virtual QRect transparentRect () const; + + virtual bool isClientGroupActive (); + virtual QList 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 virtual bool eventFilter (QObject* o, QEvent* e); void handleActiveChange (void); @@ -191,8 +209,10 @@ class Window: public QObject, public KDecorationBridgeUnstable { 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);