summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ladybird/WebContent/CMakeLists.txt4
-rw-r--r--Ladybird/WebContent/MacOSSetup.h9
-rw-r--r--Ladybird/WebContent/MacOSSetup.mm15
-rw-r--r--Ladybird/WebContent/main.cpp9
4 files changed, 37 insertions, 0 deletions
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 <trflynn89@serenityos.org>
+ *
+ * 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 <trflynn89@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include "MacOSSetup.h"
+#import <AppKit/NSApplication.h>
+
+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 <AK/LexicalPath.h>
+#include <AK/Platform.h>
#include <LibCore/ArgsParser.h>
#include <LibCore/EventLoop.h>
#include <LibCore/LocalServer.h>
@@ -31,6 +32,10 @@
#include <WebContent/PageHost.h>
#include <WebContent/WebDriverConnection.h>
+#if defined(AK_OS_MACOS)
+# include "MacOSSetup.h"
+#endif
+
static ErrorOr<void> load_content_filters();
static ErrorOr<void> load_autoplay_allowlist();
@@ -40,6 +45,10 @@ ErrorOr<int> 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;