diff --git a/Ladybird/WebContent/CMakeLists.txt b/Ladybird/WebContent/CMakeLists.txt index d8c9c1b780..71c28a143e 100644 --- a/Ladybird/WebContent/CMakeLists.txt +++ b/Ladybird/WebContent/CMakeLists.txt @@ -17,6 +17,10 @@ set(WEBCONTENT_SOURCES main.cpp ) +if (APPLE) + list(APPEND WEBCONTENT_SOURCES MacOSSetup.mm) +endif() + qt_add_executable(WebContent ${WEBCONTENT_SOURCES}) target_include_directories(WebContent PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Services/) diff --git a/Ladybird/WebContent/MacOSSetup.h b/Ladybird/WebContent/MacOSSetup.h new file mode 100644 index 0000000000..6125379158 --- /dev/null +++ b/Ladybird/WebContent/MacOSSetup.h @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2023, Tim Flynn + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +void prohibit_interaction(); diff --git a/Ladybird/WebContent/MacOSSetup.mm b/Ladybird/WebContent/MacOSSetup.mm new file mode 100644 index 0000000000..e323c58adf --- /dev/null +++ b/Ladybird/WebContent/MacOSSetup.mm @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2023, Tim Flynn + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "MacOSSetup.h" +#import + +void prohibit_interaction() +{ + // This prevents WebContent from being displayed in the macOS Dock and becoming the focused, + // interactable application upon launch. + [NSApp setActivationPolicy:NSApplicationActivationPolicyProhibited]; +} diff --git a/Ladybird/WebContent/main.cpp b/Ladybird/WebContent/main.cpp index 9b805652cc..b715203079 100644 --- a/Ladybird/WebContent/main.cpp +++ b/Ladybird/WebContent/main.cpp @@ -11,6 +11,7 @@ #include "../Utilities.h" #include "../WebSocketClientManagerLadybird.h" #include +#include #include #include #include @@ -31,6 +32,10 @@ #include #include +#if defined(AK_OS_MACOS) +# include "MacOSSetup.h" +#endif + static ErrorOr load_content_filters(); static ErrorOr load_autoplay_allowlist(); @@ -40,6 +45,10 @@ ErrorOr serenity_main(Main::Arguments arguments) { QGuiApplication app(arguments.argc, arguments.argv); +#if defined(AK_OS_MACOS) + prohibit_interaction(); +#endif + Core::EventLoopManager::install(*new Ladybird::EventLoopManagerQt); Core::EventLoop event_loop;