summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEleni Maria Stea <elene.mst@gmail.com>2013-02-25 20:09:12 +0200
committerEleni Maria Stea <elene.mst@gmail.com>2013-02-25 20:09:12 +0200
commit65eda3d5a8e4ad8d28bda12cace044628c1a69be (patch)
tree310a142328adbda7aa827222a6d562c1e534df7d
parentabae46cd0e399d6778fc23f8c719547c16bf2535 (diff)
using 2 windows, focus works
todo: 1- raise, 2-fonts
-rw-r--r--Makefile2
-rw-r--r--src/main.cc8
-rw-r--r--src/wm.cc45
-rw-r--r--src/wm.h5
4 files changed, 51 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index ad3fd6c..a894e52 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ dbg = -g
opt = -O0
inc = -Isrc
-#backend = SDL
+backend = SDL
ifeq ($(backend), SDL)
def = -DWINNIE_SDL
diff --git a/src/main.cc b/src/main.cc
index b04d4dc..cb6018d 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -28,7 +28,7 @@ int main()
win1->set_mouse_motion_callback(motion);
Window *win2 = new Window;
- win2->set_title("green");
+ win2->set_title("yellow");
win2->move(150, 10);
win2->resize(200, 300);
win2->set_display_callback(display);
@@ -48,14 +48,14 @@ static void display(Window *win)
{
const char *win_title = win->get_title();
const char *t1 = "red";
- const char *t2 = "green";
+ const char *t2 = "yellow";
if(!strcmp(win_title, t1)) {
- fill_rect(win->get_absolute_rect(), 255, 0, 0);
+ fill_rect(win->get_absolute_rect(), 247, 68, 50);
}
if(!strcmp(win_title, t2)) {
- fill_rect(win->get_absolute_rect(), 0, 255, 0);
+ fill_rect(win->get_absolute_rect(), 255, 215, 78);
}
}
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; i<win->get_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; i<win->get_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;
diff --git a/src/wm.h b/src/wm.h
index 406ef9d..fb60b24 100644
--- a/src/wm.h
+++ b/src/wm.h
@@ -45,6 +45,11 @@ public:
Window *get_window_at_pos(int pointer_x, int pointer_y);
+ void set_focused_frame_color(int r, int g, int b);
+ void get_focused_frame_color(int *r, int *g, int *b);
+
+ void set_unfocused_frame_color(int r, int g, int b);
+
Window *get_grab_window() const;
void grab_mouse(Window *win);