KWin
placement.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef KWIN_PLACEMENT_H
00024 #define KWIN_PLACEMENT_H
00025
00026 #include <QPoint>
00027 #include <QRect>
00028 #include <QList>
00029
00030 namespace KWin
00031 {
00032
00033 class Workspace;
00034 class Client;
00035
00036 class Placement
00037 {
00038 public:
00039
00040 Placement(Workspace* w);
00041
00048 enum Policy
00049 {
00050 NoPlacement,
00051 Default,
00052 Unknown,
00053 Random,
00054 Smart,
00055 Cascade,
00056 Centered,
00057 ZeroCornered,
00058 UnderMouse,
00059 OnMainWindow,
00060 Maximizing
00061 };
00062
00063 void place(Client* c, QRect& area );
00064
00065 void placeAtRandom (Client* c, const QRect& area, Policy next = Unknown );
00066 void placeCascaded (Client* c, QRect& area, Policy next = Unknown );
00067 void placeSmart (Client* c, const QRect& area, Policy next = Unknown );
00068 void placeMaximizing (Client* c, QRect& area, Policy next = Unknown );
00069 void placeCentered (Client* c, const QRect& area, Policy next = Unknown );
00070 void placeZeroCornered(Client* c, const QRect& area, Policy next = Unknown );
00071 void placeDialog (Client* c, QRect& area, Policy next = Unknown );
00072 void placeUtility (Client* c, QRect& area, Policy next = Unknown );
00073
00074 void reinitCascading( int desktop );
00075
00076 static Policy policyFromString( const QString& policy, bool no_special );
00077 static const char* policyToString( Policy policy );
00078
00079 private:
00080
00081 void place(Client* c, QRect& area, Policy policy, Policy nextPlacement = Unknown );
00082 void placeUnderMouse(Client* c, QRect& area, Policy next = Unknown );
00083 void placeOnMainWindow(Client* c, QRect& area, Policy next = Unknown );
00084 QRect checkArea( const Client*c, const QRect& area );
00085
00086 Placement();
00087
00088
00089 struct DesktopCascadingInfo
00090 {
00091 QPoint pos;
00092 int col;
00093 int row;
00094 };
00095
00096 QList<DesktopCascadingInfo> cci;
00097
00098 Workspace* m_WorkspacePtr;
00099 };
00100
00101 }
00102
00103 #endif