да вы уж потерпите немножко ;-), я постараюсь скоро выкатить обновку. я там немного почистил код, сделал расширеную клавиатурную навигацию, установку курсора на каталог, из которого вышли по "..", возможность жать букву и курсор будет прыгать по именам, с этой буквы начинающимся… ещё хочу добавить открытие попапа с типами файлов клавиатурой как минимум.
вообще, надо бы ещё кэшировать текущий список, а не перечитывать каталог на каждый чих, но это потом, наверное. просто очень уж неудобно было пользоваться существующим. (но огромное спасибо, что хоть такой есть! ;-)
замечу, что удивительно, насколько оберон и его производные ненавидят клавиатурное управление. я сейчас не про этот конкретный диалог, а в целом.
да, кстати. а что, если в StdLog.Open убрать активацию окна лога, и восстанавливать прошлое окно? вряд ли кому-то действительно это (насильная активация лога) надо. и оно адово бесит, когда в лог печатают через какой-нибудь `ShowParamMsg()`, который вызывает `StdLog.Open`. это часто сообщение об ошибке (от коммандера, например), и ШМЯК! активное окно переключилось на лог. даже бывалых жрецов типа меня это пугает, а в школьной сборке вообще ад адский же.
я тупо добавил в начало `StdLog.Open`:
Код:
VAR
…
actw: Windows.Window;
…
actw := Windows.dir.First();
и в конец:
Код:
IF actw # NIL THEN Windows.dir.Select(actw, FALSE) END
вроде бы это ничего не сломало, и фокус возвращается обратно. из недостатков — противная вспышка (потому что переключение фокуса меняет фон окна). как сказать `StdDialog.Open()` или чему-то подобному, что не надо активировать уже существующее, если оно есть — я не понял. кажется, там просто нет такого флага.
p.s.: да, я в курсе, что там есть `logAlerts`, но во-первых, не очень понял, что это, во-вторых, его нельзя покрутить снаружи, а в-третьих, вопрос всё равно более общий: «зачем в принципе активировать лог-окно иначе чем по явному клику туда мышкой».