summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qguiapplication.cpp8
-rw-r--r--src/gui/kernel/qguiapplication_p.h1
-rw-r--r--src/gui/kernel/qplatformintegration.cpp12
-rw-r--r--src/gui/kernel/qplatformintegration.h1
4 files changed, 22 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index bde8d99a1c..c7eefdbefa 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1048,6 +1048,14 @@ void QGuiApplicationPrivate::createEventDispatcher()
eventDispatcher = platform_integration->createEventDispatcher();
}
+void QGuiApplicationPrivate::eventDispatcherReady()
+{
+ if (platform_integration == 0)
+ createPlatformIntegration();
+
+ platform_integration->initialize();
+}
+
#if defined(QT_DEBUG) && defined(Q_OS_LINUX)
// Find out if our parent process is gdb by looking at the 'exe' symlink under /proc.
static bool runningUnderDebugger()
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index 91c63e54c5..d1716a6e28 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -84,6 +84,7 @@ public:
void createPlatformIntegration();
void createEventDispatcher() Q_DECL_OVERRIDE;
+ void eventDispatcherReady() Q_DECL_OVERRIDE;
virtual void notifyLayoutDirectionChange();
virtual void notifyActiveWindowChange(QWindow *previous);
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp
index 3f93856349..22d6746ce0 100644
--- a/src/gui/kernel/qplatformintegration.cpp
+++ b/src/gui/kernel/qplatformintegration.cpp
@@ -291,6 +291,18 @@ QPaintEngine *QPlatformIntegration::createImagePaintEngine(QPaintDevice *paintDe
}
/*!
+ Performs initialization steps that depend on having an event dispatcher
+ available. Called after the event dispatcher has been created.
+
+ Tasks that require an event dispatcher, for example creating socket notifiers, cannot be
+ performed in the constructor. Instead, they should be performed here. The default
+ implementation does nothing.
+*/
+void QPlatformIntegration::initialize()
+{
+}
+
+/*!
Returns the platforms input context.
The default implementation returns 0, implying no input method support.
diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h
index 0af74370b5..d3189f8641 100644
--- a/src/gui/kernel/qplatformintegration.h
+++ b/src/gui/kernel/qplatformintegration.h
@@ -112,6 +112,7 @@ public:
// Event dispatcher:
virtual QAbstractEventDispatcher *createEventDispatcher() const = 0;
+ virtual void initialize();
//Deeper window system integrations
virtual QPlatformFontDatabase *fontDatabase() const;