aboutsummaryrefslogtreecommitdiff
path: root/lib/gui/ewidgetdesktop.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-12-22 02:08:19 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-12-22 02:08:19 +0000
commitdb6ca522bdfbde29c214b41435a10876ff72a0a4 (patch)
treed43a7d31e1fbd5fc9a3b95839cf8e46c62af5e76 /lib/gui/ewidgetdesktop.cpp
parenteb47577c32b49a28eb7986b0fd86ed0d76207150 (diff)
downloadenigma2-db6ca522bdfbde29c214b41435a10876ff72a0a4.tar.gz
enigma2-db6ca522bdfbde29c214b41435a10876ff72a0a4.zip
gui: experimental Z order for root widgets
Diffstat (limited to 'lib/gui/ewidgetdesktop.cpp')
-rw-r--r--lib/gui/ewidgetdesktop.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/gui/ewidgetdesktop.cpp b/lib/gui/ewidgetdesktop.cpp
index 04bc85d9..223b5c86 100644
--- a/lib/gui/ewidgetdesktop.cpp
+++ b/lib/gui/ewidgetdesktop.cpp
@@ -5,18 +5,27 @@
extern void dumpRegion(const gRegion &region);
-void eWidgetDesktop::addRootWidget(eWidget *root, int top)
+void eWidgetDesktop::addRootWidget(eWidget *root)
{
assert(!root->m_desktop);
+ int invert_sense = 0;
/* buffered mode paints back-to-front, while immediate mode is front-to-back. */
if (m_comp_mode == cmBuffered)
- top = !top;
+ invert_sense = 1;
+
+ ePtrList<eWidget>::iterator insert_position = m_root.begin();
+
+ for (;;)
+ {
+ if ((insert_position == m_root.end()) || (invert_sense ^ (insert_position->m_z_position > root->m_z_position)))
+ {
+ m_root.insert(insert_position, root);
+ break;
+ }
+ ++insert_position;
+ }
- if (top)
- m_root.push_back(root);
- else
- m_root.push_front(root);
root->m_desktop = this;
/* the creation will be postponed. */