summaryrefslogtreecommitdiffstats
path: root/src/sessionserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sessionserver.cpp')
-rw-r--r--src/sessionserver.cpp14
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)