From 76298f1f181fd9aced445d10eae2671e4a658213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Berg?= Date: Wed, 21 Oct 2009 07:05:03 +0200 Subject: [PATCH] Bug fix: the QuickLook panel now really starts its nice morphing animation from the selected row. Previously it would just start from the top of the file browser outline view every single time. Not very sexy... --- GitX.xcodeproj/project.pbxproj | 4 ++-- PBGitHistoryController.h | 6 ++++-- PBGitHistoryController.m | 15 ++++++++------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/GitX.xcodeproj/project.pbxproj b/GitX.xcodeproj/project.pbxproj index 45591e4..83032e2 100644 --- a/GitX.xcodeproj/project.pbxproj +++ b/GitX.xcodeproj/project.pbxproj @@ -801,7 +801,7 @@ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; - buildConfigurationList = 26FC0A880875C7B200E6366F /* Build configuration list for PBXProject "GitX" */; + buildConfigurationList = 26FC0A880875C7B200E6366F /* Build configuration list for PBXProject "gitx" */; compatibilityVersion = "Xcode 3.1"; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* GitTest */; @@ -1507,7 +1507,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 26FC0A880875C7B200E6366F /* Build configuration list for PBXProject "GitX" */ = { + 26FC0A880875C7B200E6366F /* Build configuration list for PBXProject "gitx" */ = { isa = XCConfigurationList; buildConfigurations = ( 26FC0A890875C7B200E6366F /* Debug */, diff --git a/PBGitHistoryController.h b/PBGitHistoryController.h index 76e322f..2440804 100644 --- a/PBGitHistoryController.h +++ b/PBGitHistoryController.h @@ -13,15 +13,17 @@ #import "PBCollapsibleSplitView.h" #import /* for the QLPreviewPanelDataSource et al. stuff */ +@class PBQLOutlineView; + @interface PBGitHistoryController : PBViewController { IBOutlet NSSearchField *searchField; IBOutlet NSArrayController* commitController; IBOutlet NSTreeController* treeController; - IBOutlet NSOutlineView* fileBrowser; IBOutlet NSTableView* commitList; + IBOutlet PBQLOutlineView* fileBrowser; IBOutlet PBCollapsibleSplitView *historySplitView; - IBOutlet id webView; + int selectedTab; PBGitTree* gitTree; diff --git a/PBGitHistoryController.m b/PBGitHistoryController.m index 177262b..bad534e 100644 --- a/PBGitHistoryController.m +++ b/PBGitHistoryController.m @@ -11,6 +11,7 @@ #import "PBGitRevisionCell.h" #import "PBCommitList.h" #import "ApplicationController.h" +#import "PBQLOutlineView.h" @implementation PBGitHistoryController @synthesize selectedTab, webCommit, rawCommit, gitTree, commitController; @@ -67,20 +68,20 @@ // This delegate method provides the rect on screen from which the panel will zoom. - (NSRect)previewPanel:(QLPreviewPanel *)panel sourceFrameOnScreenForPreviewItem:(id )item { - NSInteger index = [[treeController selectedObjects] indexOfObject:item]; + NSInteger index = [fileBrowser rowForItem:[[treeController selectedNodes] objectAtIndex:0]]; if (index == NSNotFound) { return NSZeroRect; } - NSRect iconRect = [fileBrowser frameOfOutlineCellAtRow:index]; + NSRect iconRect = [fileBrowser frameOfCellAtColumn:0 row:index]; // check that the icon rect is visible on screen -// NSRect visibleRect = [fileBrowser visibleRect]; -// -// if (!NSIntersectsRect(visibleRect, iconRect)) { -// return NSZeroRect; -// } + NSRect visibleRect = [fileBrowser visibleRect]; + if (!NSIntersectsRect(visibleRect, iconRect)) { + return NSZeroRect; + } + // convert icon rect to screen coordinates iconRect = [fileBrowser convertRectToBase:iconRect]; iconRect.origin = [[fileBrowser window] convertBaseToScreen:iconRect.origin];