Exposé, Mission Control에서 NSWindow의 동작 지정
4079 단어 MacOSXObjective-C코코아
setCollectionBehavior:
메소드를 사용하면, Exposé, Spaces, Mission Control, 풀 스크린시의 윈도우의 동작을 비트 연산으로 지정할 수 있다.한편으로
setCanBeVisibleOnAllSpaces:
라고 하는 메소드도 존재했지만, 이쪽은 10.5로 비추천 취급이 되고 있다.NSWindowCollectionBehavior
NSWindowCollectionBehaviorNSWindowCollectionBehaviorDefault
NSWindowCollectionBehaviorCanJoinAllSpaces
NSWindowCollectionBehaviorMoveToActiveSpace
NSWindowCollectionBehaviorManaged
NSWindowCollectionBehaviorTransient
NSWindowCollectionBehaviorStationary
NSWindowCollectionBehaviorParticipatesInCycle
NSWindowCollectionBehaviorIgnoresCycle
NSWindowCollectionBehaviorFullScreenPrimary
NSWindowCollectionBehaviorFullScreenAuxiliary
NSWindowCollectionBehaviorFullScreenAllowsTiling
NSWindowCollectionBehaviorFullScreenDisallowsTiling
10.5 이후
NSWindowCollectionBehaviorDefault
창이 하나의 공간과 관련이 있습니다. 윈도우(어플리케이션)를 선택하면 그 윈도우가 관련지을 수 있고 있는 스페이스로 이동한다.
일반적인 윈도우의 표준 동작.
NSWindowCollectionBehaviorCanJoinAllSpaces
창이 모든 공간과 관련된다. 공간을 전환해도 창이 표시됩니다.NSWindowCollectionBehaviorMoveToActiveSpace
와 동시에 사용할 수 없다.
NSWindowCollectionBehaviorMoveToActiveSpace
윈도우(앱)를 선택했을 때, 그 윈도우가 관련지을 수 있었던 스페이스로 이동하지 않게 한다. 대신 창이 현재 공간으로 이동합니다.NSWindowCollectionBehaviorCanJoinAllSpaces
와 동시에 사용할 수 없다.
10.6 이상
NSWindowCollectionBehaviorManaged
윈도우가 Exposé에 대응한다.
NSNormalWindowLevel에서는 이것이 표준.
NSWindowCollectionBehaviorTransient
Exposé 때 창이 숨겨집니다. 모달 윈도우나 유틸리티 윈도우(패널)에서 자주 있는 행동.
NSNormalWindowLevel이 아닐 때 이것이 표준입니다.
NSWindowCollectionBehaviorStationary
윈도우는 Dock이나 데스크탑처럼 고정되어 Exposé의 영향을 받지 않게 된다. 타이틀 바를 가지고 있으면 드래그에 의한 이동은 가능.
Exposé시에도 고정으로 표시된다.
NSWindowCollectionBehaviorParticipatesInCycle
윈도우는 “윈도우 사이클”의 일부가 된다. 구체적으로는, command
+ F1
에 의한 윈도우 순회 기능으로 선택 대상이 된다.
NSWindowCollectionBehaviorIgnoresCycle
윈도우는 "윈도우 사이클"의 대상에서 제외된다. 구체적으로는, command
+ F1
에 의한 윈도우 순회 기능으로 선택되지 않게 된다.
10.7 이상
NSWindowCollectionBehaviorFullScreenPrimary
풀 스크린용 버튼이 타이틀 바 우단에 붙어(오래된 OS X), 풀 스크린이 될 수 있게 된다.
NSWindowCollectionBehaviorFullScreenAuxiliary
전체 화면 윈도우와 같은 공간에 표시할 수 있다. 10.11이면 전체 화면이 비활성화되고 줌 버튼이 기본값입니다.
10.11 이후
NSWindowCollectionBehaviorFullScreenAllowsTiling
전체 화면의 분할 표시에 대응한다.
NSWindowCollectionBehaviorFullScreenDisallowsTiling
전체 화면이지만 분할 표시에는 대응하지 않는다.
바탕 화면에 붙어있는 창의 예
[window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorTransient | NSWindowCollectionBehaviorIgnoresCycle];
[window setLevel:kCGDesktopWindowLevel];
이제 공간의 영향을 받지 않고 Exposé(Mission Control)에도 나타나지 않는 윈도우를 만들 수 있다.
덧붙여 윈도우 레벨을 kCGDesktopWindowLevel
등으로 해 두지 않으면 NSWindowCollectionBehaviorTransient
.
Reference
이 문제에 관하여(Exposé, Mission Control에서 NSWindow의 동작 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/usagimaru/items/e77ac0426f070e357811
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
NSWindowCollectionBehaviorDefault
NSWindowCollectionBehaviorCanJoinAllSpaces
NSWindowCollectionBehaviorMoveToActiveSpace
NSWindowCollectionBehaviorManaged
NSWindowCollectionBehaviorTransient
NSWindowCollectionBehaviorStationary
NSWindowCollectionBehaviorParticipatesInCycle
NSWindowCollectionBehaviorIgnoresCycle
NSWindowCollectionBehaviorFullScreenPrimary
NSWindowCollectionBehaviorFullScreenAuxiliary
NSWindowCollectionBehaviorFullScreenAllowsTiling
NSWindowCollectionBehaviorFullScreenDisallowsTiling
[window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorTransient | NSWindowCollectionBehaviorIgnoresCycle];
[window setLevel:kCGDesktopWindowLevel];
이제 공간의 영향을 받지 않고 Exposé(Mission Control)에도 나타나지 않는 윈도우를 만들 수 있다.
덧붙여 윈도우 레벨을
kCGDesktopWindowLevel
등으로 해 두지 않으면 NSWindowCollectionBehaviorTransient
.
Reference
이 문제에 관하여(Exposé, Mission Control에서 NSWindow의 동작 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/usagimaru/items/e77ac0426f070e357811텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)