X-Git-Url: https://eleni.mutantstargoat.com/git/?a=blobdiff_plain;f=src%2Fwm.cc;h=f65c9c260e57cb474a65dcd8573c488ec3ce4556;hb=5deac1a20d178aa7d2e8bb5cbc79b6584c6287f5;hp=16b5a2a6a984402ca0dc869b68c20ecf9560d79b;hpb=18aa4e842c332f25b041cc8b2e47090539197113;p=winnie diff --git a/src/wm.cc b/src/wm.cc index 16b5a2a..f65c9c2 100644 --- a/src/wm.cc +++ b/src/wm.cc @@ -14,6 +14,8 @@ WindowManager::WindowManager() throw std::runtime_error("Trying to create a second instance of WindowManager!\n"); } + focused_win = 0; + bg_color[0] = 210; bg_color[1] = 106; bg_color[2] = 106; @@ -45,5 +47,45 @@ void WindowManager::process_windows() if(intersect.width && intersect.height) { (*it)->draw(); } + it++; + } +} + +void WindowManager::add_window(Window *win) +{ + if(windows.empty()) { + focused_win = win; } + + windows.push_back(win); +} + +void WindowManager::set_focused_window(Window *win) +{ + focused_win = win; +} + +const Window *WindowManager::get_focused_window() const +{ + return focused_win; +} + +Window *WindowManager::get_focused_window() +{ + return focused_win; +} + +Window *WindowManager::get_window_at_pos(int pointer_x, int pointer_y) +{ + Window *win = 0; + std::list::reverse_iterator rit = windows.rbegin(); + while(rit != windows.rend()) { + if((*rit)->contains_point(pointer_x, pointer_y)) { + win = *rit; + break; + } + rit++; + } + + return win; }