+static void display(Window *win);
+static void mouse(Window *win, int key, bool pressed);
+static void motion(Window *win, int x, int y);
+
+void WindowManager::create_frame(Window *win)
+{
+ Window *frame = new Window;
+ Window *parent = win->get_parent();
+
+ frame->set_display_callback(display);
+// frame->set_mouse_button_callback(mouse);
+// frame->set_mouse_motion_callback(motion);
+
+ frame->add_child(win);
+ frames.push_back(frame);
+
+ Rect win_rect = win->get_rect();
+ frame->move(win_rect.x - frame_thickness,
+ win_rect.y - frame_thickness - titlebar_thickness);
+ frame->resize(win_rect.width + frame_thickness * 2,
+ win_rect.height + frame_thickness * 2 + titlebar_thickness);
+
+ parent->add_child(frame);
+}
+
+void WindowManager::destroy_frame(Window *win)
+{
+ Window *frame = win->parent;
+ if(!frame) {
+ return;
+ }
+
+ std::list<Window*>::iterator it;
+ it = std::find(frames.begin(), frames.end(), frame);
+ if(it != frames.end()) {
+ root_win->add_child(win);
+ frames.erase(it);
+ delete frame;
+ }
+}
+