diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-05-09 00:44:24 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-05-13 14:21:22 +0200 |
commit | b5552bab40f2e165cf7196993ffc83785f4d8264 (patch) | |
tree | 5ca863fc90caacebd7bd5ebd2464d4b18efdd0dc /src/widgets/kernel | |
parent | 9cfdd66b6452704349b5f986f31b7f1f03748cb5 (diff) | |
parent | 01ce104a3ee3c8af68f6694840931661666984ab (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Manually changed enum to LibGL in
src/plugins/platforms/xcb/qglxintegration.cpp
Change-Id: If34ee6cce3d1d51fb4bb1fdfa59c30389ea0d207
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r-- | src/widgets/kernel/qopenglwidget.cpp | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qwidgetwindow.cpp | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/widgets/kernel/qopenglwidget.cpp b/src/widgets/kernel/qopenglwidget.cpp index 10be5aef16..cbefb8a6bf 100644 --- a/src/widgets/kernel/qopenglwidget.cpp +++ b/src/widgets/kernel/qopenglwidget.cpp @@ -147,7 +147,7 @@ void QOpenGLWidget::paintGL() void QOpenGLWidget::updateGL() { Q_D(QOpenGLWidget); - if (d->uninitialized) + if (d->uninitialized || !d->surface()) return; makeCurrent(); diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 0031d8e965..fc328e7af0 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -440,11 +440,13 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) if (!win) win = w->nativeParentWidget()->windowHandle(); if (win && win->geometry().contains(event->globalPos())) { + // Use postEvent() to ensure the local QEventLoop terminates when called from QMenu::exec() const QPoint localPos = win->mapFromGlobal(event->globalPos()); - QMouseEvent e(QEvent::MouseButtonPress, localPos, localPos, event->globalPos(), event->button(), event->buttons(), event->modifiers()); - QGuiApplicationPrivate::setMouseEventSource(&e, QGuiApplicationPrivate::mouseEventSource(event)); - e.setTimestamp(event->timestamp()); - QApplication::sendSpontaneousEvent(win, &e); + QMouseEvent *e = new QMouseEvent(QEvent::MouseButtonPress, localPos, localPos, event->globalPos(), event->button(), event->buttons(), event->modifiers()); + e->spont = 1; + QGuiApplicationPrivate::setMouseEventSource(e, QGuiApplicationPrivate::mouseEventSource(event)); + e->setTimestamp(event->timestamp()); + QCoreApplication::postEvent(win, e); } } } |