diff options
Diffstat (limited to 'src/sessionserver.cpp')
-rw-r--r-- | src/sessionserver.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/sessionserver.cpp b/src/sessionserver.cpp index 6550501..922638b 100644 --- a/src/sessionserver.cpp +++ b/src/sessionserver.cpp @@ -6,7 +6,17 @@ SessionServer::SessionServer(QWidget *widget, Session *session, Server *server) { - rootWidget = widget; + // Crate a "fake" root widget sized (1,1) + // This will prevent Qt from creating a large + // backing store. + fakeRoot = new QWidget(); + fakeRoot->resize(1, 1); + fakeRoot->move(0, 0); + + rootWidget = fakeRoot; + widget->setParent(fakeRoot); + widget->move(0, 0); + widgetEventHandler = new WidgetEventHandler(rootWidget, server); rootWidget->setAttribute(Qt::WA_DontShowOnScreen); @@ -35,6 +45,8 @@ SessionServer::SessionServer(QWidget *widget, Session *session, Server *server) SessionServer::~SessionServer() { delete widgetEventHandler; + rootWidget->setParent(0); + delete fakeRoot; } void SessionServer::handleRequest(HttpRequest *request, HttpResponse *response) |