X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fwm.h;h=7e677c23f449b3a82f794dc839eed26288901729;hb=906b341b177e5947710107eceb9ab2e4ee09528c;hp=dfac3197c2c454e97f87be264e952659f7b240b1;hpb=ffd2c0a0f8b898cb4199a0c63aff255a85cc0f11;p=winnie diff --git a/src/wm.h b/src/wm.h index dfac319..7e677c2 100644 --- a/src/wm.h +++ b/src/wm.h @@ -2,29 +2,62 @@ #define WM_H_ #include + #include "geom.h" +#include "pixmap.h" class Window; class WindowManager { private: std::list windows; + std::list dirty_rects; int bg_color[3]; + int frame_thickness; + int titlebar_thickness; + int frame_fcolor[3]; + int frame_ucolor[3]; + + Window *root_win; Window *focused_win; + Window *grab_win; + + Pixmap mouse_cursor; + + void create_frame(Window *win); + void destroy_frame(Window *win); public: WindowManager(); + ~WindowManager(); void invalidate_region(const Rect &rect); void process_windows(); void add_window(Window *win); + void remove_window(Window *win); void set_focused_window(Window *win); const Window *get_focused_window() const; Window *get_focused_window(); + + Window *get_window_at_pos(int pointer_x, int pointer_y); + Window *get_root_window() const; + + void set_focused_frame_color(int r, int g, int b); + void get_focused_frame_color(int *r, int *g, int *b); + + void set_unfocused_frame_color(int r, int g, int b); + + Window *get_grab_window() const; + + void grab_mouse(Window *win); + void release_mouse(); + + void raise_window(Window *win); + void sink_window(Window *win); }; extern WindowManager *wm;