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