fixed grab win initialization
[winnie] / src / wm.h
1 #ifndef WM_H_
2 #define WM_H_
3
4 #include <list>
5
6 #include "geom.h"
7 #include "pixmap.h"
8
9 class Window;
10
11 bool init_window_manager();
12 void destroy_window_manager(); 
13
14 class WindowManager {
15 private:
16         std::list<Window*> windows;
17
18         std::list<Rect> dirty_rects;
19
20         int bg_color[3];
21         int frame_thickness;
22         int titlebar_thickness;
23         int frame_fcolor[3];
24         int frame_ucolor[3];
25
26         Window *root_win;
27         Window *focused_win;
28         Window *grab_win;
29
30         Pixmap mouse_cursor;
31
32         void create_frame(Window *win);
33         void destroy_frame(Window *win);
34
35 public:
36         WindowManager();
37         ~WindowManager();
38
39         void invalidate_region(const Rect &rect);
40         void process_windows();
41
42         void add_window(Window *win);
43         void remove_window(Window *win);
44
45         void set_focused_window(Window *win);
46         const Window *get_focused_window() const;
47         Window *get_focused_window();
48
49         Window *get_window_at_pos(int pointer_x, int pointer_y);
50         Window *get_root_window() const;
51
52         void set_focused_frame_color(int r, int g, int b);
53         void get_focused_frame_color(int *r, int *g, int *b) const;
54
55         void set_unfocused_frame_color(int r, int g, int b);
56         void get_unfocused_frame_color(int *r, int *g, int *b) const;
57
58         Window *get_grab_window() const;
59
60         void grab_mouse(Window *win);
61         void release_mouse();
62
63         void raise_window(Window *win);
64         void sink_window(Window *win);
65 };
66
67 extern WindowManager *wm;
68
69 #endif  // WM_H_