macOS: Only bring application forward on launch if needed
We override the macOS default behavior of not activating applications unless they are launched from Finder. To play a bit nicer, we now try to detect if we're already the frontmost application, and skip the explicit activateIgnoringOtherApps if so. Pick-to: 6.5 Change-Id: Iff4ddc3dc50aeb9700c88882dd7a270cfea5b737 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 6343caae25179b5895b4169d7b97d61293e49b0f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
0e10c0bde2
commit
eb937aa84f
@ -189,11 +189,20 @@ QT_USE_NAMESPACE
|
||||
inLaunch = false;
|
||||
|
||||
if (qEnvironmentVariableIsEmpty("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM")) {
|
||||
// Move the application window to front to avoid launching behind the terminal.
|
||||
// Ignoring other apps is necessary (we must ignore the terminal), but makes
|
||||
// Qt apps play slightly less nice with other apps when lanching from Finder
|
||||
// (See the activateIgnoringOtherApps docs.)
|
||||
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
|
||||
auto frontmostApplication = NSWorkspace.sharedWorkspace.frontmostApplication;
|
||||
auto currentApplication = NSRunningApplication.currentApplication;
|
||||
if (frontmostApplication != currentApplication) {
|
||||
// Move the application to front to avoid launching behind the terminal.
|
||||
// Ignoring other apps is necessary (we must ignore the terminal), but makes
|
||||
// Qt apps play slightly less nice with other apps when launching from Finder
|
||||
// (see the activateIgnoringOtherApps docs). FIXME: Try to distinguish between
|
||||
// being non-active here because another application stole activation in the
|
||||
// time it took us to launch from Finder, and being non-active because we were
|
||||
// launched from Terminal or something that doesn't activate us at all.
|
||||
qCDebug(lcQpaApplication) << "Launched with" << frontmostApplication
|
||||
<< "as frontmost application. Activating" << currentApplication << "instead.";
|
||||
[NSApplication.sharedApplication activateIgnoringOtherApps:YES];
|
||||
}
|
||||
}
|
||||
|
||||
QCocoaMenuBar::insertWindowMenu();
|
||||
|
Loading…
x
Reference in New Issue
Block a user