X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgui%2Fewidget.h;h=7ddbbc5725f7279e473a83532e361186a10493c9;hb=0aaff23c4b0ef5a1a8b21489fe00f1ac94cfc1f6;hp=22f5103b0a87cb5071f70f779c72a9a42f892722;hpb=d73219bf587818d7648531da574beb45f6e3c000;p=vuplus_dvbapp diff --git a/lib/gui/ewidget.h b/lib/gui/ewidget.h index 22f5103..7ddbbc5 100644 --- a/lib/gui/ewidget.h +++ b/lib/gui/ewidget.h @@ -6,6 +6,8 @@ #include /* for eWindowStyle */ #include +#define MAX_LAYER 16 + class eWidgetDesktop;class eWidgetDesktop; class eWidget @@ -13,7 +15,8 @@ class eWidget friend class eWidgetDesktop; public: eWidget(eWidget *parent); - + virtual ~eWidget(); + void move(ePoint pos); void resize(eSize size); @@ -33,7 +36,7 @@ public: void destruct(); - int getStyle(ePtr &style) { if (!m_style) return 1; style = m_style; return 0; } + SWIG_VOID(int) getStyle(ePtr &SWIG_NAMED_OUTPUT(style)) { if (!m_style) return 1; style = m_style; return 0; } void setStyle(eWindowStyle *style) { m_style = style; } void setBackgroundColor(const gRGB &col); @@ -61,6 +64,8 @@ private: int m_vis; + int m_layer; + ePtrList m_childs; ePoint m_position; eSize m_size; @@ -71,7 +76,7 @@ private: ePtr m_style; void insertIntoParent(); - void doPaint(gPainter &painter, const gRegion ®ion); + void doPaint(gPainter &painter, const gRegion ®ion, int layer); void recalcClipRegionsWhenVisible(); void parentRemoved(); @@ -84,13 +89,12 @@ private: int m_z_position; int m_notify_child_on_position_change; protected: - virtual ~eWidget(); void mayKillFocus(); public: // all in local space! gRegion m_clip_region, m_visible_region, m_visible_with_childs; - struct eWidgetDesktopCompBuffer *m_comp_buffer; + struct eWidgetDesktopCompBuffer *m_comp_buffer[MAX_LAYER]; enum eWidgetEvent { @@ -101,8 +105,7 @@ public: evtParentChangedPosition, - evtWillShow, - evtWillHide, + evtParentVisibilityChanged, evtWillChangePosition, /* new size is eRect *data */ evtWillChangeSize, @@ -118,6 +121,8 @@ public: /* enable this if you need the absolute position of the widget */ void setPositionNotifyChild(int n) { m_notify_child_on_position_change = 1; } + + void notifyShowHide(); }; extern eWidgetDesktop *getDesktop(int which);