From 9202d4248dd7df2f6e5eb53b4154c8297ec9b1d1 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Thu, 20 Jan 2005 14:35:19 +0000 Subject: - redraw now in idle - mainloop called from python (could be changed) - clock components manages timer - timer usuable from python --- lib/gui/ewidgetdesktop.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'lib/gui/ewidgetdesktop.cpp') diff --git a/lib/gui/ewidgetdesktop.cpp b/lib/gui/ewidgetdesktop.cpp index ff913680..bb6c7c39 100644 --- a/lib/gui/ewidgetdesktop.cpp +++ b/lib/gui/ewidgetdesktop.cpp @@ -1,5 +1,6 @@ #include #include +#include void eWidgetDesktop::addRootWidget(eWidget *root, int top) { @@ -50,6 +51,8 @@ void eWidgetDesktop::recalcClipRegions() void eWidgetDesktop::invalidate(const gRegion ®ion) { + if (m_timer && m_dirty_region.empty()) + m_timer->start(0, 1); // start singleshot redraw timer m_dirty_region |= region; } @@ -67,7 +70,23 @@ void eWidgetDesktop::setDC(gDC *dc) m_dc = dc; } -eWidgetDesktop::eWidgetDesktop(eSize size): m_screen_size(size) +void eWidgetDesktop::setRedrawTask(eMainloop &ml) +{ + if (m_mainloop) + { + delete m_timer; + m_timer = 0; + m_mainloop = 0; + } + m_mainloop = &ml; + m_timer = new eTimer(m_mainloop); + CONNECT(m_timer->timeout, eWidgetDesktop::paint); + + if (!m_dirty_region.empty()) + m_timer->start(0, 1); +} + +eWidgetDesktop::eWidgetDesktop(eSize size): m_screen_size(size), m_mainloop(0), m_timer(0) { } -- cgit v1.2.3