2011-06-06 14 views
9

Estoy haciendo una ventana personalizada (NSWindow con NSBorderlessWindowMask) Hasta ahora he podido manejar arrastrar, cambiar el tamaño, cmd + clic e incluso miniaturizar con doble clic si está permitido (ver here) entonces mi ventana se parece tanto como sea posible a una NSWindow normal.Cambiar a otro espacio (MacOSX) programáticamente

Sin embargo, cuando arrastro mi ventana a la esquina de la pantalla, el usuario esperará mover esa ventana al siguiente espacio. (En caso de tener Espacios habilitados en "Preferencias del Sistema"> "Exponer y Espacios"> "Espacios"> "Habilitar Espacios")

Me pregunto cómo puedo cambiar a otro espacio programáticamente y mover mi ventana allí?

Respuesta

1

Finalmente encontré una solución. No puedo cambiar a un cierto espacio programáticamente pero puedo hacer que mi ventana se comporte como otra no NSBorderlessWindowMask si se hace [window setMovableByWindowBackground:YES]. Ese fue el objetivo final de esta pregunta :)

La solución está escrito (con cierto detalle) aquí porque esa pregunta parece ser mayor (o tal vez un duplicado de esta pregunta?)

Is there a way to make a custom NSWindow work with Spaces

4

Lamentablemente no hay API pública que te permita esto, pero si estás dispuesto a utilizar la API privada, es posible. Echar un vistazo a CGSPrivate.h y verá usted puede hacer una llamada como ésta:

CGSConnection connection = _CGSDefaultConnection(); 
CGSMoveWorkspaceWindowList(connection, &windowNumber, 1, newSpaceNumber); 

Tenga en cuenta que el uso de esta API privada hará que su aplicación sea rechazada de Apple Mac App Store sin embargo.

Cuestiones relacionadas