Respect 'immediately switch to new tabs' setting

This commit is contained in:
anthony 2021-03-02 19:40:45 +00:00
parent d763670ccd
commit 21efa0c6ed
4 changed files with 27 additions and 6 deletions

View File

@ -284,12 +284,15 @@ static id newTabTarget;
[urlBar setStringValue: urlString];
}
-(void)setTitle: (NSString*)title forTab: (id)tab {
NSLog(@"Set title to %@", title);
[[self window] setTitle: title];
NSString *tabTitle = title;
if ([tabTitle length] > TAB_TITLE_LEN) {
tabTitle = [title substringToIndex: TAB_TITLE_LEN];
}
[[tab tabItem] setLabel: tabTitle];
// Label doesn't get updated automatically.
[tabView setNeedsDisplayInRect: [tabView bounds]];
}
-(void)findNext: (NSString*)needle matchCase: (BOOL)matchCase sender: (id)sender {
@ -378,24 +381,23 @@ static id newTabTarget;
[newPlotView setBrowser: aBrowser];
[newScrollView setLineScroll: 25];
NSInteger num = [tabView numberOfTabViewItems];
NSTabViewItem *previouslySelected = [tabView selectedTabViewItem];
[tabView insertTabViewItem: tabItem atIndex: num];
TabContents *tc = [[TabContents alloc] initWithScroll: newScrollView plot:
newPlotView browser: aBrowser tabItem: tabItem];
[self setActive: tc];
[tabs addObject: tc];
[tabView selectTabViewItem: tabItem];
if (![[Preferences defaultPreferences] switchTabImmediately]) {
[tabView selectTabViewItem: previouslySelected];
}
[tabItem release];
[tc release];
[newPlotView release];
[newScrollView release];
@try {
[self updateTabsVisibility];
}
@catch (NSException *e) {
NSLog(@"%@", e);
}
return tc;
}

View File

@ -45,6 +45,8 @@ typedef NS_ENUM(NSInteger, PreferenceType) {
-(BOOL)alwaysShowTabs;
-(void)setAlwaysShowTabs: (BOOL)value;
-(BOOL)switchTabImmediately;
-(void)setSwitchTabImmediaty: (BOOL)value;
+(Preferences*)defaultPreferences;
@end

View File

@ -8,6 +8,7 @@
#define KEY_REMOVE_DOWNLOADS_COMPLETE @"remove_downloads_complete"
#define KEY_CONFIRM_OVERWRITE @"confirm_overwrite"
#define KEY_DOWNLOAD_LOCATION @"download_location"
#define KEY_SWITCH_TAB_IMMEDIATELY @"switch_tab_immediately"
#define KEY_ALWAYS_SHOW_TABS @"always_show_tabs"
@ -117,6 +118,18 @@
[self notifyPreferenceUpdated: PreferenceTypeAlwaysShowTabs];
}
-(BOOL)switchTabImmediately {
if ([defaults objectForKey: KEY_SWITCH_TAB_IMMEDIATELY] != nil) {
return [defaults boolForKey: KEY_SWITCH_TAB_IMMEDIATELY];
} else {
return NO;
}
}
-(void)setSwitchTabImmediately: (BOOL)value {
[defaults setBool: value forKey: KEY_SWITCH_TAB_IMMEDIATELY];
}
+(Preferences*)defaultPreferences {
static Preferences *prefs;

View File

@ -201,6 +201,8 @@
-(void)configureAppearanceTab {
[alwaysShowTabBarButton setState: [[Preferences defaultPreferences] alwaysShowTabs] ?
NSOnState : NSOffState];
[switchToTabsButton setState: [[Preferences defaultPreferences] switchTabImmediately]
? NSOnState : NSOffState];
}
-(void)didPickDeveloperViews: (id)sender {
@ -223,6 +225,8 @@
-(void)didPressSwitchToTabs: (id)sender {
NSLog(@"didPressSwitchToTabs");
BOOL checked = [sender state] == NSOnState;
[[Preferences defaultPreferences] setSwitchTabImmediately: checked];
}
-(void)didPressUrlSuggestions: (id)sender {