From bfb356fd6ca9851f14153581ab7d8d3602170b8c Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sun, 28 Apr 2024 12:29:31 -0400 Subject: [PATCH] Ladybird/AppKit: Track the currently active tab Will be needed to open new tabs from other Ladybird processes from the active tab. --- Ladybird/AppKit/Application/ApplicationDelegate.h | 3 +++ Ladybird/AppKit/Application/ApplicationDelegate.mm | 11 +++++++++++ Ladybird/AppKit/UI/TabController.mm | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/Ladybird/AppKit/Application/ApplicationDelegate.h b/Ladybird/AppKit/Application/ApplicationDelegate.h index e76a3a05b43..e1e349c848b 100644 --- a/Ladybird/AppKit/Application/ApplicationDelegate.h +++ b/Ladybird/AppKit/Application/ApplicationDelegate.h @@ -37,6 +37,9 @@ fromTab:(nullable Tab*)tab activateTab:(Web::HTML::ActivateTab)activate_tab; +- (void)setActiveTab:(nonnull Tab*)tab; +- (nullable Tab*)activeTab; + - (void)removeTab:(nonnull TabController*)controller; - (WebView::CookieJar&)cookieJar; diff --git a/Ladybird/AppKit/Application/ApplicationDelegate.mm b/Ladybird/AppKit/Application/ApplicationDelegate.mm index dd7efcf2617..59fd1ffd013 100644 --- a/Ladybird/AppKit/Application/ApplicationDelegate.mm +++ b/Ladybird/AppKit/Application/ApplicationDelegate.mm @@ -35,6 +35,7 @@ } @property (nonatomic, strong) NSMutableArray* managed_tabs; +@property (nonatomic, strong) Tab* active_tab; @property (nonatomic, strong) TaskManagerController* task_manager_controller; @@ -119,6 +120,16 @@ return controller; } +- (void)setActiveTab:(Tab*)tab +{ + self.active_tab = tab; +} + +- (Tab*)activeTab +{ + return self.active_tab; +} + - (void)removeTab:(TabController*)controller { [self.managed_tabs removeObject:controller]; diff --git a/Ladybird/AppKit/UI/TabController.mm b/Ladybird/AppKit/UI/TabController.mm index 278d06c5fbd..9056cfa8821 100644 --- a/Ladybird/AppKit/UI/TabController.mm +++ b/Ladybird/AppKit/UI/TabController.mm @@ -520,10 +520,19 @@ static NSString* const TOOLBAR_TAB_OVERVIEW_IDENTIFIER = @"ToolbarTabOverviewIde [self.window makeKeyAndOrderFront:sender]; [self focusLocationToolbarItem]; + + auto* delegate = (ApplicationDelegate*)[NSApp delegate]; + [delegate setActiveTab:[self tab]]; } #pragma mark - NSWindowDelegate +- (void)windowDidBecomeMain:(NSNotification*)notification +{ + auto* delegate = (ApplicationDelegate*)[NSApp delegate]; + [delegate setActiveTab:[self tab]]; +} + - (void)windowWillClose:(NSNotification*)notification { [[self tab] tabWillClose];