X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ddc3964ed95d01e72229dc9af968a327cd84e56c..9202d4248dd7df2f6e5eb53b4154c8297ec9b1d1:/lib/gui/ewindow.cpp diff --git a/lib/gui/ewindow.cpp b/lib/gui/ewindow.cpp index 1afee2ee..630a8aa3 100644 --- a/lib/gui/ewindow.cpp +++ b/lib/gui/ewindow.cpp @@ -5,10 +5,18 @@ eWindow::eWindow(eWidgetDesktop *desktop): eWidget(0) { + setStyle(new eWindowStyleSimple()); + + /* 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); - - m_style = new eWindowStyleSimple(); +} + +eWindow::~eWindow() +{ + getDesktop()->removeRootWidget(this); } void eWindow::setTitle(const std::string &string) @@ -25,18 +33,25 @@ int eWindow::event(int event, void *data, void *data2) { case evtWillChangeSize: { - const eSize &new_size = *static_cast(data); - eDebug("eWindow::evtWillChangeSize to %d %d", new_size.width(), new_size.height()); - if (m_style) - m_style->handleNewSize(this, new_size); + ePtr style; + if (!getStyle(style)) + { + const eSize &new_size = *static_cast(data); + eDebug("eWindow::evtWillChangeSize to %d %d", new_size.width(), new_size.height()); + style->handleNewSize(this, new_size); + } break; } case evtPaint: { - gPainter &painter = *static_cast(data2); - painter.setBackgroundColor(gColor(0x18)); - painter.clear(); - break; + ePtr style; + if (!getStyle(style)) + { + gPainter &painter = *static_cast(data2); + style->paintWindowDecoration(this, painter, m_title); + } else + eDebug("no style :("); + return 0; } default: break;