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.
to prevent `_screen` reassign - it will be reassigned in
sendEvent: (GSAppKitWindowMoved event) after call to [self screen].
(setFrameFromString:): removed unused code because _screenForFrame:
never returns `nil`. Do not reassign `_screen` here.
`screen` method. Placing posting notification into `screen` method
is unreliable/dangerous - notification observer may call [NSWindow screen]
which results in notification posting loop.
send WindowDidChangeScreen notification if window was moved to other
screen.
* Source/NSScreen.m (mainScreen): returns screen of main menu if no
key window exists. With this implementation default screen (screen at
index 0 in screens array) should never be returned.
* Source/NSMenu.m (initWithTitle:): observe WindowDidBecomeKey and
WindowDidChangeScreen notifications.
(windowDidChangeScreen:): new method to handle observed notification
added above. Moves menu to screen of key window for both cases: when
key window moved to or activated on different screen.
added observer of NSApplicationDidChangeScreenParametersNotification.
(applicationDidChangeScreenParameters:): callback for added notification -
updates window position, set new screen object and saves frame if
autosave name exists.
* Source/NSScreen.m (initialize): remove observer of
NSApplicationDidChangeScreenParametersNotification - NSScreen shouldn't
do it. Backend explicitely calls -resetScreens before posting notification.
(_initWithScreenNumber:): ditto.
(_resetScreens): removed.
(deviceDescription): removed duplicated addition of NSDeviceSize object.
* Source/NSApplication.m (finishLaunching): remove observer of
NSApplicationDidChangeScreenParametersNotification.
NSApplicationDidChangeScreenParametersNotification.
(frame): use `_frame` ivar since libs-back recreates screens list.
(dealloc): remove observer.
(applicationDidChangeScreenParameters:): update _frame and _depth
ivars for bad behaving objects which retain NSScreen and not observing
screen parameters changes.