summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowscontext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/windows/qwindowscontext.cpp')
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index 3d4871d7a2..a0749388f9 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -259,6 +259,7 @@ struct QWindowsContextPrivate {
const HRESULT m_oleInitializeResult;
const QByteArray m_eventType;
QWindow *m_lastActiveWindow;
+ bool m_asyncExpose;
};
QWindowsContextPrivate::QWindowsContextPrivate() :
@@ -267,7 +268,7 @@ QWindowsContextPrivate::QWindowsContextPrivate() :
m_defaultDPI(GetDeviceCaps(m_displayContext,LOGPIXELSY)),
m_oleInitializeResult(OleInitialize(NULL)),
m_eventType(QByteArrayLiteral("windows_generic_MSG")),
- m_lastActiveWindow(0)
+ m_lastActiveWindow(0), m_asyncExpose(0)
{
#ifndef Q_OS_WINCE
QWindowsContext::user32dll.init();
@@ -869,6 +870,11 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
QWindowsWindow::baseWindowOf(modalWindow)->alertWindow();
break;
#endif
+#ifndef QT_NO_CONTEXTMENU
+ case QtWindows::ContextMenu:
+ handleContextMenuEvent(platformWindow->window(), msg);
+ return true;
+#endif
default:
break;
}
@@ -900,6 +906,34 @@ void QWindowsContext::handleFocusEvent(QtWindows::WindowsEventType et,
}
}
+#ifndef QT_NO_CONTEXTMENU
+void QWindowsContext::handleContextMenuEvent(QWindow *window, const MSG &msg)
+{
+ bool mouseTriggered = false;
+ QPoint globalPos;
+ QPoint pos;
+ if (msg.lParam != (int)0xffffffff) {
+ mouseTriggered = true;
+ globalPos.setX(msg.pt.x);
+ globalPos.setY(msg.pt.y);
+ pos = QWindowsGeometryHint::mapFromGlobal(msg.hwnd, globalPos);
+ }
+
+ QWindowSystemInterface::handleContextMenuEvent(window, mouseTriggered, pos, globalPos,
+ QWindowsKeyMapper::queryKeyboardModifiers());
+}
+#endif
+
+bool QWindowsContext::asyncExpose() const
+{
+ return d->m_asyncExpose;
+}
+
+void QWindowsContext::setAsyncExpose(bool value)
+{
+ d->m_asyncExpose = value;
+}
+
/*!
\brief Windows functions for actual windows.