Ho bisogno di creare una "finestra di sovrapposizione a schermo intero" in un programma per OS X. Precisamente, la finestra deve sempre essere in cima a tutte le altre finestre, inclusa la parte superiore della barra dei menu in spazi non ingranditi e in cima alle finestre ingrandite nei propri spazi e in cima durante Exposé. Non deve partecipare alle animazioni "cambia spazio"; cioè, la sua posizione deve essere fissa rispetto allo schermo fisico in ogni momento. (La finestra sarà semitrasparente e ignorerà gli eventi del mouse, ma so già come farlo.)Come posso creare una finestra di Cocoa che appare sopra le finestre a schermo intero?
Come posso ottenere questo comportamento di "finestra sovrapposta"? Ho avuto fino a questo punto:
- devo impostare il
window.level
-CGWindowLevelKey(kCGMaximumWindowLevelKey)
in modo che sia sempre in primo piano rispetto alle altre finestre nello stesso spazio. - Devo impostare
NSWindowCollectionBehaviorStationary
in modo che la finestra rimanga in posizione durante Exposé.
Quello che non so è come mantenere questo comportamento quando si cambia spazio. Ho pensato di impostare NSWindowCollectionBehaviorCanJoinAllSpaces
, ma il suo comportamento presenta due problemi:
- La finestra non viene visualizzata sopra altre finestre a schermo intero.
- La finestra è duplicata su ogni spazio, piuttosto che stare nello stesso posto sopra tutti gli spazi. Questo è importante a causa dell'animazione dello spazio-switch.
I have heard that an NSPanel
would help me, ma non sono riuscito a farlo funzionare.
In breve, È possibile che una finestra compaia in una finestra a schermo intero in OS X? Puoi fornire un esempio breve e completo?
Non credo che tu abbia trovato una risposta per questo? Ho anche bisogno di visualizzare una finestra in cima alla finestra a schermo intero di un'altra app. –
@MarkBessey Ho effettivamente trovato una soluzione, usando 'NSPanel'. Cercherò di rispondere alla domanda con qualche codice di esempio quando ho un momento – jameshfisher
@jameshfisher Puoi condividere la tua soluzione? Ho un problema simile e ho provato quello che hai menzionato nella descrizione, ma sfortunatamente non funzionano. –