ページ

2010年5月4日火曜日

SimpleCap - Viewer改修:常にトップ表示をやめるオプション追加

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

こんな感じ。

チェックを外すと他のウィンドウの下に隠れるようになる。


Simple Viewer のウィンドウは NSPanel を使っているので、この制御には -[NSPanel setFloatinPanel:] が使える。

NSPanel Class Reference - setFloatinPanel:


なおメニューから Simple Viewer を表示させる場合、その時だけ他のウィンドウの上に表示させたい。-[NSWindow makeKeyAndOrderFront:] と -[NSApplication activateIgnoringOtherApps:] を呼び出しているが、setFloatingPanel:NO のケースでは他のウィンドウの下に隠れてしまう場合がある。そこで一時的に setFloatingPanel:YES で最前面に表示するようにしてみたところうまくいった。


BOOL is_floating = [[UserDefaults valueForKey:UDKEY_VIEWER_ALWAYS_ON_TOP] boolValue];
[self setFloatingPanel:YES];
[self makeKeyAndOrderFront:nil];
[NSApp activateIgnoringOtherApps:YES];
[self setFloatingPanel:is_floating];