Воровство фокуса
Есть такая проблема в интерфейсах — воровство фокуса. Это когда какое-то окно вдруг решает, что оно важнее, и берёт фокус на себя.
Например, вы пишете письмо, а тут соседнему приложению приспичило обновиться, и оно про это спрашивает. Вы как раз нажали Энтер, чтобы перейти на следующую строку в письме — и вот вы случайно согласились обновиться прямо сейчас. Или Эпл вдруг ни с того ни с сего забыл ваш пароль от Айклауда и просит ввести его заново, пока вы пытались ответить на сообщение, и в итоге половина вашего ответа оказалась в поле ввода пароля.
Некоторые программы любят воровать фокус в момент, когда они запустились, им кажется это уместным. Например, я ткнул в Фотошоп, а пока он прыгает в Доке, пошёл кому-то что-то написать. Через три секунды он загружается и ворует фокус! Кто просил? Я же сам перешёл в другую программу, почему ты решил вдруг, что ты важнее?
Хуже всех в этом плане Зум: даже на самом последнем М2-про он запускается секунд десять и за это время ворует фокус несколько раз! Это при том, что сам сценарий использования Зума сопряжён с тем, что тебе надо пойти в какую-то другую программу, чтобы отправить или найти ссылку на встречу. То есть он активно сопротивляется тому, чтобы ты мог им воспользоваться.
В операционной системе должна быть фича, которая запрещает программам самовольно перехватывать фокус вообще. Вот прям никаких причин быть не может, чтобы программа вместо меня решила, чем мне сейчас заниматься. Сайтам не разрешают самим выпрыгивать на первый план (пока что), вот и приложения могли бы поскромнее себя вести.
Ещё про неожиданную смену режима:
Меня относительно недавно такое поведение окончательно задолбало, и я поизучал этот вопрос в интернете. Выяснилось, что как будто бы проблема немного обратная: это операционная система (макос) автоматически переключает фокус на каждое новое открывшееся окно, а не сами приложения просят об этом. Более того, у приложений нет никакой возможности контролировать это поведение. Они, может быть, и рады не перехватывать фокус, но макос им не даёт такой возможности.
Так что, судя по всему, это вопрос к Эпплу, почему их операционная система так дебильно себя ведёт.
На Windows с такой проблемой не сталкивался. Задумался почему. Проверил, щелкнув на Zoom и переключившись на другое окно — он стартовал в фоне и никак не воровал фокус.
Действительно, в Windows у приложений таких прав нет — если приложение ЗАХОЧЕТ сдернуть фокус, оно не сможет — https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setforegroundwindow?redirectedfrom=MSDN
An application cannot force a window to the foreground while the user is working with another window. Instead, Windows flashes the taskbar button of the window to notify the user.
В Windows это все же возможно — в том случае, когда приложение состоит из разных EXE-файлов и один из них запускает другой. К примеру, такое бывает во время установки или обновления приложений.