diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-12-22 02:08:19 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-12-22 02:08:19 +0000 |
| commit | db6ca522bdfbde29c214b41435a10876ff72a0a4 (patch) | |
| tree | d43a7d31e1fbd5fc9a3b95839cf8e46c62af5e76 /lib/gui/ewidgetdesktop.cpp | |
| parent | eb47577c32b49a28eb7986b0fd86ed0d76207150 (diff) | |
| download | enigma2-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.cpp | 21 |
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 ®ion); -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. */ |
