Revision: 3341
          http://skim-app.svn.sourceforge.net/skim-app/?rev=3341&view=rev
Author:   hofman
Date:     2007-12-30 07:18:10 -0800 (Sun, 30 Dec 2007)

Log Message:
-----------
Avoid setup twice for initial windows at startup.

Modified Paths:
--------------
    trunk/SKApplicationController.m
    trunk/SKMainWindowController.h
    trunk/SKMainWindowController.m

Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m     2007-12-28 18:34:58 UTC (rev 3340)
+++ trunk/SKApplicationController.m     2007-12-30 15:18:10 UTC (rev 3341)
@@ -142,7 +142,7 @@
                 if (document = [[NSDocumentController 
sharedDocumentController] openDocumentWithContentsOfURL:fileURL display:NO 
error:&error]) {
                     [document makeWindowControllers];
                     if ([document 
respondsToSelector:@selector(mainWindowController)])
-                        [[document mainWindowController] setupWindow:dict];
+                        [[document mainWindowController] setInitialSetup:dict];
                     [document showWindows];
                 } else {
                     [NSApp presentError:error];

Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h      2007-12-28 18:34:58 UTC (rev 3340)
+++ trunk/SKMainWindowController.h      2007-12-30 15:18:10 UTC (rev 3341)
@@ -380,7 +380,7 @@
 - (void)addAnnotationsFromDictionaries:(NSArray *)noteDicts 
undoable:(BOOL)undoable;
 - (void)setAnnotationsFromDictionaries:(NSArray *)noteDicts 
undoable:(BOOL)undoable;
 
-- (void)setupWindow:(NSDictionary *)setup;
+- (void)setInitialSetup:(NSDictionary *)setup;
 - (NSDictionary *)currentSetup;
 - (void)applyPDFSettings:(NSDictionary *)setup;
 - (NSDictionary *)currentPDFSettings;

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2007-12-28 18:34:58 UTC (rev 3340)
+++ trunk/SKMainWindowController.m      2007-12-30 15:18:10 UTC (rev 3341)
@@ -309,6 +309,7 @@
 
 - (void)windowDidLoad{
     NSUserDefaults *sud = [NSUserDefaults standardUserDefaults];
+    BOOL hasWindowSetup = [savedNormalSetup count] > 0;
     NSRect frame;
     
     settingUpWindow = YES;
@@ -393,24 +394,36 @@
     
     [[self window] setBackgroundColor:[NSColor colorWithCalibratedWhite:0.9 
alpha:1.0]];
     
-    int windowSizeOption = [sud integerForKey:SKInitialWindowSizeOptionKey];
-    if (windowSizeOption == SKMaximizeWindowOption)
-        [[self window] setFrame:[[NSScreen mainScreen] visibleFrame] 
display:NO];
-    
     if ([sud boolForKey:SKShowStatusBarKey])
         [self toggleStatusBar:nil];
     
+    int windowSizeOption = [sud integerForKey:SKInitialWindowSizeOptionKey];
+    if (hasWindowSetup) {
+        NSString *rectString = [savedNormalSetup 
objectForKey:WINDOW_FRAME_KEY];
+        if (rectString)
+            [[self window] setFrame:NSRectFromString(rectString) display:NO];
+    } else if (windowSizeOption == SKMaximizeWindowOption) {
+        [[self window] setFrame:[[NSScreen mainScreen] visibleFrame] 
display:NO];
+    }
+    
     [[self window] makeFirstResponder:[pdfView documentView]];
     
     // Set up the PDF
-    [self applyPDFSettings:[sud 
dictionaryForKey:SKDefaultPDFDisplaySettingsKey]];
+    [self applyPDFSettings:hasWindowSetup ? savedNormalSetup : [sud 
dictionaryForKey:SKDefaultPDFDisplaySettingsKey]];
     
     [pdfView setShouldAntiAlias:[sud boolForKey:SKShouldAntiAliasKey]];
     [pdfView setGreekingThreshold:[sud floatForKey:SKGreekingThresholdKey]];
     [pdfView setBackgroundColor:[sud colorForKey:SKBackgroundColorKey]];
     
-    if ([sud objectForKey:SKLeftSidePaneWidthKey]) {
-        float width = [sud floatForKey:SKLeftSidePaneWidthKey];
+    NSNumber *leftWidth = [savedNormalSetup 
objectForKey:LEFT_SIDE_PANE_WIDTH_KEY];
+    NSNumber *rightWidth = [savedNormalSetup 
objectForKey:RIGHT_SIDE_PANE_WIDTH_KEY];
+    if (leftWidth == nil)
+        leftWidth = [sud objectForKey:SKLeftSidePaneWidthKey];
+    if (rightWidth == nil)
+        rightWidth = [sud objectForKey:SKRightSidePaneWidthKey];
+    
+    if (leftWidth && rightWidth) {
+        float width = [leftWidth floatValue];
         if (width >= 0.0) {
             frame = [leftSideContentView frame];
             frame.size.width = width;
@@ -423,7 +436,7 @@
                 [leftSideDrawer close];
             }
         }
-        width = [sud floatForKey:SKRightSidePaneWidthKey];
+        width = [rightWidth floatValue];
         if (width >= 0.0) {
             frame = [rightSideContentView frame];
             frame.size.width = width;
@@ -476,14 +489,16 @@
         [leftSideButton setEnabled:NO forSegment:SKOutlineSidePaneState];
     
     // Go to page?
-    if ([sud boolForKey:SKRememberLastPageViewedKey]) {
-        unsigned int pageIndex = [[SKBookmarkController 
sharedBookmarkController] pageIndexForRecentDocumentAtPath:[[[self document] 
fileURL] path]];
-        if (pageIndex != NSNotFound && [[pdfView document] pageCount] > 
pageIndex)
-            [pdfView goToPage:[[pdfView document] pageAtIndex:pageIndex]];
-    }
+    unsigned int pageIndex = NSNotFound;
+    if (hasWindowSetup)
+        pageIndex = [[savedNormalSetup objectForKey:PAGE_INDEX_KEY] 
unsignedIntValue];
+    else if ([sud boolForKey:SKRememberLastPageViewedKey])
+        pageIndex = [[SKBookmarkController sharedBookmarkController] 
pageIndexForRecentDocumentAtPath:[[[self document] fileURL] path]];
+    if (pageIndex != NSNotFound && [[pdfView document] pageCount] > pageIndex)
+        [pdfView goToPage:[[pdfView document] pageAtIndex:pageIndex]];
     
     // We can fit only after the PDF has been loaded
-    if (windowSizeOption == SKFitWindowOption)
+    if (windowSizeOption == SKFitWindowOption && hasWindowSetup == NO)
         [self performFit:self];
     
     // Open snapshots?
@@ -520,6 +535,9 @@
     [self registerForNotifications];
     [self registerAsObserver];
     
+    if (hasWindowSetup)
+        [savedNormalSetup removeAllObjects];
+    
     settingUpWindow = NO;
 }
 
@@ -604,48 +622,11 @@
                                   SKTableFontSizeKey, nil]];
 }
 
-- (void)setupWindow:(NSDictionary *)setup{
-    NSString *rectString;
-    NSNumber *number;
-    NSRect frame;
-    
-    if (rectString = [setup objectForKey:WINDOW_FRAME_KEY])
-        [[self window] setFrame:NSRectFromString(rectString) display:NO];
-    if (number = [setup objectForKey:LEFT_SIDE_PANE_WIDTH_KEY]) {
-        frame = [leftSideContentView frame];
-        frame.size.width = [number floatValue];
-        if (usesDrawers == NO) {
-            [leftSideContentView setFrame:frame];
-        } else if (NSWidth(frame) > 0.0) {
-            [leftSideDrawer setContentSize:frame.size];
-            [leftSideDrawer openOnEdge:NSMinXEdge];
-        } else {
-            [leftSideDrawer close];
-        }
-    }
-    if (number = [setup objectForKey:RIGHT_SIDE_PANE_WIDTH_KEY]) {
-        frame = [rightSideContentView frame];
-        frame.size.width = [number floatValue];
-        frame.origin.x = NSMaxX([splitView frame]) - NSWidth(frame);
-        if (usesDrawers == NO) {
-            [rightSideContentView setFrame:frame];
-        } else if (NSWidth(frame) > 0.0) {
-            [rightSideDrawer setContentSize:frame.size];
-            [rightSideDrawer openOnEdge:NSMaxXEdge];
-        } else {
-            [rightSideDrawer close];
-        }
-    }
-    if (usesDrawers == NO) {
-        frame = [pdfSplitView frame];
-        frame.size.width = NSWidth([splitView frame]) - 
NSWidth([leftSideContentView frame]) - NSWidth([rightSideContentView frame]) - 
2 * [splitView dividerThickness];
-        frame.origin.x = NSMaxX([leftSideContentView frame]) + [splitView 
dividerThickness];
-        [pdfSplitView setFrame:frame];
-    }
-    
-    [self applyPDFSettings:setup];
-    if (number = [setup objectForKey:PAGE_INDEX_KEY])
-        [pdfView goToPage:[[pdfView document] pageAtIndex:[number intValue]]];
+- (void)setInitialSetup:(NSDictionary *)setup{
+    if ([self isWindowLoaded] == NO)
+        [savedNormalSetup setDictionary:setup];
+    else
+        NSLog(@"-[NSMainWindowController setupWindow:] called after window was 
loaded");
 }
 
 - (NSDictionary *)currentSetup {


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to