mouseDown selections fixes

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16414 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Sergii Stoian 2003-04-10 15:05:50 +00:00
parent 063710aa5f
commit 4fb42475cb

View file

@ -301,16 +301,25 @@ this to return nil to indicate that we have no context menu.
- (BOOL) performKeyEquivalent: (NSEvent*)theEvent - (BOOL) performKeyEquivalent: (NSEvent*)theEvent
{ {
NSMenu *m = [self menu]; NSMenu *m = [self menu];
NSMenuItem *oldSelectedItem = [_cell selectedItem];
if (m != nil) if (m != nil)
{ {
if ([m performKeyEquivalent: theEvent]) if ([m performKeyEquivalent: theEvent])
{ {
/* If the key equivalent was performed, redisplay ourselves // pullsDown does not change selected item
* to account for potential changes in the selected item. if ([_cell pullsDown])
*/ {
[self setNeedsDisplay: YES]; [self selectItem: oldSelectedItem];
}
else
{
/* If the key equivalent was performed, redisplay ourselves
* to account for potential changes in the selected item.
*/
[self setNeedsDisplay: YES];
}
return YES; return YES;
} }
} }
@ -323,7 +332,7 @@ this to return nil to indicate that we have no context menu.
NSWindow *menuWindow = [mr window]; NSWindow *menuWindow = [mr window];
NSEvent *e; NSEvent *e;
NSPoint p; NSPoint p;
int lastSelectedItem = [mr highlightedItemIndex]; int lastSelectedItem = [_cell indexOfSelectedItem];
int highlightedItemIndex; int highlightedItemIndex;
if ([self isEnabled] == NO) if ([self isEnabled] == NO)
@ -350,13 +359,17 @@ this to return nil to indicate that we have no context menu.
[NSApp sendEvent: e]; [NSApp sendEvent: e];
// Selection remains unchanged if selected item is disabled // Selection remains unchanged if selected item is disabled
highlightedItemIndex = [mr highlightedItemIndex]; // or mouse left menu.
if (highlightedItemIndex >= 0) highlightedItemIndex = [_cell indexOfSelectedItem];
if ((highlightedItemIndex >= 0
&& [[self itemAtIndex: highlightedItemIndex] isEnabled] == NO)
|| highlightedItemIndex == lastSelectedItem)
{ {
if ([[self itemAtIndex: highlightedItemIndex] isEnabled] == NO) [mr setHighlightedItemIndex: lastSelectedItem];
{ }
[mr setHighlightedItemIndex: lastSelectedItem]; else
} {
[mr setHighlightedItemIndex: highlightedItemIndex];
} }
// Dismiss the popUp // Dismiss the popUp