#include <lib/gui/ewindowstyle.h> /* for eWindowStyle */
#include <lib/gui/ewidgetanimation.h>
+#define MAX_LAYER 16
+
class eWidgetDesktop;class eWidgetDesktop;
class eWidget
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());
void destruct();
- int getStyle(ePtr<eWindowStyle> &style) { if (!m_style) return 1; style = m_style; return 0; }
+ SWIG_VOID(int) getStyle(ePtr<eWindowStyle> &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);
int m_vis;
+ int m_layer;
+
ePtrList<eWidget> 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;
ePtr<eWindowStyle> m_style;
void insertIntoParent();
- void doPaint(gPainter &painter, const gRegion ®ion);
+ void doPaint(gPainter &painter, const gRegion ®ion, int layer);
void recalcClipRegionsWhenVisible();
void parentRemoved();
// 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
{
evtParentChangedPosition,
- evtWillShow,
- evtWillHide,
+ evtParentVisibilityChanged,
evtWillChangePosition, /* new size is eRect *data */
evtWillChangeSize,
/* 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);