From 5829c8b6820113264fde7b3cb15e61ceb3a12afd Mon Sep 17 00:00:00 2001 From: Ross Boucher Date: Fri, 24 Jul 2009 22:49:18 -0700 Subject: [PATCH] Fix an issue where removing all items from a CPPopUpButton caused an exception. --- AppKit/CPPopUpButton.j | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index acaecb870..47d7e2176 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -204,7 +204,7 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); */ - (CPMenuItem)selectedItem { - if (_selectedIndex < 0) + if (_selectedIndex < 0 || _selectedIndex > [self numberOfItems] - 1) return nil; return [_menu itemAtIndex:_selectedIndex]; @@ -550,7 +550,7 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); - (void)synchronizeTitleAndSelectedItem { var item = nil; - +debugger; if ([self pullsDown]) { var items = [_menu itemArray]; @@ -628,13 +628,15 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); { var numberOfItems = [self numberOfItems]; - if (numberOfItems <= _selectedIndex) + if (numberOfItems <= _selectedIndex && numberOfItems > 0) [self selectItemAtIndex:numberOfItems - 1]; + else + [self synchronizeTitleAndSelectedItem]; } - (void)mouseDown:(CPEvent)anEvent { - if (![self isEnabled]) + if (![self isEnabled] || ![self numberOfItems]) return; [self highlight:YES];