diff --git a/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/classes.nib b/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/classes.nib index db58b47b72a..ac883c44594 100644 --- a/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/classes.nib +++ b/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/classes.nib @@ -17,11 +17,11 @@ CLASS = OrgMozillaChimeraPreferenceTabs; LANGUAGE = ObjC; OUTLETS = { - checkboxLoadTabsInBackground = NSButton; + mCheckboxLoadTabsInBackground = NSButton; + mCheckboxOpenTabsForCommand = NSButton; + mCheckboxOpenTabsForExternalLinks = NSButton; mSingleWindowMode = NSButton; mTabBarVisiblity = NSButton; - radioOpenForAE = NSMatrix; - radioOpenTabsForCommand = NSMatrix; }; SUPERCLASS = PreferencePaneBase; }, diff --git a/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/keyedobjects.nib b/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/keyedobjects.nib index 8f8038b0c42..686b8a9c750 100644 Binary files a/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/keyedobjects.nib and b/camino/PreferencePanes/Tabs/English.lproj/Tabs.nib/keyedobjects.nib differ diff --git a/camino/PreferencePanes/Tabs/Tabs.h b/camino/PreferencePanes/Tabs/Tabs.h index 3f4230b870a..33a3f58519b 100644 --- a/camino/PreferencePanes/Tabs/Tabs.h +++ b/camino/PreferencePanes/Tabs/Tabs.h @@ -43,11 +43,12 @@ @interface OrgMozillaChimeraPreferenceTabs : PreferencePaneBase { - IBOutlet NSMatrix* radioOpenTabsForCommand; - IBOutlet NSMatrix* radioOpenForAE; - IBOutlet NSButton *checkboxLoadTabsInBackground; - IBOutlet NSButton* mTabBarVisiblity; + IBOutlet NSButton* mCheckboxOpenTabsForCommand; + IBOutlet NSButton* mCheckboxOpenTabsForExternalLinks; IBOutlet NSButton* mSingleWindowMode; + + IBOutlet NSButton* mCheckboxLoadTabsInBackground; + IBOutlet NSButton* mTabBarVisiblity; } - (IBAction)checkboxClicked:(id)sender; diff --git a/camino/PreferencePanes/Tabs/Tabs.mm b/camino/PreferencePanes/Tabs/Tabs.mm index 595f01e6cd5..a11c185387f 100644 --- a/camino/PreferencePanes/Tabs/Tabs.mm +++ b/camino/PreferencePanes/Tabs/Tabs.mm @@ -41,6 +41,9 @@ #import "Tabs.h" #import "nsIBrowserDOMWindow.h" +const int kOpenExternalLinksInNewWindow = 0; +const int kOpenExternalLinksInNewTab = 1; + @implementation OrgMozillaChimeraPreferenceTabs - (id)initWithBundle:(NSBundle *)bundle @@ -60,11 +63,16 @@ return; BOOL gotPref; - - [radioOpenTabsForCommand selectCellWithTag:[self getBooleanPref:"browser.tabs.opentabfor.middleclick" withSuccess:&gotPref]]; - [radioOpenForAE selectCellWithTag:[self getIntPref:"browser.reuse_window" withSuccess:&gotPref]]; - [checkboxLoadTabsInBackground setState:[self getBooleanPref:"browser.tabs.loadInBackground" withSuccess:&gotPref]]; - [mTabBarVisiblity setState:[self getBooleanPref:"camino.tab_bar_always_visible" withSuccess:&gotPref]]; + + [mCheckboxOpenTabsForCommand setState:([self getBooleanPref:"browser.tabs.opentabfor.middleclick" withSuccess:&gotPref] ? NSOnState : NSOffState)]; + + int externalLinksPref = [self getIntPref:"browser.reuse_window" withSuccess:&gotPref]; + if (externalLinksPref == kOpenExternalLinksInNewWindow) + [mCheckboxOpenTabsForExternalLinks setState:NSOffState]; + else if (externalLinksPref == kOpenExternalLinksInNewTab) + [mCheckboxOpenTabsForExternalLinks setState:NSOnState]; + else + [mCheckboxOpenTabsForExternalLinks setState:NSMixedState]; int swmBehavior = [self getIntPref:"browser.link.open_newwindow" withSuccess:&gotPref]; if (swmBehavior == nsIBrowserDOMWindow::OPEN_DEFAULTWINDOW) @@ -73,6 +81,9 @@ [mSingleWindowMode setState:NSOnState]; else [mSingleWindowMode setState:NSMixedState]; + + [mCheckboxLoadTabsInBackground setState:([self getBooleanPref:"browser.tabs.loadInBackground" withSuccess:&gotPref] ? NSOnState : NSOffState)]; + [mTabBarVisiblity setState:([self getBooleanPref:"camino.tab_bar_always_visible" withSuccess:&gotPref] ? NSOnState : NSOffState)]; } - (IBAction)checkboxClicked:(id)sender @@ -80,23 +91,22 @@ if (!mPrefService) return; - if (sender == radioOpenTabsForCommand) { - [self setPref:"browser.tabs.opentabfor.middleclick" toBoolean:[[sender selectedCell] tag]]; - } - else if (sender == radioOpenForAE) { - [self setPref:"browser.reuse_window" toInt:[[sender selectedCell] tag]]; - } - else if (sender == checkboxLoadTabsInBackground) { - [self setPref:"browser.tabs.loadInBackground" toBoolean:[sender state]]; - } - else if (sender == mTabBarVisiblity) { - [self setPref:"camino.tab_bar_always_visible" toBoolean:[sender state]]; + if (sender == mCheckboxOpenTabsForCommand) + [self setPref:"browser.tabs.opentabfor.middleclick" toBoolean:([sender state] == NSOnState)]; + else if (sender == mCheckboxOpenTabsForExternalLinks) { + [sender setAllowsMixedState:NO]; + [self setPref:"browser.reuse_window" toInt:([sender state] == NSOnState ? kOpenExternalLinksInNewTab : kOpenExternalLinksInNewWindow)]; } else if (sender == mSingleWindowMode) { [sender setAllowsMixedState:NO]; - int newState = [sender state] ? nsIBrowserDOMWindow::OPEN_NEWTAB : nsIBrowserDOMWindow::OPEN_DEFAULTWINDOW; + int newState = ([sender state] == NSOnState) ? nsIBrowserDOMWindow::OPEN_NEWTAB : nsIBrowserDOMWindow::OPEN_DEFAULTWINDOW; [self setPref:"browser.link.open_newwindow" toInt:newState]; } + + else if (sender == mCheckboxLoadTabsInBackground) + [self setPref:"browser.tabs.loadInBackground" toBoolean:([sender state] == NSOnState)]; + else if (sender == mTabBarVisiblity) + [self setPref:"camino.tab_bar_always_visible" toBoolean:([sender state] == NSOnState)]; } @end