Event_handler *_evh;
struct
{
- int mfocus : 1; /* element has mouse focus */
- int selected : 1; /* element has selected state */
- int takes_focus : 1; /* element highlights mouse focus */
- int findable : 1; /* regard element in find function */
+ int mfocus : 1; ///< Widget has mouse focus
+ int selected : 1; ///< Widget is currently selected
+ int takes_focus : 1; ///< Widget highlights mouse focus
+ int findable : 1; ///< Regard element in find function
+ int visible : 1; ///< Widget is visible
} _flags;
public:
_flags.mfocus = 0;
_flags.selected = 0;
_flags.findable = 1;
+ _flags.visible = 1;
}
virtual ~Widget();
void findable(int flag) { _flags.findable = flag; }
- bool findable() { return _flags.findable; }
+ bool findable() const { return _flags.findable; }
+
+ void visible(bool flag) { _flags.visible = flag; }
+ bool visible() const { return _flags.visible; }
virtual void draw(Canvas *c, Point const &p) = 0;
virtual Widget *find(Point const &p);
*/
void try_draw(Canvas *c, Point const &p)
{
+ if (!visible())
+ return;
#if 0
/* check if element is completely outside the clipping area */
if (!(c->clip() & Rect(p + _pos, _size)).valid())