Revision: 4606
http://skim-app.svn.sourceforge.net/skim-app/?rev=4606&view=rev
Author: hofman
Date: 2008-09-10 18:23:41 +0000 (Wed, 10 Sep 2008)
Log Message:
-----------
Expand open outline items after a short delay when the item is first shown.
Works only on Leopard.
Modified Paths:
--------------
trunk/SKMainWindowController_UI.m
Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m 2008-09-10 17:42:31 UTC (rev 4605)
+++ trunk/SKMainWindowController_UI.m 2008-09-10 18:23:41 UTC (rev 4606)
@@ -514,21 +514,14 @@
- (int)outlineView:(NSOutlineView *)ov numberOfChildrenOfItem:(id)item{
if ([ov isEqual:outlineView]) {
- if (item == nil){
- if ((pdfOutline) && ([[pdfView document] isLocked] == NO)){
- return [pdfOutline numberOfChildren];
- }else{
- return 0;
- }
- }else{
- return [(PDFOutline *)item numberOfChildren];
- }
+ if (item == nil && [[pdfView document] isLocked] == NO)
+ item = pdfOutline;
+ return [(PDFOutline *)item numberOfChildren];
} else if ([ov isEqual:noteOutlineView]) {
- if (item == nil) {
+ if (item == nil)
return [[noteArrayController arrangedObjects] count];
- } else {
+ else
return [[item texts] count];
- }
}
return 0;
}
@@ -538,31 +531,27 @@
if (item == nil && [[pdfView document] isLocked] == NO)
item = pdfOutline;
PDFOutline *obj = [(PDFOutline *)item childAtIndex:anIndex];
+ BOOL shouldExpand = floor(NSAppKitVersionNumber) >
NSAppKitVersionNumber10_4 && [pdfOutlineItems containsObject:obj] == NO && [obj
numberOfChildren] > 0 && [obj isOpen];
// Apple's sample code retains this object before returning it, which
prevents a crash, but also causes a leak. We could rewrite PDFOutline, but
it's easier just to collect these objects and release them in -dealloc.
if (obj)
[pdfOutlineItems addObject:obj];
+ if (shouldExpand)
+ [outlineView performSelector:@selector(expandItem:) withObject:obj
afterDelay:0.0];
return obj;
} else if ([ov isEqual:noteOutlineView]) {
- if (item == nil) {
+ if (item == nil)
return [[noteArrayController arrangedObjects]
objectAtIndex:anIndex];
- } else {
+ else
return [[item texts] lastObject];
- }
}
return nil;
}
- (BOOL)outlineView:(NSOutlineView *)ov isItemExpandable:(id)item{
if ([ov isEqual:outlineView]) {
- if (item == nil){
- if ((pdfOutline) && ([[pdfView document] isLocked] == NO)){
- return ([pdfOutline numberOfChildren] > 0);
- }else{
- return NO;
- }
- }else{
- return ([(PDFOutline *)item numberOfChildren] > 0);
- }
+ if (item == nil && [[pdfView document] isLocked] == NO)
+ item = pdfOutline;
+ return ([(PDFOutline *)item numberOfChildren] > 0);
} else if ([ov isEqual:noteOutlineView]) {
return [[item texts] count] > 0;
}
@@ -572,20 +561,18 @@
- (id)outlineView:(NSOutlineView *)ov objectValueForTableColumn:(NSTableColumn
*)tableColumn byItem:(id)item{
if ([ov isEqual:outlineView]) {
NSString *tcID = [tableColumn identifier];
- if([tcID isEqualToString:SKMainWindowLabelColumnIdentifer]){
+ if([tcID isEqualToString:SKMainWindowLabelColumnIdentifer])
return [(PDFOutline *)item label];
- }else if([tcID isEqualToString:SKMainWindowPageColumnIdentifer]){
+ else if([tcID isEqualToString:SKMainWindowPageColumnIdentifer])
return [[[(PDFOutline *)item destination] page] displayLabel];
- }
} else if ([ov isEqual:noteOutlineView]) {
NSString *tcID = [tableColumn identifier];
- if ([tcID isEqualToString:SKMainWindowNoteColumnIdentifer]) {
+ if ([tcID isEqualToString:SKMainWindowNoteColumnIdentifer])
return [item type] ? (id)[item string] : (id)[item text];
- } else if([tcID isEqualToString:SKMainWindowTypeColumnIdentifer]) {
+ else if([tcID isEqualToString:SKMainWindowTypeColumnIdentifer])
return [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber
numberWithBool:item == [pdfView activeAnnotation]],
SKAnnotationTypeImageCellActiveKey, [item type],
SKAnnotationTypeImageCellTypeKey, nil];
- } else if([tcID isEqualToString:SKMainWindowPageColumnIdentifer]) {
+ else if([tcID isEqualToString:SKMainWindowPageColumnIdentifer])
return [[item page] displayLabel];
- }
}
return nil;
}
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 the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit