From b21ec0afac2ac91c643109c3b36c6598621c4862 Mon Sep 17 00:00:00 2001 From: Bastiaan van der Plaat Date: Thu, 30 Nov 2023 20:04:15 +0100 Subject: [PATCH] Ladybird/AppKit: Select all text of location search field on focus --- Ladybird/AppKit/UI/TabController.mm | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/Ladybird/AppKit/UI/TabController.mm b/Ladybird/AppKit/UI/TabController.mm index 0950515862..286dfa5c0f 100644 --- a/Ladybird/AppKit/UI/TabController.mm +++ b/Ladybird/AppKit/UI/TabController.mm @@ -34,6 +34,24 @@ enum class IsHistoryNavigation { No, }; +@interface LocationSearchField : NSSearchField + +- (BOOL)becomeFirstResponder; + +@end + +@implementation LocationSearchField + +- (BOOL)becomeFirstResponder +{ + BOOL result = [super becomeFirstResponder]; + if (result) + [self performSelector:@selector(selectText:) withObject:self afterDelay:0]; + return result; +} + +@end + @interface TabController () { DeprecatedString m_title; @@ -257,7 +275,7 @@ enum class IsHistoryNavigation { attributes:highlight_attributes]; } - auto* location_search_field = (NSSearchField*)[self.location_toolbar_item view]; + auto* location_search_field = (LocationSearchField*)[self.location_toolbar_item view]; [location_search_field setAttributedStringValue:attributed_url]; } @@ -450,7 +468,7 @@ enum class IsHistoryNavigation { - (NSToolbarItem*)location_toolbar_item { if (!_location_toolbar_item) { - auto* location_search_field = [[NSSearchField alloc] init]; + auto* location_search_field = [[LocationSearchField alloc] init]; [location_search_field setPlaceholderString:@"Enter web address"]; [location_search_field setTextColor:[NSColor textColor]]; [location_search_field setDelegate:self]; @@ -651,7 +669,7 @@ enum class IsHistoryNavigation { - (void)controlTextDidEndEditing:(NSNotification*)notification { - auto* location_search_field = (NSSearchField*)[self.location_toolbar_item view]; + auto* location_search_field = (LocationSearchField*)[self.location_toolbar_item view]; auto url_string = Ladybird::ns_string_to_string([location_search_field stringValue]); [self setLocationFieldText:url_string];