ウィンドウがアクティブなスペース上にあるか判定方法

Spacesでスペースを切り替えた時に、ウィンドウが表示中のSpaceにあるか判定したい場合がある。
この判定には、NSWindowのisOnActiveSpaceを使用する。

isOnActiveSpaceは、Mac OS X 10.6から追加されているため、10.5では使えない。
Mac OS X 10.5では、非公開関数で判定することになる。

サンプルコード
// Mac OS X 10.6
if([self.window isOnActiveSpace]) {
	NSLog(@"[10.6]Active Space");
}


// Mac OS X 10.5
int windowWorkspace;
int currentWorkspace;
CGSGetWindowWorkspace(_CGSDefaultConnection(), [self.window windowNumber],
					  &windowWorkspace);
CGSGetWorkspace(_CGSDefaultConnection(), &currentWorkspace);
if(currentWorkspace == windowWorkspace) {
	NSLog(@"[10.5]Active Space");
}

アトトック Labo