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 6.6 Change-Id: Iff4ddc3dc50aeb9700c88882dd7a270cfea5b737 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>bb10
parent
b8879b4d2d
commit
6343caae25
|
|
@ -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…
Reference in New Issue