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

@ -302,15 +302,24 @@ 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])
{
// pullsDown does not change selected item
if ([_cell pullsDown])
{
[self selectItem: oldSelectedItem];
}
else
{ {
/* If the key equivalent was performed, redisplay ourselves /* If the key equivalent was performed, redisplay ourselves
* to account for potential changes in the selected item. * to account for potential changes in the selected item.
*/ */
[self setNeedsDisplay: YES]; [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
if ([[self itemAtIndex: highlightedItemIndex] isEnabled] == NO) && [[self itemAtIndex: highlightedItemIndex] isEnabled] == NO)
|| highlightedItemIndex == lastSelectedItem)
{ {
[mr setHighlightedItemIndex: lastSelectedItem]; [mr setHighlightedItemIndex: lastSelectedItem];
} }
else
{
[mr setHighlightedItemIndex: highlightedItemIndex];
} }
// Dismiss the popUp // Dismiss the popUp