X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FWorkspace.h;h=146e1d628e0df5d72fbc31be0372360813905f3a;hb=f75083669f65aadd6b32f8ed25880ca362296a2f;hp=441a8733e4114afeca33725976aab5ff12646439;hpb=424d476f7cd0ccc2def4f14119cd4fc3171d0159;p=chaz%2Fopenbox diff --git a/src/Workspace.h b/src/Workspace.h index 441a8733..146e1d62 100644 --- a/src/Workspace.h +++ b/src/Workspace.h @@ -25,57 +25,58 @@ #include -#include "LinkedList.h" -#include "Geometry.h" +#include +#include class BScreen; class Clientmenu; class Workspace; class OpenboxWindow; +class Size; +class Rect; class Workspace { private: - BScreen *screen; - OpenboxWindow *lastfocus; + BScreen &screen; Clientmenu *clientmenu; - LinkedList *stackingList, *windowList; + typedef std::vector winVect; + winVect _windows; + typedef std::list winList; + winList _zorder; char *name; int id, cascade_x, cascade_y; + OpenboxWindow *_focused, *_last; // last is the same as focused except + // that when focus is removed from all + // windows on the workspace, last doesnt + // change to NULL protected: - void placeWindow(OpenboxWindow *); + void placeWindow(OpenboxWindow &); Point *bestFitPlacement(const Size &win_size, const Rect &space); + Point *underMousePlacement(const Size &win_size, const Rect &space); Point *rowSmartPlacement(const Size &win_size, const Rect &space); - + Point *colSmartPlacement(const Size &win_size, const Rect &space); + Point *const cascadePlacement(const OpenboxWindow &window, const Rect &space); public: - Workspace(BScreen *, int = 0); + Workspace(BScreen &, int = 0); ~Workspace(void); - inline BScreen *getScreen(void) { return screen; } - - inline OpenboxWindow *getLastFocusedWindow(void) { return lastfocus; } - + inline BScreen &getScreen(void) { return screen; } inline Clientmenu *getMenu(void) { return clientmenu; } - inline const char *getName(void) const { return name; } - - inline const int &getWorkspaceID(void) const { return id; } - - inline void setLastFocusedWindow(OpenboxWindow *w) { lastfocus = w; } - + inline int getWorkspaceID(void) const { return id; } + inline OpenboxWindow *focusedWindow() { return _focused; } + inline OpenboxWindow *lastFocusedWindow() { return _last; } + void focusWindow(OpenboxWindow *win); OpenboxWindow *getWindow(int); - - Bool isCurrent(void); - Bool isLastWindow(OpenboxWindow *); - - const int addWindow(OpenboxWindow *, Bool = False); - const int removeWindow(OpenboxWindow *); - const int getCount(void); - + bool isCurrent(void); + int addWindow(OpenboxWindow *, bool = false); + int removeWindow(OpenboxWindow *); + int getCount(void); void showAll(void); void hideAll(void); void removeAll(void); @@ -84,7 +85,7 @@ public: void reconfigure(); void update(); void setCurrent(void); - void setName(char *); + void setName(const char *); void shutdown(void); };