From bbf19fb29572785ef9b7fcccd2d2027f5c7603a6 Mon Sep 17 00:00:00 2001 From: Daiwei Li Date: Thu, 1 Aug 2013 17:24:47 -0700 Subject: [PATCH] Fix ignoring closeEvents on OSX for QtQuick. The QCloseEvent's accepted state should not be inverted for the QWindowSystemInterfacePrivate::CloseEvent. To make Widgets work with this change, pass whether the close was accepted from close_helper to the QCloseEvent generated by QGuiApplication. Task-number: QTBUG-28965 Change-Id: If384b0355776b93df02dff2ab78b5647903200e7 Reviewed-by: Gabriel de Dietrich Reviewed-by: Josh Faust --- src/gui/kernel/qguiapplication.cpp | 2 +- src/widgets/kernel/qwidgetwindow.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index bf8440cccf..7d2c710c52 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1778,7 +1778,7 @@ void QGuiApplicationPrivate::processCloseEvent(QWindowSystemInterfacePrivate::Cl QCloseEvent event; QGuiApplication::sendSpontaneousEvent(e->window.data(), &event); if (e->accepted) { - *(e->accepted) = !event.isAccepted(); + *(e->accepted) = event.isAccepted(); } } diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 18dd3156c6..675ea77b30 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -538,9 +538,10 @@ void QWidgetWindow::handleResizeEvent(QResizeEvent *event) } } -void QWidgetWindow::handleCloseEvent(QCloseEvent *) +void QWidgetWindow::handleCloseEvent(QCloseEvent *event) { - m_widget->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent); + bool is_closing = m_widget->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent); + event->setAccepted(is_closing); } #ifndef QT_NO_WHEELEVENT