onMouseDragイベント中に何がドラッグされているかを判断する方法はありますか?具体的には、ウィンドウがドラッグされているかどうかを知りたいのですが。
私は次のことを試しました。アクセシビリティAPI:アクティブなウィンドウの初期位置を保存し、ドラッグ中にウィンドウの位置を再度照会して、値を比較します。この方法の問題は、Accessibility APIが、マウスの移動を停止するまで(マウスの主ボタンを押したまま)、ウィンドウの位置を更新しないことです。少し停止した後、マウスが再びドラッグを開始すると、位置が更新されます。
NSWindowDelegateをアクティブウィンドウにアタッチする:これはかなり新しいので、フォーカスされた/アクティブなウィンドウのNSWindowを見つける方法がわかりません。
前もって感謝します!
更新:Accessibility APIを使用してアクティブなウィンドウを取得し、AXObserverRefをアタッチしてkAXMovedNotificationを取得しました。CFRunLoopAddSourceを使用して、このオブザーバーを実行ループに追加しました。その結果、通知へのコールバックがキューに入れられ、ウィンドウのドラッグを停止した場合にのみ、通知への複数の呼び出しが発生します。このようにキューに入れられずにコールバックをすぐに起動して、ドラッグが停止したときではなく、ウィンドウがドラッグされているときにコードを実行できるようにする方法はありますか?