Lessico IT › Infrastruttura › Prevenzione del furto del focus

Prevenzione del furto del focus

Infrastruttura Svenska → Aggiornato: 2026-10-09

Le regole con cui il window manager impedisce a una finestra appena aperta di rubare il focus della tastiera mentre si scrive in un'altra, usando i timestamp per capire se a volerla in primo piano fosse l'utente o il programma.

Il problema è noto a chiunque abbia digitato una password nella casella sbagliata: un programma parte lentamente, compare a metà frase e si prende il resto della frase e il tasto Invio, che ha l'abitudine di confermare la finestra di dialogo. Windows aggiunse restrizioni a SetForegroundWindow già con Windows 98 e 2000, così che solo il processo in primo piano, o uno da esso delegato, possa prendere il primo piano; gli altri devono accontentarsi di un pulsante lampeggiante nella barra delle applicazioni tramite FlashWindowEx. macOS, fin dall'inizio, lasciava ai programmi chiedere attenzione rimbalzando nel Dock invece di balzare in avanti.

Sotto X11 il focus è stato a lungo qualcosa che qualunque client poteva prendersi con una sola chiamata. KWin introdusse livelli di «focus stealing prevention» in KDE 3.2 nel 2004, e il meccanismo sottostante fu standardizzato in EWMH 1.3 l'anno dopo: la proprietà _NET_WM_USER_TIME, in cui un programma marca la propria finestra con l'ora del server dell'ultima pressione di tasto o clic dell'utente. Se una nuova finestra compare con un timestamp più vecchio dell'ultima interazione nella finestra attiva, l'utente nel frattempo ha evidentemente fatto altro, e il window manager la apre sullo sfondo con _NET_WM_STATE_DEMANDS_ATTENTION invece che col focus. La notifica di avvio trasmette il timestamp del clic sul lanciatore, così che un avvio lento conti comunque come voluto, e la richiesta _NET_ACTIVE_WINDOW porta un campo sorgente che distingue l'insistenza di un programma da un clic nella barra. Tutto poggia sull'onestà dei timestamp, motivo per cui certe vecchie applicazioni Motif continuano a saltare in primo piano quando gli va.

← Torna al lessico