2011-02-20 8 views
5

- [NSWindow setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces]を使用してウィンドウを作成しました。しかし、私はスペースを切り替えると、ウィンドウがスペースを(期待通りに)切り替えるが、私のウィンドウはそのスペース内の他のすべてのウィンドウの後ろに移動する。私のアプリはアクティブだがそのウィンドウは他のすべてのアプリケーションのウィンドウの下にあるので、これは特に悪いことです。レベルをNSFloatingWindowLevelに変更しようとしましたが、これを上に保ちますが、スペースを切り替えるときにキーステータス(フォーカス)が失われます。スペースを切り替えるときにウィンドウを上に維持する

コレクションの動作にNSWindowCollectionBehaviorMoveToActiveSpaceを試しましたが、それは間違いなく私が探しているものではありません。

希望がありますか?私はSpacesに関連する他のAPIはほとんどないことを知っています。

答えて

2

スペースが痛いです。私WindowControllerクラスで次に

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(activeSpaceDidChange:) name:NSWorkspaceActiveSpaceDidChangeNotification object:nil]; 

::私のソリューションはそうのような変更の通知を登録することだった私が思い付いたまで(NSBorderlessWindowMaskで作成)ボーダレスWindows用

- (void) activeSpaceDidChange:(NSNotification *)aNotification { 
    if ([NSApp isActive]) [[self window] orderFront:self]; 
} 
0

、私は私の頭を打ちましたフランシスに以下の変更:

- (void) activeSpaceDidChange:(NSNotification *)aNotification { 

    if ([NSApp isActive]) 
    { 
     NSRect windowRect = [[self window] frame]; 
     [[self window] setStyleMask:NSTitledWindowMask]; 
     [[self window] setStyleMask:NSBorderlessWindowMask]; 
     [[self window] setFrame:windowRect display:YES]; 
     [[NSApplication sharedApplication] activateIgnoringOtherApps : YES]; 
    } 
} 

私はボーダレス窓が運動量をだますために考えに私を導いた問題を持っていることを示す他の人を見ました縁なしの窓としてそれを見ていないようにリリー。最初に、スタイルマスクを「タイトル付き」に設定し、その後に「activateIgnoringOtherApps」を設定して、「論理的な解決策」と思われる「フチ無し」スタイルを設定しました。しかし、それが機能するために最低限の解決策が必要であるかどうかを見るために、私は上記の作業を見ることになりました。誰かがこれがうまくいっていることを記入することができれば幸いです。

関連する問題