summaryrefslogtreecommitdiffstats
path: root/kwin/placement.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit4aed2c8219774f5d797760606b8489a92ddc5163 (patch)
tree3f8c130f7d269626bf6a9447407ef6c35954426a /kwin/placement.h
downloadtdebase-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.h92
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