X-Git-Url: http://git.mutantstargoat.com?p=winnie;a=blobdiff_plain;f=src%2Fwm.cc;h=fd86d1d82960afc4251e68e735267692f2fede2c;hp=33f28795c30d65f4a63629f9379bd7378280c607;hb=65eda3d5a8e4ad8d28bda12cace044628c1a69be;hpb=abae46cd0e399d6778fc23f8c719547c16bf2535 diff --git a/src/wm.cc b/src/wm.cc index 33f2879..fd86d1d 100644 --- a/src/wm.cc +++ b/src/wm.cc @@ -80,8 +80,8 @@ WindowManager::WindowManager() frame_thickness = 8; titlebar_thickness = 16; - frame_fcolor[0] = frame_fcolor[1] = frame_fcolor[2] = 142; - frame_ucolor[0] = frame_ucolor[1] = frame_ucolor[2] = 210; + frame_fcolor[0] = frame_fcolor[1] = frame_fcolor[2] = 0; + frame_ucolor[0] = frame_ucolor[1] = frame_ucolor[2] = 255; mouse_cursor.set_image(mouse_cursor_width, mouse_cursor_height); unsigned char *pixels = mouse_cursor.get_image(); @@ -175,11 +175,13 @@ void WindowManager::set_focused_window(Window *win) return; } + Window *parent; if(focused_win) { // invalidate the frame (if any) - Window *parent = focused_win->get_parent(); + parent = focused_win->get_parent(); if(parent && parent != root_win) { parent->invalidate(); + fill_rect(parent->get_absolute_rect(), frame_ucolor[0], frame_ucolor[1], frame_ucolor[2]); } } @@ -190,6 +192,8 @@ void WindowManager::set_focused_window(Window *win) if(win->get_focusable()) { focused_win = win; + parent = focused_win->get_parent(); + fill_rect(parent->get_absolute_rect(), frame_fcolor[0], frame_fcolor[1], frame_fcolor[2]); return; } @@ -197,6 +201,7 @@ void WindowManager::set_focused_window(Window *win) for(int i=0; iget_children_count(); i++) { if(children[0]->get_focusable()) { set_focused_window(children[0]); + fill_rect(win->get_absolute_rect(), frame_fcolor[0], frame_fcolor[1], frame_fcolor[2]); return; } } @@ -229,6 +234,27 @@ Window *WindowManager::get_window_at_pos(int pointer_x, int pointer_y) return 0; } +void WindowManager::set_focused_frame_color(int r, int g, int b) +{ + frame_fcolor[0] = r; + frame_fcolor[1] = g; + frame_fcolor[2] = b; +} + +void WindowManager::get_focused_frame_color(int *r, int *g, int *b) +{ + *r = frame_fcolor[0]; + *g = frame_fcolor[1]; + *b = frame_fcolor[2]; +} + +void WindowManager::set_unfocused_frame_color(int r, int g, int b) +{ + frame_ucolor[0] = r; + frame_ucolor[1] = g; + frame_ucolor[2] = b; +} + Window *WindowManager::get_grab_window() const { return grab_win; @@ -246,7 +272,18 @@ void WindowManager::release_mouse() static void display(Window *win) { - fill_rect(win->get_absolute_rect(), 255, 211, 5); + //frame display: + Window **children = win->get_children(); + for(int i=0; iget_children_count(); i++) { + if(children[0] == wm->get_focused_window()) { + int r, g, b; + wm->get_focused_frame_color(&r, &g, &b); + fill_rect(win->get_absolute_rect(), r, g, b); + return; + } + } + + fill_rect(win->get_absolute_rect(), 74, 175, 198); } static int prev_x, prev_y;