diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 8 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication_p.h | 1 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.cpp | 12 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.h | 1 |
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; |