maximize windows
[winnie] / src / window.cc
index 768c2ea..ca8bdbc 100644 (file)
@@ -16,6 +16,7 @@ Window::Window()
        dirty = true;
        managed = true;
        focusable = true;
+       state = STATE_NORMAL;
 }
 
 Window::~Window()
@@ -96,14 +97,18 @@ void Window::draw(Rect *dirty_region)
        Rect abs_rect = get_absolute_rect();
        Rect intersect = rect_intersection(abs_rect, *dirty_region);
        if(intersect.width && intersect.height) {
+               Rect prev_clip = get_clipping_rect();
+               set_clipping_rect(abs_rect);
+               
                if(callbacks.display) {
                        callbacks.display(this);
                }
                dirty = false;
 
                draw_children(abs_rect);
-
+               
                *dirty_region = rect_union(*dirty_region, abs_rect);
+               set_clipping_rect(prev_clip);
        }
 }
 
@@ -233,3 +238,13 @@ Window *Window::get_parent()
 {
        return parent;
 }
+
+void Window::set_state(State state)
+{
+       this->state = state;
+}
+
+Window::State Window::get_state() const
+{
+       return state;
+}