X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/44433f650cd3e5f9f66253b74d194fcb01578595..db6ca522bdfbde29c214b41435a10876ff72a0a4:/lib/gui/ewindow.cpp?ds=sidebyside diff --git a/lib/gui/ewindow.cpp b/lib/gui/ewindow.cpp index 01f889ff..f8984729 100644 --- a/lib/gui/ewindow.cpp +++ b/lib/gui/ewindow.cpp @@ -6,7 +6,7 @@ #include -eWindow::eWindow(eWidgetDesktop *desktop): eWidget(0) +eWindow::eWindow(eWidgetDesktop *desktop, int z): eWidget(0) { m_flags = 0; /* ask style manager for current style */ @@ -22,17 +22,20 @@ eWindow::eWindow(eWidgetDesktop *desktop): eWidget(0) style = new eWindowStyleSimple(); setStyle(style); + + setZPosition(z); /* must be done before addRootWidget */ /* we are the parent for the child window. */ /* as we are in the constructor, this is thread safe. */ m_child = this; m_child = new eWidget(this); - desktop->addRootWidget(this, 0); + desktop->addRootWidget(this); } eWindow::~eWindow() { getDesktop()->removeRootWidget(this); + m_child->destruct(); } void eWindow::setTitle(const std::string &string) @@ -43,6 +46,11 @@ void eWindow::setTitle(const std::string &string) event(evtTitleChanged); } +std::string eWindow::getTitle() const +{ + return m_title; +} + void eWindow::setFlag(int flags) { m_flags |= flags; @@ -70,9 +78,7 @@ int eWindow::event(int event, void *data, void *data2) style->handleNewSize(this, new_size, offset); } } else - { m_child->resize(new_size); - } break; } case evtPaint: @@ -88,6 +94,12 @@ int eWindow::event(int event, void *data, void *data2) } return 0; } + case evtTitleChanged: + /* m_visible_region contains, in contrast to m_visible_with_childs, + only the decoration. though repainting the whole decoration is bad, + repainting the whole window is even worse. */ + invalidate(m_visible_region); + break; default: break; }