git.cweiske.de
/
enigma2.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
456ac28
)
GUI: child windows will no long be removed on parent destroy. listbox/window now...
author
Felix Domke
<tmbinc@elitedvb.net>
Sat, 17 Dec 2005 16:00:50 +0000
(16:00 +0000)
committer
Felix Domke
<tmbinc@elitedvb.net>
Sat, 17 Dec 2005 16:00:50 +0000
(16:00 +0000)
lib/gui/elistbox.cpp
patch
|
blob
|
history
lib/gui/ewidget.cpp
patch
|
blob
|
history
lib/gui/ewidget.h
patch
|
blob
|
history
lib/gui/ewindow.cpp
patch
|
blob
|
history
lib/python/Components/GUISkin.py
patch
|
blob
|
history
diff --git
a/lib/gui/elistbox.cpp
b/lib/gui/elistbox.cpp
index 013a31036eb618d5835187368666094415be4c1c..21394de5ac4f827d26efe9ffa6f069aad9630cc0 100644
(file)
--- a/
lib/gui/elistbox.cpp
+++ b/
lib/gui/elistbox.cpp
@@
-20,6
+20,9
@@
eListbox::eListbox(eWidget *parent)
eListbox::~eListbox()
{
eListbox::~eListbox()
{
+ if (m_scrollbar)
+ delete m_scrollbar;
+
ePtr<eActionMap> ptr;
eActionMap::getInstance(ptr);
ptr->unbindAction(this, 0);
ePtr<eActionMap> ptr;
eActionMap::getInstance(ptr);
ptr->unbindAction(this, 0);
diff --git
a/lib/gui/ewidget.cpp
b/lib/gui/ewidget.cpp
index 023caa6a7e90341c4c3c6c0739a25da673835c5f..6f7fa91b30c40b3a895d6a94c0ae7634383c5158 100644
(file)
--- a/
lib/gui/ewidget.cpp
+++ b/
lib/gui/ewidget.cpp
@@
-205,12
+205,11
@@
eWidget::~eWidget()
m_parent = 0;
m_parent = 0;
- /*
destroy all childs
*/
+ /*
tell all childs that the parent is not anymore existing
*/
ePtrList<eWidget>::iterator i(m_childs.begin());
while (i != m_childs.end())
{
ePtrList<eWidget>::iterator i(m_childs.begin());
while (i != m_childs.end())
{
- (*i)->m_parent = 0;
- delete *i;
+ (*i)->parentRemoved();
i = m_childs.erase(i);
}
}
i = m_childs.erase(i);
}
}
@@
-275,6
+274,11
@@
void eWidget::recalcClipRegionsWhenVisible()
} while(1);
}
} while(1);
}
+void eWidget::parentRemoved()
+{
+ m_parent = 0;
+}
+
int eWidget::event(int event, void *data, void *data2)
{
switch (event)
int eWidget::event(int event, void *data, void *data2)
{
switch (event)
diff --git
a/lib/gui/ewidget.h
b/lib/gui/ewidget.h
index db86fd10600be1af162b91abc7ca840caf760c03..6739f25e35ed28dbd34db83d13106782c58ef855 100644
(file)
--- a/
lib/gui/ewidget.h
+++ b/
lib/gui/ewidget.h
@@
-72,6
+72,8
@@
private:
void doPaint(gPainter &painter, const gRegion ®ion);
void recalcClipRegionsWhenVisible();
void doPaint(gPainter &painter, const gRegion ®ion);
void recalcClipRegionsWhenVisible();
+ void parentRemoved();
+
gRGB m_background_color;
int m_have_background_color;
gRGB m_background_color;
int m_have_background_color;
diff --git
a/lib/gui/ewindow.cpp
b/lib/gui/ewindow.cpp
index 54a359582327698d6c24227cdf2b6fde4bfcbeff..06827a9eede6cefff82df4cd64ef8911c7e33edd 100644
(file)
--- a/
lib/gui/ewindow.cpp
+++ b/
lib/gui/ewindow.cpp
@@
-33,6
+33,7
@@
eWindow::eWindow(eWidgetDesktop *desktop): eWidget(0)
eWindow::~eWindow()
{
getDesktop()->removeRootWidget(this);
eWindow::~eWindow()
{
getDesktop()->removeRootWidget(this);
+ m_child->destruct();
}
void eWindow::setTitle(const std::string &string)
}
void eWindow::setTitle(const std::string &string)
diff --git
a/lib/python/Components/GUISkin.py
b/lib/python/Components/GUISkin.py
index c953aaec91b21740da233111e672815262be3cf2..cf8e1894bf50b8dde0a9cfe201c6183adbd1bde2 100644
(file)
--- a/
lib/python/Components/GUISkin.py
+++ b/
lib/python/Components/GUISkin.py
@@
-16,7
+16,7
@@
class GUISkin:
for w in self.additionalWidgets:
w.instance = w.widget(parent)
for w in self.additionalWidgets:
w.instance = w.widget(parent)
- w.instance.thisown = 0
+
#
w.instance.thisown = 0
applyAllAttributes(w.instance, desktop, w.skinAttributes)
for f in self.onLayoutFinish:
applyAllAttributes(w.instance, desktop, w.skinAttributes)
for f in self.onLayoutFinish: