1

私の OS X アプリでは、別の画面間でドラッグできるようにする必要があるカスタム ウィンドウ項目に取り組んでいます。ウィンドウにはタイトル バーがないため、ドラッグ機能を手動で実装する必要がありました。

ただし、システム環境設定で「ディスプレイに別のスペースがある」オプションが選択されていると、問題が発生します。

選択されていない場合は、ウィンドウをモニター間で問題なく移動できます。選択されている場合、ウィンドウの下部が選択されていない限り、ウィンドウを最初のモニターから2番目のモニターに移動できません。

私の質問:

1) ユーザーが「Displays Have Separate Spaces」を選択したかどうかを検出することは可能ですか?

2) その場合、ユーザーがマウスをクリックしたウィンドウ上の場所に関係なく、ウィンドウを正常にドラッグするにはどうすればよいですか?

mouseDragged以下は、私のメソッドのコードの一部です。

// Moving
NSRect screenVisibleFrame = [[NSScreen mainScreen] visibleFrame];
NSPoint newOrigin = windowFrame.origin;

// Get the mouse location in window coordinates.

// Update the origin with the difference between the new mouse location and the old mouse location.
newOrigin.x += (currentLocation.x - self.initialPoint.x);
newOrigin.y += (currentLocation.y - self.initialPoint.y);

// Don't let window get dragged up under the menu bar (but let it drag ABOVE it onto other screens...)
if ((newOrigin.y + windowFrame.size.height) > (screenVisibleFrame.origin.y + screenVisibleFrame.size.height) && newOrigin.y + windowFrame.size.height <= [[NSScreen mainScreen] frame].origin.y + [[NSScreen mainScreen] frame].size.height) {
    newOrigin.y = screenVisibleFrame.origin.y + (screenVisibleFrame.size.height - windowFrame.size.height);
}

// Move the window to the new location
[self setFrameOrigin:newOrigin];
self.isManuallyPositioned = TRUE;
4

0 に答える 0