From a2c60059ab402e9062d745a933fff863a9cb239e Mon Sep 17 00:00:00 2001 From: Robert Retzbach Date: Tue, 26 Jul 2011 21:47:53 +0200 Subject: [PATCH] Fix for issue 18: Distinguish between listviews with and without focus --- Controllers/COMessageController.h | 2 ++ Controllers/COMessageController.m | 4 +++- Resources/MainMenu.xib | 21 ++++++++++++++++++++- UI/COManagedViewCell.m | 8 +++++++- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Controllers/COMessageController.h b/Controllers/COMessageController.h index d6eafd8..d5b06c4 100644 --- a/Controllers/COMessageController.h +++ b/Controllers/COMessageController.h @@ -13,6 +13,8 @@ @interface COMessageController : COListController { + + IBOutlet PXListView *parentView; } diff --git a/Controllers/COMessageController.m b/Controllers/COMessageController.m index d29da9a..9a0fab6 100644 --- a/Controllers/COMessageController.m +++ b/Controllers/COMessageController.m @@ -23,7 +23,9 @@ - (void)listViewSelectionDidChange:(NSNotification *)aNotification { NSIndexSet *selectedRows = [aListView selectedRows]; // select items in arraycontroller [self setSelectionIndexes:selectedRows]; - + + // redraw parent's selected row to show that it has lost focus + [[parentView cellForRowAtIndex:[parentView selectedRow]] setNeedsDisplay:YES]; } - (void)addReplyToMessage:(COMessage *)message { diff --git a/Resources/MainMenu.xib b/Resources/MainMenu.xib index 01d1968..7736880 100644 --- a/Resources/MainMenu.xib +++ b/Resources/MainMenu.xib @@ -2634,6 +2634,14 @@ 771 + + + parentView + + + + 772 + @@ -4443,7 +4451,7 @@ - 771 + 772 @@ -4508,6 +4516,17 @@ COMessageController COListController + + parentView + PXListView + + + parentView + + parentView + PXListView + + IBProjectSource ./Classes/COMessageController.h diff --git a/UI/COManagedViewCell.m b/UI/COManagedViewCell.m index 82bc853..53a9cb1 100644 --- a/UI/COManagedViewCell.m +++ b/UI/COManagedViewCell.m @@ -21,8 +21,14 @@ @implementation COManagedViewCell @synthesize objectController; - (void)drawRect:(NSRect)dirtyRect { + if ([self isSelected]) { - [[NSColor selectedControlColor] set]; + id obj = [[NSApp mainWindow] firstResponder]; + if ([self listView] == obj) { + [[NSColor selectedControlColor] set]; + } else { + [[NSColor secondarySelectedControlColor] set]; + } } else { [[NSColor whiteColor] set];