cocoa - NSWindow con NSWindowCollectionBehaviorStationary es visible en el Tablero. ¿Es esto un error?
spaces apple-expose (2)
Estoy intentando que mi NSWindow
:
- Ser visible en todos los espacios
- Sea visible al mostrar el escritorio (presionando
F11
) - No ser visible en Mission Control / Expose
Lo siguiente hace exactamente eso, pero con un efecto secundario:
[self setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces
| NSWindowCollectionBehaviorStationary ];
Al cambiar al Tablero en Mac OS X Lion, la ventana permanece visible solo con los elementos del Tablero por un segundo, luego se oculta.
¿Es este comportamiento esperado o un error? A los usuarios de mi aplicación les resulta confuso ver la ventana en el Tablero antes de que desaparezcan. Hubiera esperado que solo se mostraran en Spaces y no en el Tablero.
Miré http://cocoadev.com/wiki/DontExposeMe buscando una solución alternativa
nada realmente funcionó excepto.
self.window.level = kCGDesktopWindowLevel;
ahora tal vez DETECTAR cambia para exponer y configurar eso entonces :) ...
ver ¿Cómo se puede detectar el control de la misión o el conmutador Comando-Pestaña reemplazando el programa de uno en OS X? para eso :) tal vez una respuesta saldrá
Pude reproducir este comportamiento y creo que es solo un poco de animación defectuosa del lado de Apple.
Solo para poder explicar esto mejor, crear un nuevo proyecto, agregar estas dos líneas a applicationDidFinishLaunching:
y ejecutarlo.
[self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary ];
[self.window setHidesOnDeactivate: YES];
(self.window es la ventana que se crea automáticamente al crear un nuevo proyecto. En realidad, no importa aquí de todos modos, siempre que sea una ventana que aparezca en la pantalla)
Ahora observe este comportamiento: cuando cambia de un espacio donde puede ver su ventana a otra en la que hay otras ventanas de otras aplicaciones (y se supone que su ventana desaparecerá ya que su aplicación se desactivará), su ventana solo desaparece cuando el animación termina. Entonces, ¿qué está pasando?
Esto es lo que creo que ocurre: cuando se cambia de un espacio a otro, las ventanas que se muestran en todos los espacios solo reaccionan al cambio después de la animación , de ahí la breve apariencia de su ventana en el tablero de instrumentos. Creo que notará que desaparece exactamente cuando termina la animación de diapositivas.
Entonces, desafortunadamente, no sé cómo solucionar su problema. Simplemente parece suceder de esta manera.