3 * Copyright (C) 2007, Harbour, All rights reserved.
14 // ÏËÎÁ ÒÉÓÕÀÔÓÑ ×ÎÕÔÒÉ F_Text_Display
16 class F_Window : public F_Widget {
18 F_Group <F_Widget *> widgets;
19 F_Widget *widget_belowmouse_;
22 unsigned int wid_; // ÐÏÓÌÅÄÎÉÊ ÕÎÉËÁÌØÎÙÊ widget_id
24 coord_t last_mx, last_my; // last mouse move coords
28 void draw_border(F_Border_t b = F_NO_BORDER);
30 void moving(bool m) { moving_ = m; }
31 // ÇÌÕÂÉÎÁ ÏËÎÁ ÎÁ ÜËÒÁÎÅ - ÞÅÍ ÂÏÌØÛÅ ÔÅÍ ÇÌÕÂÖÅ - i.e. 0 => top window
32 void depth(unsigned int d) { depth_ = d; }
33 void widget_belowmouse(F_Widget *w) { widget_belowmouse_ = w; }
36 void modal(bool m) { type = (m ? F_MODAL_WINDOW : F_NORMAL_WINDOW); }
37 bool modal() { return (type == F_MODAL_WINDOW ? true : false); }
38 F_Window(coord_t x, coord_t y, dim_t w, dim_t h, const char *label = 0) : F_Widget(x, y, w, h, label) {
39 parent_ = 0; // ÔÉÐÁ ÎÅÔÕ ÅÇÏ ÉÂÏ parent ÅÓÔØ display
41 border(F_DOUBLE_BORDER);
42 visible_ = false; // ÏËÎÏ, × ÏÔÌÉÞÉÅ ÏÔ ×ÉÄÖÅÔÁ, by default ÓËÒÙÔÏ
44 id(f_text_display->new_window(*this));
47 ~F_Window() { f_text_display->delete_window(*this); }
48 F_Widget *widget_belowmouse() { return widget_belowmouse_; }
49 void take_focus(F_Widget *w) {
55 widgets.take_focus(w);
59 F_Widget *focus() { return widgets.focus(); }
60 F_Widget *focus_prev() { return widgets.focus_prev(); }
61 F_Widget *focus_next() { return widgets.focus_next(); }
62 unsigned int depth() { return depth_; }
63 void show() { if (visible()) return; draw(); F_Widget::show(); f_text_display->show_window(*this); }
64 void hide() { if (!visible()) return; F_Widget::hide(); f_text_display->hide_window(*this); }
65 void border(F_Border_t brd) { if (brd == border_) return; lock(); border_ = brd; damage_ |= F_DAMAGE_BORDER; unlock(); }
66 bool moving() { return moving_; }
67 // ÍÏÖÎÏ ÐÏÔÏÍ ÐÅÒÅÄÅÌÁÔØ ÎÁ F_Group
69 bool handle(F_Event_t &ev);
70 // ÐÒÏÈÏÄÉÍ ÐÏ widget'ÁÍ
72 // debug("flushing id %d", id());
73 for (unsigned int i = 0; i < widgets.size(); i++)
75 F_Widget::damage(F_DAMAGE_NONE);
78 F_Damage_t dm = F_Widget::damage();
79 for (unsigned int i = 0; i < widgets.size(); i++)
80 dm |= widgets[i]->damage();
84 friend class F_Text_Display;