- redraw now in idle
[enigma2.git] / lib / gui / ewidgetdesktop.h
1 #ifndef __lib_gui_ewidgetdesktop_h
2 #define __lib_gui_ewidgetdesktop_h
3
4 #include <lib/gdi/grc.h>
5 #include <lib/base/eptrlist.h>
6
7 class eWidget;
8 class eMainloop;
9 class eTimer;
10
11 class eWidgetDesktop: public Object
12 {
13 public: // weil debug
14         eSize m_screen_size;
15         gRegion m_dirty_region;
16         ePtr<gDC> m_dc;
17 public:
18         eWidgetDesktop(eSize screen);
19         ~eWidgetDesktop();
20         void addRootWidget(eWidget *root, int top);
21         void removeRootWidget(eWidget *root);
22         void recalcClipRegions();
23         
24         void invalidate(const gRegion &region);
25         void paint();
26         void setDC(gDC *dc);
27         
28         void setRedrawTask(eMainloop &ml);
29 private:
30         ePtrList<eWidget> m_root;
31         void calcWidgetClipRegion(eWidget *widget, gRegion &parent_visible);
32         
33         eMainloop *m_mainloop;
34         eTimer *m_timer;
35 };
36
37 #endif