#include <lib/base/eptrlist.h> /* for eSmartPtrList */
#include <lib/gui/ewindowstyle.h> /* for eWindowStyle */
-class eWindowStyle;
-
class eWidget
{
friend class eWidgetDesktop;
int getStyle(ePtr<eWindowStyle> &style) { if (!m_style) return 1; style = m_style; return 0; }
void setStyle(eWindowStyle *style) { m_style = style; }
+ void setBackgroundColor(const gRGB &col);
+ void clearBackgroundColor();
+
+ /* untested code */
+ int isVisible() { return (m_vis & wVisShow) && ((!m_parent) || m_parent->isVisible()); }
+ /* ... */
+
private:
eWidgetDesktop *m_desktop;
void doPaint(gPainter &painter, const gRegion ®ion);
void recalcClipRegionsWhenVisible();
+
+ gRGB m_background_color;
+ int m_have_background_color;
+
+ eWidget *m_current_focus, *m_focus_owner;
protected:
virtual ~eWidget();
+ void mayKillFocus();
public:
// all in local space!
evtWillChangePosition, /* new size is eRect *data */
evtWillChangeSize,
+ evtAction,
+
+ evtFocusGot,
+ evtFocusLost,
+
evtUserWidget,
};
virtual int event(int event, void *data = 0, void *data2 = 0);
+ void setFocus(eWidget *focus);
};
extern eWidgetDesktop *getDesktop();