UI/AppKit: Implement exiting fullscreen

This commit is contained in:
Luke Wilde 2026-01-27 16:56:23 +00:00 committed by Luke Wilde
parent 25eef2e6e6
commit 1d34abd96f
5 changed files with 31 additions and 0 deletions

View file

@ -56,6 +56,7 @@
- (void)handleResize;
- (void)handleDevicePixelRatioChange;
- (void)handleDisplayRefreshRateChange;
- (void)handleExitFullScreen;
- (void)handleVisibility:(BOOL)is_visible;
- (void)findInPage:(NSString*)query

View file

@ -192,6 +192,11 @@ struct HideCursor {
m_web_view_bridge->set_maximum_frames_per_second([[[self window] screen] maximumFramesPerSecond]);
}
- (void)handleExitFullScreen
{
m_web_view_bridge->exit_fullscreen();
}
- (void)handleVisibility:(BOOL)is_visible
{
m_web_view_bridge->set_system_visibility_state(is_visible
@ -843,6 +848,19 @@ struct HideCursor {
m_web_view_bridge->did_update_window_rect();
};
m_web_view_bridge->on_exit_fullscreen_window = [weak_self]() {
LadybirdWebView* self = weak_self;
if (self == nil) {
return;
}
if (([[self window] styleMask] & NSWindowStyleMaskFullScreen) != 0) {
[[self window] toggleFullScreen:nil];
}
m_web_view_bridge->did_update_window_rect();
};
m_web_view_bridge->on_theme_color_change = [weak_self](auto color) {
LadybirdWebView* self = weak_self;
if (self == nil) {

View file

@ -59,6 +59,11 @@ void WebViewBridge::set_maximum_frames_per_second(u64 maximum_frames_per_second)
client().async_set_maximum_frames_per_second(m_client_state.page_index, maximum_frames_per_second);
}
void WebViewBridge::exit_fullscreen()
{
client().async_exit_fullscreen(m_client_state.page_index);
}
void WebViewBridge::update_palette()
{
auto theme = create_system_palette();

View file

@ -31,6 +31,8 @@ public:
void set_maximum_frames_per_second(u64 maximum_frames_per_second);
void exit_fullscreen();
void update_palette();
void enqueue_input_event(Web::MouseEvent);

View file

@ -453,6 +453,11 @@ static NSString* const TOOLBAR_TAB_OVERVIEW_IDENTIFIER = @"ToolbarTabOverviewIde
[[[self tab] web_view] handleDisplayRefreshRateChange];
}
- (void)windowDidExitFullScreen:(NSNotification*)notification
{
[[[self tab] web_view] handleExitFullScreen];
}
#pragma mark - NSToolbarDelegate
- (NSToolbarItem*)toolbar:(NSToolbar*)toolbar