On Dec 11, 2014, at 3:31 AM, Bill Cheeseman <wjcheese...@gmail.com> wrote:
>> On Dec 10, 2014, at 3:48 PM, Ken Thomases <k...@codeweavers.com> wrote: >> >> By the way, why is it important to understand why the behavior has changed? >> It has always been the case that that notification could come at any time, >> so your code has to cope in any case. > > When my application launches for the first time, it places a floating status > information window in its default location near the bottom-right corner of > the main screen. After that, the user can move it to another location if > desired, and at every relaunch thereafter it will appear in the new location. > But, if the user changes screen resolution or rearranges multiple monitors at > any time, the window automatically moves back to its default location on the > new main screen in response to the delegate method. I made the design > decision to force this application's window to reside by default in the > lower-right corner, instead of being moved automatically by the system to the > top-left corner as windows normally are in response to screen changes. > > The problem is that the delegate method is being triggered now at every > single launch of my application, but the screen resolution and monitor > arrangement have not changed. The user's ability to choose a new location for > the window has been overwhelmed by this inappropriate triggering of the > delegate method at every launch. (And the move back to the default location > happens after the window first appears in the user's desired location, so at > every launch we see the move back to the default location, although I can > easily fix this cosmetic issue.) This was never a good strategy. That notification does not necessarily only occur when the user changes screen resolution or rearranges the displays. As I mentioned, it happens when the Dock changes size or if the user toggles its auto-hide behavior. It could happen when a system with dual GPUs switches between them. Etc. You should move the window minimally to keep it within the visible frame of its screen. Or you might use a heuristic where you identify the closest edges and maintain the distance from those edges. In most cases, this will mean not moving it at all, which is good. Regards, Ken _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com