diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 4aed2c8219774f5d797760606b8489a92ddc5163 (patch) | |
tree | 3f8c130f7d269626bf6a9447407ef6c35954426a /kwin/placement.h | |
download | tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kwin/placement.h')
-rw-r--r-- | kwin/placement.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/kwin/placement.h b/kwin/placement.h new file mode 100644 index 000000000..49b436d49 --- /dev/null +++ b/kwin/placement.h @@ -0,0 +1,92 @@ +/***************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org> +Copyright (C) 1997 to 2002 Cristian Tibirna <tibirna@kde.org> +Copyright (C) 2003 Lubos Lunak <l.lunak@kde.org> + +You can Freely distribute this program under the GNU General Public +License. See the file "COPYING" for the exact licensing terms. +******************************************************************/ + +#ifndef KWIN_PLACEMENT_H +#define KWIN_PLACEMENT_H + +#include <qpoint.h> +#include <qvaluelist.h> + +namespace KWinInternal +{ + +class Workspace; +class Client; + +class Placement + { + public: + + Placement(Workspace* w); + + /** + * Placement policies. How workspace decides the way windows get positioned + * on the screen. The better the policy, the heavier the resource use. + * Normally you don't have to worry. What the WM adds to the startup time + * is nil compared to the creation of the window itself in the memory + */ + enum Policy + { + NoPlacement, // not really a placement + Default, // special, means to use the global default + Unknown, // special, means the function should use its default + Random, + Smart, + Cascade, + Centered, + ZeroCornered, + UnderMouse, // special + OnMainWindow, // special + Maximizing + }; + + void place(Client* c, QRect& area ); + + void placeAtRandom (Client* c, const QRect& area, Policy next = Unknown ); + void placeCascaded (Client* c, QRect& area, Policy next = Unknown ); + void placeSmart (Client* c, const QRect& area, Policy next = Unknown ); + void placeMaximizing (Client* c, QRect& area, Policy next = Unknown ); + void placeCentered (Client* c, const QRect& area, Policy next = Unknown ); + void placeZeroCornered(Client* c, const QRect& area, Policy next = Unknown ); + void placeDialog (Client* c, QRect& area, Policy next = Unknown ); + void placeUtility (Client* c, QRect& area, Policy next = Unknown ); + + void reinitCascading( int desktop ); + + static Policy policyFromString( const QString& policy, bool no_special ); + static const char* policyToString( Policy policy ); + + private: + + void place(Client* c, QRect& area, Policy policy, Policy nextPlacement = Unknown ); + void placeUnderMouse(Client* c, QRect& area, Policy next = Unknown ); + void placeOnMainWindow(Client* c, QRect& area, Policy next = Unknown ); + QRect checkArea( const Client*c, const QRect& area ); + + Placement(); + + //CT needed for cascading+ + struct DesktopCascadingInfo + { + QPoint pos; + int col; + int row; + }; + + QValueList<DesktopCascadingInfo> cci; + + Workspace* m_WorkspacePtr; + }; + +} // namespace + +#endif |