Revert "Cocoa: Don't stop NSApp when showing a modal dialog"
This reverts commitff3dcc49c4
. The reverted commit is an incorrect bug-fix for a regression introduced by adding a call to [NSApp abortModal] in changed9875f7b
. Change-Id: I1307d1790ada740e0552d62267b6009cbccd6c4c Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
This commit is contained in:
parent
626e0f204e
commit
385ba9e7e3
@ -163,7 +163,6 @@ public:
|
||||
// The following variables help organizing modal sessions:
|
||||
QStack<QCocoaModalSessionInfo> cocoaModalSessionStack;
|
||||
bool currentExecIsNSAppRun;
|
||||
bool modalSessionOnNSAppRun;
|
||||
bool nsAppRunCalledByQt;
|
||||
bool cleanupModalSessionsNeeded;
|
||||
uint processEventsCalled;
|
||||
|
@ -725,6 +725,7 @@ void QCocoaEventDispatcherPrivate::beginModalSession(QWindow *window)
|
||||
// setting currentModalSessionCached to zero, so that interrupt() calls
|
||||
// [NSApp abortModal] if another modal session is currently running
|
||||
Q_Q(QCocoaEventDispatcher);
|
||||
q->interrupt();
|
||||
|
||||
// Add a new, empty (null), NSModalSession to the stack.
|
||||
// It will become active the next time QEventDispatcher::processEvents is called.
|
||||
@ -737,12 +738,6 @@ void QCocoaEventDispatcherPrivate::beginModalSession(QWindow *window)
|
||||
cocoaModalSessionStack.push(info);
|
||||
updateChildrenWorksWhenModal();
|
||||
currentModalSessionCached = 0;
|
||||
if (currentExecIsNSAppRun) {
|
||||
modalSessionOnNSAppRun = true;
|
||||
q->wakeUp();
|
||||
} else {
|
||||
q->interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
void QCocoaEventDispatcherPrivate::endModalSession(QWindow *window)
|
||||
@ -781,7 +776,6 @@ QCocoaEventDispatcherPrivate::QCocoaEventDispatcherPrivate()
|
||||
runLoopTimerRef(0),
|
||||
blockSendPostedEvents(false),
|
||||
currentExecIsNSAppRun(false),
|
||||
modalSessionOnNSAppRun(false),
|
||||
nsAppRunCalledByQt(false),
|
||||
cleanupModalSessionsNeeded(false),
|
||||
processEventsCalled(0),
|
||||
@ -912,14 +906,6 @@ void QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void *info)
|
||||
// processEvents() was called "manually," ignore this source for now
|
||||
d->maybeCancelWaitForMoreEvents();
|
||||
return;
|
||||
} else if (d->modalSessionOnNSAppRun) {
|
||||
// We're about to spawn the 1st modal session on top of the main runloop.
|
||||
// Instead of calling processPostedEvents(), which would need us stop
|
||||
// NSApp, we just re-enter processEvents(). This is equivalent to calling
|
||||
// QDialog::exec() except that it's done in a non-blocking way.
|
||||
d->modalSessionOnNSAppRun = false;
|
||||
d->q_func()->processEvents(QEventLoop::DialogExec | QEventLoop::EventLoopExec | QEventLoop::WaitForMoreEvents);
|
||||
return;
|
||||
}
|
||||
d->processPostedEvents();
|
||||
d->maybeCancelWaitForMoreEvents();
|
||||
|
Loading…
Reference in New Issue
Block a user