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