#include <X11/Xlib.h>
#include "LinkedList.h"
-#include "Geometry.h"
class BScreen;
class Clientmenu;
class Workspace;
class OpenboxWindow;
+class Size;
+class Rect;
class Workspace {
private:
- BScreen *screen;
+ BScreen &screen;
OpenboxWindow *lastfocus;
Clientmenu *clientmenu;
char *name;
int id, cascade_x, cascade_y;
+ OpenboxWindow *_focused;
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 BScreen &getScreen(void) { return screen; }
inline OpenboxWindow *getLastFocusedWindow(void) { return lastfocus; }
-
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 OpenboxWindow *focusedWindow() { return _focused; }
+ 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);
-
void showAll(void);
void hideAll(void);
void removeAll(void);