summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxbpseventfilter.cpp')
-rw-r--r--src/plugins/platforms/qnx/qqnxbpseventfilter.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
index f5185e3eb7..fd1bfd333e 100644
--- a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
+++ b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
@@ -41,6 +41,7 @@
#include "qqnxbpseventfilter.h"
#include "qqnxnavigatoreventhandler.h"
+#include "qqnxfiledialoghelper.h"
#include "qqnxscreen.h"
#include "qqnxscreeneventhandler.h"
#include "qqnxvirtualkeyboardbps.h"
@@ -110,6 +111,22 @@ void QQnxBpsEventFilter::unregisterForScreenEvents(QQnxScreen *screen)
qWarning("QQNX: failed to unregister for screen events on screen %p", screen->nativeContext());
}
+void QQnxBpsEventFilter::registerForDialogEvents(QQnxFileDialogHelper *dialog)
+{
+ if (dialog_request_events(0) != BPS_SUCCESS)
+ qWarning("QQNX: failed to register for dialog events");
+ dialog_instance_t nativeDialog = dialog->nativeDialog();
+ if (!m_dialogMapper.contains(nativeDialog))
+ m_dialogMapper.insert(nativeDialog, dialog);
+}
+
+void QQnxBpsEventFilter::unregisterForDialogEvents(QQnxFileDialogHelper *dialog)
+{
+ int count = m_dialogMapper.remove(dialog->nativeDialog());
+ if (count == 0)
+ qWarning("QQNX: attempting to unregister dialog that was not registered");
+}
+
bool QQnxBpsEventFilter::dispatcherEventFilter(void *message)
{
qBpsEventFilterDebug() << Q_FUNC_INFO;
@@ -131,6 +148,13 @@ bool QQnxBpsEventFilter::bpsEventFilter(bps_event_t *event)
return m_screenEventHandler->handleEvent(screenEvent);
}
+ if (eventDomain == dialog_get_domain()) {
+ dialog_instance_t nativeDialog = dialog_event_get_dialog_instance(event);
+ QQnxFileDialogHelper *dialog = m_dialogMapper.value(nativeDialog, 0);
+ if (dialog)
+ return dialog->handleEvent(event);
+ }
+
if (eventDomain == navigator_get_domain())
return handleNavigatorEvent(event);