El mini reproductor de iTunes (para dar solo un ejemplo) admite el clic donde la aplicación no se lleva al frente cuando se utilizan los controles de reproducción/pausa y volumen.Botones de clic y sin abrir la ventana
¿Cómo se hace esto?
He estado buscando a través de documentación de Apple y tengo un poco para seguir adelante, en Cocoa Event-Handling Guide, Event Dispatch afirma:
Algunos eventos, muchos de los cuales son definidos por el Kit de Aplicación (tipo NSAppKitDefined), que hacer con acciones controladas por una ventana o el objeto de la aplicación en sí. Ejemplos de estos eventos son aquellos relacionados con activar, desactivar, ocultar y mostrar la aplicación. NSApp filtra estos eventos al principio de su rutina de envío y los maneja por sí mismo.
Por lo tanto, desde mi comprensión limitada (How an Event Enters a Cocoa, Application) subclases NSApplication y primordial - (void)sendEvent:(NSEvent *)theEvent
deberían atrapar cada evento ratón y el teclado, pero aún así, la ventana se eleva al hacer clic. Entonces, o bien la ventana se levanta antes de que NSA vea el evento o me falta algo más.
He visto el Demystifying NSApplication by recreating it de Matt Gallagher, desafortunadamente Matt no cubrió la cola de eventos, así que aparte de eso, estoy perplejo.
Cualquier ayuda sería apreciada, gracias.
Editado para agregar: Encontrado un puesto en Lloyd's Lounge en la que habla sobre el mismo problema y enlaces a un puesto en CocoaBuilder, capture first right mouse down. Actualmente estoy probando el código proporcionado allí, después de algunos cambios y reactivación del NSLog para [el tipo de evento], la actividad del botón izquierdo del mouse está siendo atrapada.
Ahora, al hacer clic con el botón izquierdo en la ventana para traerlo hacia delante se produce una secuencia de tipos de eventos, 13, 1, 13
, estos son NSAppKitDefined, NSLeftMouseDown y NSAppKitDefined nuevamente. ¿Puedo filtrar estos o encontrar dónde van?
acceptsFirstMouse: and acceptsFirstResponder: no tiene ningún efecto, fue (y debería haber notado) mi primer intento de este problema. Gracias sin embargo. –