mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 02:04:20 +00:00
* Source/NSMenu.m (initWithTitle:): moved observer setup for
window notification to applicationDidFinishLaunching: method. (setTornOff:): setup oberver for window notifications if menu is torn off, uset observer otherwise. (applicationDidFinishLaunching:): setup oberver only for main menu. (windowDidChangeScreen:): do not process notifications from menu windows. Use -netstedSetFrameOrigin for frame change to take care of submenus repositioning.
This commit is contained in:
parent
c1c77cc7c0
commit
557486906a
1 changed files with 34 additions and 10 deletions
|
@ -712,15 +712,6 @@ static BOOL menuBarVisible = YES;
|
|||
name: NSEnqueuedMenuMoveName
|
||||
object: self];
|
||||
|
||||
[nc addObserver: self
|
||||
selector: @selector(windowDidChangeScreen:)
|
||||
name: NSWindowDidBecomeKeyNotification
|
||||
object: nil];
|
||||
[nc addObserver: self
|
||||
selector: @selector(windowDidChangeScreen:)
|
||||
name: NSWindowDidChangeScreenNotification
|
||||
object: nil];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
@ -1810,6 +1801,23 @@ static BOOL menuBarVisible = YES;
|
|||
[[supermenu menuRepresentation] setHighlightedItemIndex: -1];
|
||||
supermenu->_attachedMenu = nil;
|
||||
}
|
||||
[nc addObserver: self
|
||||
selector: @selector(windowDidChangeScreen:)
|
||||
name: NSWindowDidBecomeKeyNotification
|
||||
object: nil];
|
||||
[nc addObserver: self
|
||||
selector: @selector(windowDidChangeScreen:)
|
||||
name: NSWindowDidChangeScreenNotification
|
||||
object: nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
[nc removeObserver: self
|
||||
name: NSWindowDidBecomeKeyNotification
|
||||
object: nil];
|
||||
[nc removeObserver: self
|
||||
name: NSWindowDidChangeScreenNotification
|
||||
object: nil];
|
||||
}
|
||||
[_view update];
|
||||
}
|
||||
|
@ -1857,6 +1865,18 @@ static BOOL menuBarVisible = YES;
|
|||
[[GSTheme theme] updateAllWindowsWithMenu: [NSApp mainMenu]];
|
||||
}
|
||||
[self _showTornOffMenuIfAny: notification];
|
||||
|
||||
if ([NSApp mainMenu] == self)
|
||||
{
|
||||
[nc addObserver: self
|
||||
selector: @selector(windowDidChangeScreen:)
|
||||
name: NSWindowDidBecomeKeyNotification
|
||||
object: nil];
|
||||
[nc addObserver: self
|
||||
selector: @selector(windowDidChangeScreen:)
|
||||
name: NSWindowDidChangeScreenNotification
|
||||
object: nil];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) _showOnActivateApp: (NSNotification*)notification
|
||||
|
@ -1877,6 +1897,10 @@ static BOOL menuBarVisible = YES;
|
|||
NSRect newScreenFrame;
|
||||
CGFloat yOffset;
|
||||
|
||||
if ([window isKindOfClass: [NSMenuPanel class]]
|
||||
|| [window isKindOfClass: [NSPanel class]])
|
||||
return;
|
||||
|
||||
if (window == _aWindow
|
||||
|| [window isKeyWindow] == NO
|
||||
|| [_aWindow screen] == [window screen]
|
||||
|
@ -1897,7 +1921,7 @@ static BOOL menuBarVisible = YES;
|
|||
frame.origin.y = NSMaxY(newScreenFrame) - yOffset - frame.size.height;
|
||||
|
||||
// setFrame: changes _screen value.
|
||||
[_aWindow setFrame: frame display: NO];
|
||||
[self nestedSetFrameOrigin: frame.origin];
|
||||
}
|
||||
|
||||
- (BOOL) isTransient
|
||||
|
|
Loading…
Reference in a new issue