mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-22 17:29:01 +00:00
LibWebView+UI: Generate the preferred color, contrast, and motion menus
This commit is contained in:
parent
9c99c48f47
commit
7d6ea99d0d
Notes:
github-actions[bot]
2025-09-11 18:25:01 +00:00
Author: https://github.com/trflynn89
Commit: 7d6ea99d0d
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6062
12 changed files with 95 additions and 408 deletions
|
@ -668,6 +668,58 @@ void Application::initialize_actions()
|
||||||
view->get_source();
|
view->get_source();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
auto set_color_scheme = [this](auto color_scheme) {
|
||||||
|
return [this, color_scheme]() {
|
||||||
|
m_color_scheme = color_scheme;
|
||||||
|
|
||||||
|
ViewImplementation::for_each_view([&](ViewImplementation& view) {
|
||||||
|
view.set_preferred_color_scheme(m_color_scheme);
|
||||||
|
return IterationDecision::Continue;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
m_color_scheme_menu = Menu::create_group("Color Scheme"sv);
|
||||||
|
m_color_scheme_menu->add_action(Action::create_checkable("Auto"sv, ActionID::PreferredColorScheme, set_color_scheme(Web::CSS::PreferredColorScheme::Auto)));
|
||||||
|
m_color_scheme_menu->add_action(Action::create_checkable("Dark"sv, ActionID::PreferredColorScheme, set_color_scheme(Web::CSS::PreferredColorScheme::Dark)));
|
||||||
|
m_color_scheme_menu->add_action(Action::create_checkable("Light"sv, ActionID::PreferredColorScheme, set_color_scheme(Web::CSS::PreferredColorScheme::Light)));
|
||||||
|
m_color_scheme_menu->items().first().get<NonnullRefPtr<Action>>()->set_checked(true);
|
||||||
|
|
||||||
|
auto set_contrast = [this](auto contrast) {
|
||||||
|
return [this, contrast]() {
|
||||||
|
m_contrast = contrast;
|
||||||
|
|
||||||
|
ViewImplementation::for_each_view([&](ViewImplementation& view) {
|
||||||
|
view.set_preferred_contrast(m_contrast);
|
||||||
|
return IterationDecision::Continue;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
m_contrast_menu = Menu::create_group("Contrast"sv);
|
||||||
|
m_contrast_menu->add_action(Action::create_checkable("Auto"sv, ActionID::PreferredContrast, set_contrast(Web::CSS::PreferredContrast::Auto)));
|
||||||
|
m_contrast_menu->add_action(Action::create_checkable("Less"sv, ActionID::PreferredContrast, set_contrast(Web::CSS::PreferredContrast::Less)));
|
||||||
|
m_contrast_menu->add_action(Action::create_checkable("More"sv, ActionID::PreferredContrast, set_contrast(Web::CSS::PreferredContrast::More)));
|
||||||
|
m_contrast_menu->add_action(Action::create_checkable("No Preference"sv, ActionID::PreferredContrast, set_contrast(Web::CSS::PreferredContrast::NoPreference)));
|
||||||
|
m_contrast_menu->items().first().get<NonnullRefPtr<Action>>()->set_checked(true);
|
||||||
|
|
||||||
|
auto set_motion = [this](auto motion) {
|
||||||
|
return [this, motion]() {
|
||||||
|
m_motion = motion;
|
||||||
|
|
||||||
|
ViewImplementation::for_each_view([&](ViewImplementation& view) {
|
||||||
|
view.set_preferred_motion(m_motion);
|
||||||
|
return IterationDecision::Continue;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
m_motion_menu = Menu::create_group("Motion"sv);
|
||||||
|
m_motion_menu->add_action(Action::create_checkable("Auto"sv, ActionID::PreferredMotion, set_motion(Web::CSS::PreferredMotion::Auto)));
|
||||||
|
m_motion_menu->add_action(Action::create_checkable("Reduce"sv, ActionID::PreferredMotion, set_motion(Web::CSS::PreferredMotion::Reduce)));
|
||||||
|
m_motion_menu->add_action(Action::create_checkable("No Preference"sv, ActionID::PreferredMotion, set_motion(Web::CSS::PreferredMotion::NoPreference)));
|
||||||
|
m_motion_menu->items().first().get<NonnullRefPtr<Action>>()->set_checked(true);
|
||||||
|
|
||||||
m_debug_menu = Menu::create("Debug"sv);
|
m_debug_menu = Menu::create("Debug"sv);
|
||||||
|
|
||||||
m_debug_menu->add_action(Action::create("Dump Session History Tree"sv, ActionID::DumpSessionHistoryTree, debug_request("dump-session-history"sv)));
|
m_debug_menu->add_action(Action::create("Dump Session History Tree"sv, ActionID::DumpSessionHistoryTree, debug_request("dump-session-history"sv)));
|
||||||
|
@ -733,6 +785,10 @@ void Application::initialize_actions()
|
||||||
|
|
||||||
void Application::apply_view_options(Badge<ViewImplementation>, ViewImplementation& view)
|
void Application::apply_view_options(Badge<ViewImplementation>, ViewImplementation& view)
|
||||||
{
|
{
|
||||||
|
view.set_preferred_color_scheme(m_color_scheme);
|
||||||
|
view.set_preferred_contrast(m_contrast);
|
||||||
|
view.set_preferred_motion(m_motion);
|
||||||
|
|
||||||
view.debug_request("set-line-box-borders"sv, m_show_line_box_borders_action->checked() ? "on"sv : "off"sv);
|
view.debug_request("set-line-box-borders"sv, m_show_line_box_borders_action->checked() ? "on"sv : "off"sv);
|
||||||
view.debug_request("scripting"sv, m_enable_scripting_action->checked() ? "on"sv : "off"sv);
|
view.debug_request("scripting"sv, m_enable_scripting_action->checked() ? "on"sv : "off"sv);
|
||||||
view.debug_request("content-filtering"sv, m_enable_content_filtering_action->checked() ? "on"sv : "off"sv);
|
view.debug_request("content-filtering"sv, m_enable_content_filtering_action->checked() ? "on"sv : "off"sv);
|
||||||
|
|
|
@ -18,6 +18,9 @@
|
||||||
#include <LibMain/Main.h>
|
#include <LibMain/Main.h>
|
||||||
#include <LibRequests/RequestClient.h>
|
#include <LibRequests/RequestClient.h>
|
||||||
#include <LibURL/URL.h>
|
#include <LibURL/URL.h>
|
||||||
|
#include <LibWeb/CSS/PreferredColorScheme.h>
|
||||||
|
#include <LibWeb/CSS/PreferredContrast.h>
|
||||||
|
#include <LibWeb/CSS/PreferredMotion.h>
|
||||||
#include <LibWebView/Forward.h>
|
#include <LibWebView/Forward.h>
|
||||||
#include <LibWebView/Options.h>
|
#include <LibWebView/Options.h>
|
||||||
#include <LibWebView/Process.h>
|
#include <LibWebView/Process.h>
|
||||||
|
@ -74,6 +77,9 @@ public:
|
||||||
Action& select_all_action() { return *m_select_all_action; }
|
Action& select_all_action() { return *m_select_all_action; }
|
||||||
Action& view_source_action() { return *m_view_source_action; }
|
Action& view_source_action() { return *m_view_source_action; }
|
||||||
|
|
||||||
|
Menu& color_scheme_menu() { return *m_color_scheme_menu; }
|
||||||
|
Menu& contrast_menu() { return *m_contrast_menu; }
|
||||||
|
Menu& motion_menu() { return *m_motion_menu; }
|
||||||
Menu& debug_menu() { return *m_debug_menu; }
|
Menu& debug_menu() { return *m_debug_menu; }
|
||||||
|
|
||||||
void apply_view_options(Badge<ViewImplementation>, ViewImplementation&);
|
void apply_view_options(Badge<ViewImplementation>, ViewImplementation&);
|
||||||
|
@ -170,6 +176,15 @@ private:
|
||||||
RefPtr<Action> m_select_all_action;
|
RefPtr<Action> m_select_all_action;
|
||||||
RefPtr<Action> m_view_source_action;
|
RefPtr<Action> m_view_source_action;
|
||||||
|
|
||||||
|
RefPtr<Menu> m_color_scheme_menu;
|
||||||
|
Web::CSS::PreferredColorScheme m_color_scheme { Web::CSS::PreferredColorScheme::Auto };
|
||||||
|
|
||||||
|
RefPtr<Menu> m_contrast_menu;
|
||||||
|
Web::CSS::PreferredContrast m_contrast { Web::CSS::PreferredContrast::Auto };
|
||||||
|
|
||||||
|
RefPtr<Menu> m_motion_menu;
|
||||||
|
Web::CSS::PreferredMotion m_motion { Web::CSS::PreferredMotion::Auto };
|
||||||
|
|
||||||
RefPtr<Menu> m_debug_menu;
|
RefPtr<Menu> m_debug_menu;
|
||||||
RefPtr<Action> m_show_line_box_borders_action;
|
RefPtr<Action> m_show_line_box_borders_action;
|
||||||
RefPtr<Action> m_enable_scripting_action;
|
RefPtr<Action> m_enable_scripting_action;
|
||||||
|
|
|
@ -53,6 +53,10 @@ enum class ActionID {
|
||||||
ToggleMediaControlsState,
|
ToggleMediaControlsState,
|
||||||
ToggleMediaLoopState,
|
ToggleMediaLoopState,
|
||||||
|
|
||||||
|
PreferredColorScheme,
|
||||||
|
PreferredContrast,
|
||||||
|
PreferredMotion,
|
||||||
|
|
||||||
DumpSessionHistoryTree,
|
DumpSessionHistoryTree,
|
||||||
DumpDOMTree,
|
DumpDOMTree,
|
||||||
DumpLayoutTree,
|
DumpLayoutTree,
|
||||||
|
|
|
@ -9,9 +9,6 @@
|
||||||
#include <AK/Optional.h>
|
#include <AK/Optional.h>
|
||||||
#include <AK/StringView.h>
|
#include <AK/StringView.h>
|
||||||
#include <LibURL/URL.h>
|
#include <LibURL/URL.h>
|
||||||
#include <LibWeb/CSS/PreferredColorScheme.h>
|
|
||||||
#include <LibWeb/CSS/PreferredContrast.h>
|
|
||||||
#include <LibWeb/CSS/PreferredMotion.h>
|
|
||||||
#include <LibWeb/HTML/ActivateTab.h>
|
#include <LibWeb/HTML/ActivateTab.h>
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
@ -42,8 +39,4 @@
|
||||||
|
|
||||||
- (void)removeTab:(nonnull TabController*)controller;
|
- (void)removeTab:(nonnull TabController*)controller;
|
||||||
|
|
||||||
- (Web::CSS::PreferredColorScheme)preferredColorScheme;
|
|
||||||
- (Web::CSS::PreferredContrast)preferredContrast;
|
|
||||||
- (Web::CSS::PreferredMotion)preferredMotion;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -19,11 +19,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@interface ApplicationDelegate ()
|
@interface ApplicationDelegate ()
|
||||||
{
|
|
||||||
Web::CSS::PreferredColorScheme m_preferred_color_scheme;
|
|
||||||
Web::CSS::PreferredContrast m_preferred_contrast;
|
|
||||||
Web::CSS::PreferredMotion m_preferred_motion;
|
|
||||||
}
|
|
||||||
|
|
||||||
@property (nonatomic, strong) NSMutableArray<TabController*>* managed_tabs;
|
@property (nonatomic, strong) NSMutableArray<TabController*>* managed_tabs;
|
||||||
@property (nonatomic, weak) Tab* active_tab;
|
@property (nonatomic, weak) Tab* active_tab;
|
||||||
|
@ -63,10 +58,6 @@
|
||||||
|
|
||||||
self.managed_tabs = [[NSMutableArray alloc] init];
|
self.managed_tabs = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
m_preferred_color_scheme = Web::CSS::PreferredColorScheme::Auto;
|
|
||||||
m_preferred_contrast = Web::CSS::PreferredContrast::Auto;
|
|
||||||
m_preferred_motion = Web::CSS::PreferredMotion::Auto;
|
|
||||||
|
|
||||||
// Reduce the tooltip delay, as the default delay feels quite long.
|
// Reduce the tooltip delay, as the default delay feels quite long.
|
||||||
[[NSUserDefaults standardUserDefaults] setObject:@100 forKey:@"NSInitialToolTipDelay"];
|
[[NSUserDefaults standardUserDefaults] setObject:@100 forKey:@"NSInitialToolTipDelay"];
|
||||||
}
|
}
|
||||||
|
@ -133,21 +124,6 @@
|
||||||
[self.managed_tabs removeObject:controller];
|
[self.managed_tabs removeObject:controller];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (Web::CSS::PreferredColorScheme)preferredColorScheme
|
|
||||||
{
|
|
||||||
return m_preferred_color_scheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (Web::CSS::PreferredContrast)preferredContrast
|
|
||||||
{
|
|
||||||
return m_preferred_contrast;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (Web::CSS::PreferredMotion)preferredMotion
|
|
||||||
{
|
|
||||||
return m_preferred_motion;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Private methods
|
#pragma mark - Private methods
|
||||||
|
|
||||||
- (void)openAboutVersionPage:(id)sender
|
- (void)openAboutVersionPage:(id)sender
|
||||||
|
@ -290,98 +266,6 @@
|
||||||
activeTab:self.active_tab];
|
activeTab:self.active_tab];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setAutoPreferredColorScheme:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_color_scheme = Web::CSS::PreferredColorScheme::Auto;
|
|
||||||
[self broadcastPreferredColorSchemeUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setDarkPreferredColorScheme:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_color_scheme = Web::CSS::PreferredColorScheme::Dark;
|
|
||||||
[self broadcastPreferredColorSchemeUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setLightPreferredColorScheme:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_color_scheme = Web::CSS::PreferredColorScheme::Light;
|
|
||||||
[self broadcastPreferredColorSchemeUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)broadcastPreferredColorSchemeUpdate
|
|
||||||
{
|
|
||||||
for (TabController* controller in self.managed_tabs) {
|
|
||||||
auto* tab = (Tab*)[controller window];
|
|
||||||
[[tab web_view] setPreferredColorScheme:m_preferred_color_scheme];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setAutoPreferredContrast:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_contrast = Web::CSS::PreferredContrast::Auto;
|
|
||||||
[self broadcastPreferredContrastUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setLessPreferredContrast:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_contrast = Web::CSS::PreferredContrast::Less;
|
|
||||||
[self broadcastPreferredContrastUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setMorePreferredContrast:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_contrast = Web::CSS::PreferredContrast::More;
|
|
||||||
[self broadcastPreferredContrastUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setNoPreferencePreferredContrast:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_contrast = Web::CSS::PreferredContrast::NoPreference;
|
|
||||||
[self broadcastPreferredContrastUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)broadcastPreferredContrastUpdate
|
|
||||||
{
|
|
||||||
for (TabController* controller in self.managed_tabs) {
|
|
||||||
auto* tab = (Tab*)[controller window];
|
|
||||||
[[tab web_view] setPreferredContrast:m_preferred_contrast];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setAutoPreferredMotion:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_motion = Web::CSS::PreferredMotion::Auto;
|
|
||||||
[self broadcastPreferredMotionUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setNoPreferencePreferredMotion:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_motion = Web::CSS::PreferredMotion::NoPreference;
|
|
||||||
[self broadcastPreferredMotionUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setReducePreferredMotion:(id)sender
|
|
||||||
{
|
|
||||||
m_preferred_motion = Web::CSS::PreferredMotion::Reduce;
|
|
||||||
[self broadcastPreferredMotionUpdate];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)broadcastPreferredMotionUpdate
|
|
||||||
{
|
|
||||||
for (TabController* controller in self.managed_tabs) {
|
|
||||||
auto* tab = (Tab*)[controller window];
|
|
||||||
[[tab web_view] setPreferredMotion:m_preferred_motion];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)broadcastDisplayRefreshRateChange
|
|
||||||
{
|
|
||||||
for (TabController* controller in self.managed_tabs) {
|
|
||||||
auto* tab = (Tab*)[controller window];
|
|
||||||
[[tab web_view] handleDisplayRefreshRateChange];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)clearHistory:(id)sender
|
- (void)clearHistory:(id)sender
|
||||||
{
|
{
|
||||||
for (TabController* controller in self.managed_tabs) {
|
for (TabController* controller in self.managed_tabs) {
|
||||||
|
@ -486,53 +370,20 @@
|
||||||
auto* menu = [[NSMenuItem alloc] init];
|
auto* menu = [[NSMenuItem alloc] init];
|
||||||
auto* submenu = [[NSMenu alloc] initWithTitle:@"View"];
|
auto* submenu = [[NSMenu alloc] initWithTitle:@"View"];
|
||||||
|
|
||||||
auto* color_scheme_menu = [[NSMenu alloc] init];
|
auto* color_scheme_menu = Ladybird::create_application_menu(WebView::Application::the().color_scheme_menu());
|
||||||
[color_scheme_menu addItem:[[NSMenuItem alloc] initWithTitle:@"Auto"
|
auto* color_scheme_menu_item = [[NSMenuItem alloc] initWithTitle:[color_scheme_menu title]
|
||||||
action:@selector(setAutoPreferredColorScheme:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
[color_scheme_menu addItem:[[NSMenuItem alloc] initWithTitle:@"Dark"
|
|
||||||
action:@selector(setDarkPreferredColorScheme:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
[color_scheme_menu addItem:[[NSMenuItem alloc] initWithTitle:@"Light"
|
|
||||||
action:@selector(setLightPreferredColorScheme:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
|
|
||||||
auto* color_scheme_menu_item = [[NSMenuItem alloc] initWithTitle:@"Color Scheme"
|
|
||||||
action:nil
|
action:nil
|
||||||
keyEquivalent:@""];
|
keyEquivalent:@""];
|
||||||
[color_scheme_menu_item setSubmenu:color_scheme_menu];
|
[color_scheme_menu_item setSubmenu:color_scheme_menu];
|
||||||
|
|
||||||
auto* contrast_menu = [[NSMenu alloc] init];
|
auto* contrast_menu = Ladybird::create_application_menu(WebView::Application::the().contrast_menu());
|
||||||
[contrast_menu addItem:[[NSMenuItem alloc] initWithTitle:@"Auto"
|
auto* contrast_menu_item = [[NSMenuItem alloc] initWithTitle:[contrast_menu title]
|
||||||
action:@selector(setAutoPreferredContrast:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
[contrast_menu addItem:[[NSMenuItem alloc] initWithTitle:@"Less"
|
|
||||||
action:@selector(setLessPreferredContrast:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
[contrast_menu addItem:[[NSMenuItem alloc] initWithTitle:@"More"
|
|
||||||
action:@selector(setMorePreferredContrast:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
[contrast_menu addItem:[[NSMenuItem alloc] initWithTitle:@"No Preference"
|
|
||||||
action:@selector(setNoPreferencePreferredContrast:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
|
|
||||||
auto* contrast_menu_item = [[NSMenuItem alloc] initWithTitle:@"Contrast"
|
|
||||||
action:nil
|
action:nil
|
||||||
keyEquivalent:@""];
|
keyEquivalent:@""];
|
||||||
[contrast_menu_item setSubmenu:contrast_menu];
|
[contrast_menu_item setSubmenu:contrast_menu];
|
||||||
|
|
||||||
auto* motion_menu = [[NSMenu alloc] init];
|
auto* motion_menu = Ladybird::create_application_menu(WebView::Application::the().motion_menu());
|
||||||
[motion_menu addItem:[[NSMenuItem alloc] initWithTitle:@"Auto"
|
auto* motion_menu_item = [[NSMenuItem alloc] initWithTitle:[motion_menu title]
|
||||||
action:@selector(setAutoPreferredMotion:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
[motion_menu addItem:[[NSMenuItem alloc] initWithTitle:@"No Preference"
|
|
||||||
action:@selector(setNoPreferencePreferredMotion:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
[motion_menu addItem:[[NSMenuItem alloc] initWithTitle:@"Reduce"
|
|
||||||
action:@selector(setReducePreferredMotion:)
|
|
||||||
keyEquivalent:@""]];
|
|
||||||
|
|
||||||
auto* motion_menu_item = [[NSMenuItem alloc] initWithTitle:@"Motion"
|
|
||||||
action:nil
|
action:nil
|
||||||
keyEquivalent:@""];
|
keyEquivalent:@""];
|
||||||
[motion_menu_item setSubmenu:motion_menu];
|
[motion_menu_item setSubmenu:motion_menu];
|
||||||
|
@ -666,34 +517,10 @@
|
||||||
|
|
||||||
- (void)applicationDidChangeScreenParameters:(NSNotification*)notification
|
- (void)applicationDidChangeScreenParameters:(NSNotification*)notification
|
||||||
{
|
{
|
||||||
[self broadcastDisplayRefreshRateChange];
|
for (TabController* controller in self.managed_tabs) {
|
||||||
}
|
auto* tab = (Tab*)[controller window];
|
||||||
|
[[tab web_view] handleDisplayRefreshRateChange];
|
||||||
- (BOOL)validateMenuItem:(NSMenuItem*)item
|
|
||||||
{
|
|
||||||
if ([item action] == @selector(setAutoPreferredColorScheme:)) {
|
|
||||||
[item setState:(m_preferred_color_scheme == Web::CSS::PreferredColorScheme::Auto) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setDarkPreferredColorScheme:)) {
|
|
||||||
[item setState:(m_preferred_color_scheme == Web::CSS::PreferredColorScheme::Dark) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setLightPreferredColorScheme:)) {
|
|
||||||
[item setState:(m_preferred_color_scheme == Web::CSS::PreferredColorScheme::Light) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setAutoPreferredContrast:)) {
|
|
||||||
[item setState:(m_preferred_contrast == Web::CSS::PreferredContrast::Auto) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setLessPreferredContrast:)) {
|
|
||||||
[item setState:(m_preferred_contrast == Web::CSS::PreferredContrast::Less) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setMorePreferredContrast:)) {
|
|
||||||
[item setState:(m_preferred_contrast == Web::CSS::PreferredContrast::More) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setNoPreferencePreferredContrast:)) {
|
|
||||||
[item setState:(m_preferred_contrast == Web::CSS::PreferredContrast::NoPreference) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setAutoPreferredMotion:)) {
|
|
||||||
[item setState:(m_preferred_motion == Web::CSS::PreferredMotion::Auto) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setNoPreferencePreferredMotion:)) {
|
|
||||||
[item setState:(m_preferred_motion == Web::CSS::PreferredMotion::NoPreference) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
} else if ([item action] == @selector(setReducePreferredMotion:)) {
|
|
||||||
[item setState:(m_preferred_motion == Web::CSS::PreferredMotion::Reduce) ? NSControlStateValueOn : NSControlStateValueOff];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return YES;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -7,11 +7,9 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AK/Forward.h>
|
#include <AK/Forward.h>
|
||||||
|
#include <AK/StringUtils.h>
|
||||||
#include <LibGfx/Forward.h>
|
#include <LibGfx/Forward.h>
|
||||||
#include <LibURL/Forward.h>
|
#include <LibURL/Forward.h>
|
||||||
#include <LibWeb/CSS/PreferredColorScheme.h>
|
|
||||||
#include <LibWeb/CSS/PreferredContrast.h>
|
|
||||||
#include <LibWeb/CSS/PreferredMotion.h>
|
|
||||||
#include <LibWeb/HTML/ActivateTab.h>
|
#include <LibWeb/HTML/ActivateTab.h>
|
||||||
#include <LibWeb/HTML/AudioPlayState.h>
|
#include <LibWeb/HTML/AudioPlayState.h>
|
||||||
#include <LibWebView/Forward.h>
|
#include <LibWebView/Forward.h>
|
||||||
|
@ -66,10 +64,6 @@
|
||||||
- (void)handleDisplayRefreshRateChange;
|
- (void)handleDisplayRefreshRateChange;
|
||||||
- (void)handleVisibility:(BOOL)is_visible;
|
- (void)handleVisibility:(BOOL)is_visible;
|
||||||
|
|
||||||
- (void)setPreferredColorScheme:(Web::CSS::PreferredColorScheme)color_scheme;
|
|
||||||
- (void)setPreferredContrast:(Web::CSS::PreferredContrast)contrast;
|
|
||||||
- (void)setPreferredMotion:(Web::CSS::PreferredMotion)motion;
|
|
||||||
|
|
||||||
- (void)findInPage:(NSString*)query
|
- (void)findInPage:(NSString*)query
|
||||||
caseSensitivity:(CaseSensitivity)case_sensitivity;
|
caseSensitivity:(CaseSensitivity)case_sensitivity;
|
||||||
- (void)findInPageNextMatch;
|
- (void)findInPageNextMatch;
|
||||||
|
|
|
@ -93,7 +93,6 @@ struct HideCursor {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
self.observer = observer;
|
self.observer = observer;
|
||||||
|
|
||||||
auto* delegate = (ApplicationDelegate*)[NSApp delegate];
|
|
||||||
auto* screens = [NSScreen screens];
|
auto* screens = [NSScreen screens];
|
||||||
|
|
||||||
Vector<Web::DevicePixelRect> screen_rects;
|
Vector<Web::DevicePixelRect> screen_rects;
|
||||||
|
@ -108,7 +107,7 @@ struct HideCursor {
|
||||||
auto device_pixel_ratio = [[NSScreen mainScreen] backingScaleFactor];
|
auto device_pixel_ratio = [[NSScreen mainScreen] backingScaleFactor];
|
||||||
auto maximum_frames_per_second = [[NSScreen mainScreen] maximumFramesPerSecond];
|
auto maximum_frames_per_second = [[NSScreen mainScreen] maximumFramesPerSecond];
|
||||||
|
|
||||||
m_web_view_bridge = MUST(Ladybird::WebViewBridge::create(move(screen_rects), device_pixel_ratio, maximum_frames_per_second, [delegate preferredColorScheme], [delegate preferredContrast], [delegate preferredMotion]));
|
m_web_view_bridge = MUST(Ladybird::WebViewBridge::create(move(screen_rects), device_pixel_ratio, maximum_frames_per_second));
|
||||||
[self setWebViewCallbacks];
|
[self setWebViewCallbacks];
|
||||||
|
|
||||||
self.page_context_menu = Ladybird::create_context_menu(self, [self view].page_context_menu());
|
self.page_context_menu = Ladybird::create_context_menu(self, [self view].page_context_menu());
|
||||||
|
@ -226,21 +225,6 @@ struct HideCursor {
|
||||||
return m_web_view_bridge->zoom_level();
|
return m_web_view_bridge->zoom_level();
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setPreferredColorScheme:(Web::CSS::PreferredColorScheme)color_scheme
|
|
||||||
{
|
|
||||||
m_web_view_bridge->set_preferred_color_scheme(color_scheme);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setPreferredContrast:(Web::CSS::PreferredContrast)contrast
|
|
||||||
{
|
|
||||||
m_web_view_bridge->set_preferred_contrast(contrast);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setPreferredMotion:(Web::CSS::PreferredMotion)motion
|
|
||||||
{
|
|
||||||
m_web_view_bridge->set_preferred_motion(motion);
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Private methods
|
#pragma mark - Private methods
|
||||||
|
|
||||||
static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_type)
|
static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_type)
|
||||||
|
|
|
@ -20,16 +20,13 @@ static T scale_for_device(T size, float device_pixel_ratio)
|
||||||
return size.template to_type<float>().scaled(device_pixel_ratio).template to_type<int>();
|
return size.template to_type<float>().scaled(device_pixel_ratio).template to_type<int>();
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<NonnullOwnPtr<WebViewBridge>> WebViewBridge::create(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second, Web::CSS::PreferredColorScheme preferred_color_scheme, Web::CSS::PreferredContrast preferred_contrast, Web::CSS::PreferredMotion preferred_motion)
|
ErrorOr<NonnullOwnPtr<WebViewBridge>> WebViewBridge::create(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second)
|
||||||
{
|
{
|
||||||
return adopt_nonnull_own_or_enomem(new (nothrow) WebViewBridge(move(screen_rects), device_pixel_ratio, maximum_frames_per_second, preferred_color_scheme, preferred_contrast, preferred_motion));
|
return adopt_nonnull_own_or_enomem(new (nothrow) WebViewBridge(move(screen_rects), device_pixel_ratio, maximum_frames_per_second));
|
||||||
}
|
}
|
||||||
|
|
||||||
WebViewBridge::WebViewBridge(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second, Web::CSS::PreferredColorScheme preferred_color_scheme, Web::CSS::PreferredContrast preferred_contrast, Web::CSS::PreferredMotion preferred_motion)
|
WebViewBridge::WebViewBridge(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second)
|
||||||
: m_screen_rects(move(screen_rects))
|
: m_screen_rects(move(screen_rects))
|
||||||
, m_preferred_color_scheme(preferred_color_scheme)
|
|
||||||
, m_preferred_contrast(preferred_contrast)
|
|
||||||
, m_preferred_motion(preferred_motion)
|
|
||||||
{
|
{
|
||||||
m_device_pixel_ratio = device_pixel_ratio;
|
m_device_pixel_ratio = device_pixel_ratio;
|
||||||
m_maximum_frames_per_second = static_cast<double>(maximum_frames_per_second);
|
m_maximum_frames_per_second = static_cast<double>(maximum_frames_per_second);
|
||||||
|
@ -63,24 +60,6 @@ void WebViewBridge::update_palette()
|
||||||
client().async_update_system_theme(m_client_state.page_index, move(theme));
|
client().async_update_system_theme(m_client_state.page_index, move(theme));
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebViewBridge::set_preferred_color_scheme(Web::CSS::PreferredColorScheme color_scheme)
|
|
||||||
{
|
|
||||||
m_preferred_color_scheme = color_scheme;
|
|
||||||
client().async_set_preferred_color_scheme(m_client_state.page_index, color_scheme);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WebViewBridge::set_preferred_contrast(Web::CSS::PreferredContrast contrast)
|
|
||||||
{
|
|
||||||
m_preferred_contrast = contrast;
|
|
||||||
client().async_set_preferred_contrast(m_client_state.page_index, contrast);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WebViewBridge::set_preferred_motion(Web::CSS::PreferredMotion motion)
|
|
||||||
{
|
|
||||||
m_preferred_motion = motion;
|
|
||||||
client().async_set_preferred_motion(m_client_state.page_index, motion);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WebViewBridge::enqueue_input_event(Web::MouseEvent event)
|
void WebViewBridge::enqueue_input_event(Web::MouseEvent event)
|
||||||
{
|
{
|
||||||
event.position = to_content_position(event.position.to_type<int>()).to_type<Web::DevicePixels>();
|
event.position = to_content_position(event.position.to_type<int>()).to_type<Web::DevicePixels>();
|
||||||
|
@ -144,8 +123,6 @@ Gfx::IntPoint WebViewBridge::to_widget_position(Gfx::IntPoint content_position)
|
||||||
void WebViewBridge::initialize_client(CreateNewClient create_new_client)
|
void WebViewBridge::initialize_client(CreateNewClient create_new_client)
|
||||||
{
|
{
|
||||||
ViewImplementation::initialize_client(create_new_client);
|
ViewImplementation::initialize_client(create_new_client);
|
||||||
|
|
||||||
client().async_set_preferred_color_scheme(m_client_state.page_index, m_preferred_color_scheme);
|
|
||||||
update_palette();
|
update_palette();
|
||||||
|
|
||||||
if (!m_screen_rects.is_empty()) {
|
if (!m_screen_rects.is_empty()) {
|
||||||
|
|
|
@ -10,9 +10,6 @@
|
||||||
#include <LibGfx/Point.h>
|
#include <LibGfx/Point.h>
|
||||||
#include <LibGfx/Rect.h>
|
#include <LibGfx/Rect.h>
|
||||||
#include <LibGfx/Size.h>
|
#include <LibGfx/Size.h>
|
||||||
#include <LibWeb/CSS/PreferredColorScheme.h>
|
|
||||||
#include <LibWeb/CSS/PreferredContrast.h>
|
|
||||||
#include <LibWeb/CSS/PreferredMotion.h>
|
|
||||||
#include <LibWeb/Page/InputEvent.h>
|
#include <LibWeb/Page/InputEvent.h>
|
||||||
#include <LibWebView/ViewImplementation.h>
|
#include <LibWebView/ViewImplementation.h>
|
||||||
|
|
||||||
|
@ -20,7 +17,7 @@ namespace Ladybird {
|
||||||
|
|
||||||
class WebViewBridge final : public WebView::ViewImplementation {
|
class WebViewBridge final : public WebView::ViewImplementation {
|
||||||
public:
|
public:
|
||||||
static ErrorOr<NonnullOwnPtr<WebViewBridge>> create(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second, Web::CSS::PreferredColorScheme, Web::CSS::PreferredContrast, Web::CSS::PreferredMotion);
|
static ErrorOr<NonnullOwnPtr<WebViewBridge>> create(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second);
|
||||||
virtual ~WebViewBridge() override;
|
virtual ~WebViewBridge() override;
|
||||||
|
|
||||||
virtual void initialize_client(CreateNewClient = CreateNewClient::Yes) override;
|
virtual void initialize_client(CreateNewClient = CreateNewClient::Yes) override;
|
||||||
|
@ -35,9 +32,6 @@ public:
|
||||||
void set_maximum_frames_per_second(u64 maximum_frames_per_second);
|
void set_maximum_frames_per_second(u64 maximum_frames_per_second);
|
||||||
|
|
||||||
void update_palette();
|
void update_palette();
|
||||||
void set_preferred_color_scheme(Web::CSS::PreferredColorScheme);
|
|
||||||
void set_preferred_contrast(Web::CSS::PreferredContrast);
|
|
||||||
void set_preferred_motion(Web::CSS::PreferredMotion);
|
|
||||||
|
|
||||||
void enqueue_input_event(Web::MouseEvent);
|
void enqueue_input_event(Web::MouseEvent);
|
||||||
void enqueue_input_event(Web::DragEvent);
|
void enqueue_input_event(Web::DragEvent);
|
||||||
|
@ -52,7 +46,7 @@ public:
|
||||||
Function<void()> on_zoom_level_changed;
|
Function<void()> on_zoom_level_changed;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WebViewBridge(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second, Web::CSS::PreferredColorScheme, Web::CSS::PreferredContrast, Web::CSS::PreferredMotion);
|
WebViewBridge(Vector<Web::DevicePixelRect> screen_rects, float device_pixel_ratio, u64 maximum_frames_per_second);
|
||||||
|
|
||||||
virtual void update_zoom() override;
|
virtual void update_zoom() override;
|
||||||
virtual Web::DevicePixelSize viewport_size() const override;
|
virtual Web::DevicePixelSize viewport_size() const override;
|
||||||
|
@ -61,10 +55,6 @@ private:
|
||||||
|
|
||||||
Vector<Web::DevicePixelRect> m_screen_rects;
|
Vector<Web::DevicePixelRect> m_screen_rects;
|
||||||
Gfx::IntSize m_viewport_size;
|
Gfx::IntSize m_viewport_size;
|
||||||
|
|
||||||
Web::CSS::PreferredColorScheme m_preferred_color_scheme { Web::CSS::PreferredColorScheme::Auto };
|
|
||||||
Web::CSS::PreferredContrast m_preferred_contrast { Web::CSS::PreferredContrast::Auto };
|
|
||||||
Web::CSS::PreferredMotion m_preferred_motion { Web::CSS::PreferredMotion::Auto };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,9 +9,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <AK/TypeCasts.h>
|
#include <AK/TypeCasts.h>
|
||||||
#include <LibWeb/CSS/PreferredColorScheme.h>
|
|
||||||
#include <LibWeb/CSS/PreferredContrast.h>
|
|
||||||
#include <LibWeb/CSS/PreferredMotion.h>
|
|
||||||
#include <LibWebView/Application.h>
|
#include <LibWebView/Application.h>
|
||||||
#include <UI/Qt/Application.h>
|
#include <UI/Qt/Application.h>
|
||||||
#include <UI/Qt/BrowserWindow.h>
|
#include <UI/Qt/BrowserWindow.h>
|
||||||
|
@ -220,88 +217,10 @@ BrowserWindow::BrowserWindow(Vector<URL::URL> const& initial_urls, IsPopupWindow
|
||||||
|
|
||||||
view_menu->addSeparator();
|
view_menu->addSeparator();
|
||||||
|
|
||||||
auto* color_scheme_menu = view_menu->addMenu("&Color Scheme");
|
view_menu->addMenu(create_application_menu(*view_menu, Application::the().color_scheme_menu()));
|
||||||
|
view_menu->addMenu(create_application_menu(*view_menu, Application::the().contrast_menu()));
|
||||||
auto* color_scheme_group = new QActionGroup(this);
|
view_menu->addMenu(create_application_menu(*view_menu, Application::the().motion_menu()));
|
||||||
|
view_menu->addSeparator();
|
||||||
auto* auto_color_scheme = new QAction("&Auto", this);
|
|
||||||
auto_color_scheme->setCheckable(true);
|
|
||||||
color_scheme_group->addAction(auto_color_scheme);
|
|
||||||
color_scheme_menu->addAction(auto_color_scheme);
|
|
||||||
QObject::connect(auto_color_scheme, &QAction::triggered, this, [this] {
|
|
||||||
set_preferred_color_scheme(Web::CSS::PreferredColorScheme::Auto);
|
|
||||||
});
|
|
||||||
auto* light_color_scheme = new QAction("&Light", this);
|
|
||||||
light_color_scheme->setCheckable(true);
|
|
||||||
color_scheme_group->addAction(light_color_scheme);
|
|
||||||
color_scheme_menu->addAction(light_color_scheme);
|
|
||||||
QObject::connect(light_color_scheme, &QAction::triggered, this, [this] {
|
|
||||||
set_preferred_color_scheme(Web::CSS::PreferredColorScheme::Light);
|
|
||||||
});
|
|
||||||
|
|
||||||
auto* dark_color_scheme = new QAction("&Dark", this);
|
|
||||||
dark_color_scheme->setCheckable(true);
|
|
||||||
color_scheme_group->addAction(dark_color_scheme);
|
|
||||||
color_scheme_menu->addAction(dark_color_scheme);
|
|
||||||
QObject::connect(dark_color_scheme, &QAction::triggered, this, [this] {
|
|
||||||
set_preferred_color_scheme(Web::CSS::PreferredColorScheme::Dark);
|
|
||||||
});
|
|
||||||
|
|
||||||
auto_color_scheme->setChecked(true);
|
|
||||||
|
|
||||||
auto* contrast_menu = view_menu->addMenu("&Contrast");
|
|
||||||
|
|
||||||
auto* contrast_group = new QActionGroup(this);
|
|
||||||
|
|
||||||
auto* auto_contrast = new QAction("&Auto", this);
|
|
||||||
auto_contrast->setCheckable(true);
|
|
||||||
contrast_group->addAction(auto_contrast);
|
|
||||||
contrast_menu->addAction(auto_contrast);
|
|
||||||
QObject::connect(auto_contrast, &QAction::triggered, this, &BrowserWindow::enable_auto_contrast);
|
|
||||||
|
|
||||||
auto* less_contrast = new QAction("&Less", this);
|
|
||||||
less_contrast->setCheckable(true);
|
|
||||||
contrast_group->addAction(less_contrast);
|
|
||||||
contrast_menu->addAction(less_contrast);
|
|
||||||
QObject::connect(less_contrast, &QAction::triggered, this, &BrowserWindow::enable_less_contrast);
|
|
||||||
|
|
||||||
auto* more_contrast = new QAction("&More", this);
|
|
||||||
more_contrast->setCheckable(true);
|
|
||||||
contrast_group->addAction(more_contrast);
|
|
||||||
contrast_menu->addAction(more_contrast);
|
|
||||||
QObject::connect(more_contrast, &QAction::triggered, this, &BrowserWindow::enable_more_contrast);
|
|
||||||
|
|
||||||
auto* no_preference_contrast = new QAction("&No Preference", this);
|
|
||||||
no_preference_contrast->setCheckable(true);
|
|
||||||
contrast_group->addAction(no_preference_contrast);
|
|
||||||
contrast_menu->addAction(no_preference_contrast);
|
|
||||||
QObject::connect(no_preference_contrast, &QAction::triggered, this, &BrowserWindow::enable_no_preference_contrast);
|
|
||||||
|
|
||||||
auto_contrast->setChecked(true);
|
|
||||||
|
|
||||||
auto* motion_menu = view_menu->addMenu("&Motion");
|
|
||||||
|
|
||||||
auto* motion_group = new QActionGroup(this);
|
|
||||||
|
|
||||||
auto* auto_motion = new QAction("&Auto", this);
|
|
||||||
auto_motion->setCheckable(true);
|
|
||||||
motion_group->addAction(auto_motion);
|
|
||||||
motion_menu->addAction(auto_motion);
|
|
||||||
QObject::connect(auto_motion, &QAction::triggered, this, &BrowserWindow::enable_auto_motion);
|
|
||||||
|
|
||||||
auto* reduce_motion = new QAction("&Reduce", this);
|
|
||||||
reduce_motion->setCheckable(true);
|
|
||||||
motion_group->addAction(reduce_motion);
|
|
||||||
motion_menu->addAction(reduce_motion);
|
|
||||||
QObject::connect(reduce_motion, &QAction::triggered, this, &BrowserWindow::enable_reduce_motion);
|
|
||||||
|
|
||||||
auto* no_preference_motion = new QAction("&No Preference", this);
|
|
||||||
no_preference_motion->setCheckable(true);
|
|
||||||
motion_group->addAction(no_preference_motion);
|
|
||||||
motion_menu->addAction(no_preference_motion);
|
|
||||||
QObject::connect(no_preference_motion, &QAction::triggered, this, &BrowserWindow::enable_no_preference_motion);
|
|
||||||
|
|
||||||
auto_motion->setChecked(true);
|
|
||||||
|
|
||||||
auto* show_menubar = new QAction("Show &Menubar", this);
|
auto* show_menubar = new QAction("Show &Menubar", this);
|
||||||
show_menubar->setCheckable(true);
|
show_menubar->setCheckable(true);
|
||||||
|
@ -558,8 +477,6 @@ void BrowserWindow::initialize_tab(Tab* tab)
|
||||||
|
|
||||||
m_tabs_container->setTabIcon(m_tabs_container->indexOf(tab), tab->favicon());
|
m_tabs_container->setTabIcon(m_tabs_container->indexOf(tab), tab->favicon());
|
||||||
create_close_button_for_tab(tab);
|
create_close_button_for_tab(tab);
|
||||||
|
|
||||||
tab->view().set_preferred_color_scheme(m_preferred_color_scheme);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserWindow::activate_tab(int index)
|
void BrowserWindow::activate_tab(int index)
|
||||||
|
@ -740,55 +657,6 @@ void BrowserWindow::open_previous_tab()
|
||||||
m_tabs_container->setCurrentIndex(next_index);
|
m_tabs_container->setCurrentIndex(next_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserWindow::enable_auto_contrast()
|
|
||||||
{
|
|
||||||
for_each_tab([](auto& tab) {
|
|
||||||
tab.view().set_preferred_contrast(Web::CSS::PreferredContrast::Auto);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void BrowserWindow::enable_less_contrast()
|
|
||||||
{
|
|
||||||
for_each_tab([](auto& tab) {
|
|
||||||
tab.view().set_preferred_contrast(Web::CSS::PreferredContrast::Less);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void BrowserWindow::enable_more_contrast()
|
|
||||||
{
|
|
||||||
for_each_tab([](auto& tab) {
|
|
||||||
tab.view().set_preferred_contrast(Web::CSS::PreferredContrast::More);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void BrowserWindow::enable_no_preference_contrast()
|
|
||||||
{
|
|
||||||
for_each_tab([](auto& tab) {
|
|
||||||
tab.view().set_preferred_contrast(Web::CSS::PreferredContrast::NoPreference);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void BrowserWindow::enable_auto_motion()
|
|
||||||
{
|
|
||||||
for_each_tab([](auto& tab) {
|
|
||||||
tab.view().set_preferred_motion(Web::CSS::PreferredMotion::Auto);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void BrowserWindow::enable_no_preference_motion()
|
|
||||||
{
|
|
||||||
for_each_tab([](auto& tab) {
|
|
||||||
tab.view().set_preferred_motion(Web::CSS::PreferredMotion::NoPreference);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void BrowserWindow::enable_reduce_motion()
|
|
||||||
{
|
|
||||||
for_each_tab([](auto& tab) {
|
|
||||||
tab.view().set_preferred_motion(Web::CSS::PreferredMotion::Reduce);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void BrowserWindow::zoom_in()
|
void BrowserWindow::zoom_in()
|
||||||
{
|
{
|
||||||
if (!m_current_tab)
|
if (!m_current_tab)
|
||||||
|
@ -847,14 +715,6 @@ void BrowserWindow::set_window_rect(Optional<Web::DevicePixels> x, Optional<Web:
|
||||||
setGeometry(x.value().value(), y.value().value(), width.value().value(), height.value().value());
|
setGeometry(x.value().value(), y.value().value(), width.value().value(), height.value().value());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserWindow::set_preferred_color_scheme(Web::CSS::PreferredColorScheme color_scheme)
|
|
||||||
{
|
|
||||||
m_preferred_color_scheme = color_scheme;
|
|
||||||
for_each_tab([color_scheme](auto& tab) {
|
|
||||||
tab.view().set_preferred_color_scheme(color_scheme);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
bool BrowserWindow::event(QEvent* event)
|
bool BrowserWindow::event(QEvent* event)
|
||||||
{
|
{
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
|
|
@ -67,13 +67,6 @@ public slots:
|
||||||
void open_next_tab();
|
void open_next_tab();
|
||||||
void open_previous_tab();
|
void open_previous_tab();
|
||||||
void open_file();
|
void open_file();
|
||||||
void enable_auto_contrast();
|
|
||||||
void enable_less_contrast();
|
|
||||||
void enable_more_contrast();
|
|
||||||
void enable_no_preference_contrast();
|
|
||||||
void enable_auto_motion();
|
|
||||||
void enable_no_preference_motion();
|
|
||||||
void enable_reduce_motion();
|
|
||||||
void zoom_in();
|
void zoom_in();
|
||||||
void zoom_out();
|
void zoom_out();
|
||||||
void reset_zoom();
|
void reset_zoom();
|
||||||
|
@ -117,9 +110,6 @@ private:
|
||||||
double m_device_pixel_ratio { 0 };
|
double m_device_pixel_ratio { 0 };
|
||||||
double m_refresh_rate { 60.0 };
|
double m_refresh_rate { 60.0 };
|
||||||
|
|
||||||
Web::CSS::PreferredColorScheme m_preferred_color_scheme { Web::CSS::PreferredColorScheme::Auto };
|
|
||||||
void set_preferred_color_scheme(Web::CSS::PreferredColorScheme color_scheme);
|
|
||||||
|
|
||||||
void devtools_disabled();
|
void devtools_disabled();
|
||||||
void devtools_enabled();
|
void devtools_enabled();
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,6 @@
|
||||||
#include <LibGfx/Forward.h>
|
#include <LibGfx/Forward.h>
|
||||||
#include <LibGfx/Rect.h>
|
#include <LibGfx/Rect.h>
|
||||||
#include <LibURL/URL.h>
|
#include <LibURL/URL.h>
|
||||||
#include <LibWeb/CSS/PreferredColorScheme.h>
|
|
||||||
#include <LibWeb/CSS/PreferredContrast.h>
|
|
||||||
#include <LibWeb/CSS/Selector.h>
|
|
||||||
#include <LibWeb/Forward.h>
|
#include <LibWeb/Forward.h>
|
||||||
#include <LibWeb/HTML/ActivateTab.h>
|
#include <LibWeb/HTML/ActivateTab.h>
|
||||||
#include <LibWebView/ViewImplementation.h>
|
#include <LibWebView/ViewImplementation.h>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue