親ウィンドウが移動された結果ではなく、子ウィンドウがユーザーによって直接移動されたかどうかを確認するにはどうすればよいですか?
NSWindowDidMoveNotificationどちらの場合も通知が届きます。
ハンドラーで親フレームの原点をテストし、NSWindowWillMoveNotificationハンドラーで原点と比較できると思いましNSWindowDidMoveNotificationたが、もっと良い方法はありますか?
これが私の現在の解決策です:
- (void)windowWillMove:(NSNotification *)notification
{
NSWindow *window = [notification object];
_parentOrigin = [[window parentWindow] frame].origin;
}
- (void)windowDidMove:(NSNotification *)notification
{
NSWindow *window = [notification object];
NSPoint newParentOrigin = [[window parentWindow] frame].origin;
if (_parentOrigin.x == newParentOrigin.x &&
_parentOrigin.y == newParentOrigin.y)
{
// The parent hasn't moved, therefore the user moved the window directly...
[window doThing];
}
}