Restore keeping the original size of content views for pref panes.
authorRobert Sesek <rsesek@bluestatic.org>
Sat, 7 Dec 2019 23:00:09 +0000 (18:00 -0500)
committerRobert Sesek <rsesek@bluestatic.org>
Sun, 15 Dec 2019 17:08:04 +0000 (12:08 -0500)
Source/PreferencesController.m

index 8f863d773204096e02a59c55b55dd607dd20fb05..4a69529e362dab79498350e96b2a4cef8451e700 100644 (file)
@@ -18,6 +18,8 @@
 
 @implementation PreferencesController {
   NSView* _blankView;
+
+  NSSize _generalSize, _fileAccessSize, _pathsSize;
 }
 
 /**
   return self;
 }
 
+- (void)awakeFromNib
+{
+  _generalSize = self.generalPreferencesView.frame.size;
+  _fileAccessSize = self.fileAccessPreferencesView.frame.size;
+  _pathsSize = self.pathsPreferencesView.frame.size;
+}
+
 /**
  * Shows the preferences controller window
  */
  */
 - (IBAction)showGeneral:(id)sender
 {
-  [self _switchToView:self.generalPreferencesView forToolbarItem:self.generalPreferencesItem];
+  [self _switchToView:self.generalPreferencesView resizeTo:_generalSize forToolbarItem:self.generalPreferencesItem];
 }
 
 - (IBAction)showFileAccess:(id)sender
 {
-  [self _switchToView:self.fileAccessPreferencesView forToolbarItem:self.fileAccessPreferencesItem];
+  [self _switchToView:self.fileAccessPreferencesView resizeTo:_fileAccessSize forToolbarItem:self.fileAccessPreferencesItem];
 }
 
 /**
  */
 - (IBAction)showPaths:(id)sender
 {
-  [self _switchToView:self.pathsPreferencesView forToolbarItem:self.pathsPreferencesItem];
+  [self _switchToView:self.pathsPreferencesView resizeTo:_pathsSize forToolbarItem:self.pathsPreferencesItem];
 }
 
 #pragma mark NSToolbar Delegate
 
 #pragma mark Private
 
-- (void)_switchToView:(NSView*)contentView forToolbarItem:(NSToolbarItem*)item {
+- (void)_switchToView:(NSView*)contentView
+             resizeTo:(NSSize)size
+       forToolbarItem:(NSToolbarItem*)item {
   if (self.window.contentView == contentView)
     return;
-  [self _resizeWindowToSize:contentView.frame.size];
+  [self _resizeWindowToSize:size];
   self.window.contentView = contentView;
   self.toolbar.selectedItemIdentifier = item.itemIdentifier;
 }