ウィンドウトラッキングがだいたいできたのだが大きな問題が一つ。ボタンの載っているウィンドウがアクティブにならないとボタンが押せない。ボタンが 非アクティブでボタンが押せて、さらに非アクティブなままにしたい。現状はこれがうまくできていないので動作が怪しい。ボタンが載っているのは透明なカスタムパネル(NSPanel)で次のように作っている。
ToolWindow.m
- (id)init
{
NSRect frame = NSZeroRect;
self = [super initWithContentRect:frame
styleMask:NSBorderlessWindowMask|NSNonactivatingPanelMask|NSUtilityWindowMask
backing:NSBackingStoreBuffered
defer:NO];
if (self) {
[self setReleasedWhenClosed:YES];
[self setDisplaysWhenScreenProfileChanges:YES];
[self setBackgroundColor:[NSColor clearColor]];
[self setOpaque:NO];
[self setHasShadow:NO];
[self setLevel:NSScreenSaverWindowLevel+2];
[self setIgnoresMouseEvents:NO];
[self setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
}
return self;
}
さて、どうしたものか。以前作ったことのあるカレンダーはそういった動作になっているのだが、何故うまく行っているのだろう?(自問)。