X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b0b52bc936772d2458305512d1450deb8af56349..665611070aead66a845b42e4b8912bcc45bc5602:/lib/gui/ewidget.h diff --git a/lib/gui/ewidget.h b/lib/gui/ewidget.h index f7c611f6..8af66b05 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 @@ -20,6 +22,7 @@ public: ePoint position() const { return m_position; } eSize size() const { return m_size; } + eSize csize() const { return m_client_size; } void invalidate(const gRegion ®ion = gRegion::invalidRegion()); @@ -34,7 +37,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); @@ -62,9 +65,11 @@ private: int m_vis; + int m_layer; + ePtrList m_childs; ePoint m_position; - eSize m_size; + eSize m_size, m_client_size; /* will be accounted when there's a client offset */ eSize m_client_offset; eWidget *m_parent; @@ -72,7 +77,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(); @@ -90,7 +95,7 @@ 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 +106,7 @@ public: evtParentChangedPosition, - evtWillShow, - evtWillHide, + evtParentVisibilityChanged, evtWillChangePosition, /* new size is eRect *data */ evtWillChangeSize, @@ -118,6 +122,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);