Переход в другое пространство (MacOSX) программно
Я создаю настраиваемое окно (NSWindow с NSBorderlessWindowMask). До сих пор я мог обрабатывать перетаскивание, изменение размера, cmd + щелчок и даже миниатюризацию с двойным щелчком, если это разрешено (см. здесь), поэтому мое окно как можно больше напоминает обычный NSWindow.
Однако, когда я перетаскиваю свое окно в угол экрана, пользователь будет ожидать, что оно переместит это окно в следующее пространство. (В случае, если в "SystemPreferences" включены "пробелы" > "Экспозиция и пробелы" > "Пробелы" > "Включить пробелы" )
Интересно, как я могу перейти на другое пространство программно и переместить мое окно там?
Ответы
Ответ 1
Наконец, я нашел решение.
Я не могу перейти к определенному пространству программно, но я могу заставить мое окно вести себя как другое non NSBorderlessWindowMask
, если выполнено [window setMovableByWindowBackground:YES]
. Это была конечная цель этого вопроса:)
Решение написано (с некоторыми деталями) здесь, потому что этот вопрос кажется старше (или, может быть, дубликат этого вопроса?)
Есть ли способ сделать обычную работу NSWindow с пространством.
Ответ 2
К сожалению, нет общедоступного API, который бы позволял вам это делать, но если вы хотите использовать Частный API, это возможно. Взгляните на CGSPrivate.h, и вы увидите, что вы можете сделать такой звонок:
CGSConnection connection = _CGSDefaultConnection();
CGSMoveWorkspaceWindowList(connection, &windowNumber, 1, newSpaceNumber);
Обратите внимание, что использование этого частного API приведет к отклонению вашего приложения в Apple Mac App Store.