Exposé, Mission Control에서 NSWindow의 동작 지정


setCollectionBehavior: 메소드를 사용하면, Exposé, Spaces, Mission Control, 풀 스크린시의 윈도우의 동작을 비트 연산으로 지정할 수 있다.
한편으로 setCanBeVisibleOnAllSpaces: 라고 하는 메소드도 존재했지만, 이쪽은 10.5로 비추천 취급이 되고 있다.

NSWindowCollectionBehavior



NSWindowCollectionBehavior
NSWindowCollectionBehaviorDefault
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 .

좋은 웹페이지 즐겨찾기