Focus (GUI)
Focus (z ang., skupienie) – stan widgetu (elementu graficznego interfejsu użytkownika), w którym może w danym momencie znajdować się tylko jeden widget w aktywnym oknie. Wszelkie zdarzenia związane z naciskaniem klawiszy przez użytkownika zostaną skierowane właśnie do tego widgetu, pod warunkiem jednak, że nie zostaną wcześniej przechwycone. Zdarzenia z klawiatury bowiem w pierwszej kolejności odnotowuje system okienkowy (lub menadżer okien), potem dopiero ten przekazuje go aplikacji. Aplikacja następnie może, ale nie musi przekazać takie zdarzenie do widgetu, który jest nim zainteresowany, i nie robi tego w przypadku tych kombinacji klawiszy, które obsługuje sama.
Zazwyczaj w oknach można przenosić skupienie z poprzedniego widgetu na następny za pomocą klawisza Tab ↹ (i ⇧ Shift+Tab ↹). Twórca okna decyduje o tym, jakie są „kolejne numery” widgetów w oknie i związana z tym kolejność przenoszenia skupienia; może również uniemożliwić takie zachowanie lub wyłączyć niektóre widgety z możliwości otrzymywania w ten sposób skupienia. Każdy widget również może otrzymać skupienie w wyniku kliknięcia go myszą, ale zarówno większość z nich wykonuje jeszcze dodatkowe funkcje w reakcji na kliknięcie, jak też nie każdy widget ma prawo otrzymać skupienie.
Focus jest zazwyczaj odpowiednio odwzorowany w wyglądzie widgetu, np. przycisk dostaje dodatkowe obramowanie, w polu edycyjnym pojawia się migający kursor. Na załączonej ilustracji przedstawiony jest jako przykład widget typu przycisk w dwóch postaciach: bez skupienia i ze skupieniem.
Wiele widgetów jest zainteresowane kwestią posiadania i nieposiadania skupienia, w szczególności takie, których najważniejsze funkcje są wykonywane wyłącznie z klawiatury (np. pole edycyjne). Każdy widget również generuje zdarzenie w przypadku odpowiednio otrzymania i utraty skupienia (ang. set focus, kill focus).