From 96d0311ad330b71aebb6568800f8dfa465d3b4e3 Mon Sep 17 00:00:00 2001 From: anthony Date: Wed, 3 Mar 2021 19:39:24 +0000 Subject: [PATCH] Begin work on tab position options --- frontends/gnustep/BrowserWindowController.m | 6 ++++-- frontends/gnustep/Preferences.h | 6 +++++- frontends/gnustep/Preferences.m | 14 ++++++++++++++ frontends/gnustep/PreferencesWindowController.m | 4 ++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/frontends/gnustep/BrowserWindowController.m b/frontends/gnustep/BrowserWindowController.m index 69bb7f9e9..5260da1ee 100644 --- a/frontends/gnustep/BrowserWindowController.m +++ b/frontends/gnustep/BrowserWindowController.m @@ -451,12 +451,14 @@ static id newTabTarget; -(void)updateTabsVisibility { BOOL hideTabs = [tabs count] < 2 && ![[Preferences defaultPreferences] alwaysShowTabs]; + TabLocation location = [[Preferences defaultPreferences] tabLocation]; NSRect rect = [tabView frame]; rect.size.height = [[self window] frame].size.height - TOP_CONTENT_HEIGHT; if (hideTabs) { [tabView setTabViewType: NSNoTabsNoBorder]; } else { - [tabView setTabViewType: NSTopTabsBezelBorder]; + [tabView setTabViewType: location == TabLocationTop ? NSTopTabsBezelBorder + : NSBottomTabsBezelBorder]; } [tabView setFrame: rect]; // Work around a graphical glitch where the tab view doesn't properly readjust itself @@ -466,7 +468,7 @@ static id newTabTarget; -(void)onPreferencesUpdated: (id)sender { id dict = [sender object]; PreferenceType type = (PreferenceType)[[dict objectForKey: @"type"] integerValue]; - if (type == PreferenceTypeAlwaysShowTabs) { + if (type == PreferenceTypeAlwaysShowTabs || type == PreferenceTypeTabLocation) { [self updateTabsVisibility]; } } diff --git a/frontends/gnustep/Preferences.h b/frontends/gnustep/Preferences.h index c269af5b1..7b533ace9 100644 --- a/frontends/gnustep/Preferences.h +++ b/frontends/gnustep/Preferences.h @@ -17,7 +17,8 @@ typedef NS_ENUM(NSInteger, TabLocation) { // Certain preferences will notify that they have been updated using this key. #define PreferencesUpdatedNotificationName @"PreferencesUpdatedNotification" typedef NS_ENUM(NSInteger, PreferenceType) { - PreferenceTypeAlwaysShowTabs = 0 + PreferenceTypeAlwaysShowTabs = 0, + PreferenceTypeTabLocation }; @interface Preferences: NSObject { @@ -51,5 +52,8 @@ typedef NS_ENUM(NSInteger, PreferenceType) { -(BOOL)blankNewTabs; -(void)setBlankNewTabs: (BOOL)value; +-(TabLocation)tabLocation; +-(void)setTabLocation: (TabLocation)value; + +(Preferences*)defaultPreferences; @end diff --git a/frontends/gnustep/Preferences.m b/frontends/gnustep/Preferences.m index e914ba072..4200be417 100644 --- a/frontends/gnustep/Preferences.m +++ b/frontends/gnustep/Preferences.m @@ -11,6 +11,7 @@ #define KEY_SWITCH_TAB_IMMEDIATELY @"switch_tab_immediately" #define KEY_BLANK_NEW_TABS @"blank_new_tabs" #define KEY_ALWAYS_SHOW_TABS @"always_show_tabs" +#define KEY_TAB_LOCATION @"tab_location" @interface Preferences (Private) @@ -143,6 +144,19 @@ [defaults setBool: value forKey: KEY_BLANK_NEW_TABS]; } +-(TabLocation)tabLocation { + if ([defaults objectForKey: KEY_TAB_LOCATION] != nil) { + return (TabLocation)[defaults integerForKey: KEY_TAB_LOCATION]; + } else { + return TabLocationTop; + } +} + +-(void)setTabLocation: (TabLocation)value { + [defaults setInteger: (NSInteger)value forKey: KEY_TAB_LOCATION]; + [self notifyPreferenceUpdated: PreferenceTypeTabLocation]; +} + +(Preferences*)defaultPreferences { static Preferences *prefs; if (prefs == nil) { diff --git a/frontends/gnustep/PreferencesWindowController.m b/frontends/gnustep/PreferencesWindowController.m index 09b23a211..11e4b6f4c 100644 --- a/frontends/gnustep/PreferencesWindowController.m +++ b/frontends/gnustep/PreferencesWindowController.m @@ -205,6 +205,8 @@ ? NSOnState : NSOffState]; [bankNewTabsButton setState: [[Preferences defaultPreferences] blankNewTabs] ? NSOnState : NSOffState]; + TabLocation location = [[Preferences defaultPreferences] tabLocation]; + [tabPositionButton selectItemAtIndex: (NSInteger)location]; } -(void)didPickDeveloperViews: (id)sender { @@ -213,6 +215,8 @@ -(void)didPickTabPosition: (id)sender { NSLog(@"didPickTabPosition"); + TabLocation location = (TabLocation)[sender indexOfItem: [sender selectedItem]]; + [[Preferences defaultPreferences] setTabLocation: location]; } -(void)didPressAlwaysShowTabBar: (id)sender {