X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fwindow.cc;h=ca8bdbc7a88b7e70f511bcd2591118ae16604975;hb=15e07ead145a859762b48ac9062a07cddf826151;hp=768c2eaeaf8db0f9fb3df685809e4f46c1e411c7;hpb=906b341b177e5947710107eceb9ab2e4ee09528c;p=winnie diff --git a/src/window.cc b/src/window.cc index 768c2ea..ca8bdbc 100644 --- a/src/window.cc +++ b/src/window.cc @@ -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; +}