Сложность перемещения окон, если в OS X выбран "Дисплеи с отдельными пробелами"

В моем приложении для OS X я работаю над пользовательским элементом окна, который нужно перетаскивать между отдельными экранами. Поскольку окно не имеет строки заголовка, возможности перетаскивания должны были быть реализованы вручную.

Однако я столкнулся с проблемой, если в Системных настройках выбран параметр "Дисплеи имеют отдельные пробелы".

Если он не выбран, то я могу без проблем перемещать окно между мониторами. Если он выбран, то я не могу переместить окно с первого монитора на второй, если не выбрана нижняя часть окна.

Мои вопросы:

1) Можно ли определить, выбран ли пользователем "Дисплеи с отдельными пробелами"?

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;

0 ответов

Другие вопросы по тегам