OberonCore
https://forum.oberoncore.ru/

Мелкая поправка к Views.Old
https://forum.oberoncore.ru/viewtopic.php?f=131&t=6622
Страница 1 из 1

Автор:  adimetrius [ Четверг, 28 Май, 2020 14:52 ]
Заголовок сообщения:  Мелкая поправка к Views.Old

Коллеги,
Views.Old(...VAR name: Files.Name...) - открывает зритель (View) из файла. Имя файла может быть передано в краткой форме - без расширения; в этом случае полагается расширение .ocf.
Однако, хотя name - параметр-переменная, Old не корректирует ее значение, когда добавляется расширение .ocf!! Из-за этого иногда, напр, при попытке открыть уже открытый в окне текст, система "не находит" его, и создает дубликат в новом окне. Если не заметишь получишь, рассогласование: часть изменений - в одном окне, часть - в другом, и бардак - везде.

("Иногда", потому что многие команды до вызова Views.Old сами дополняют краткую форму, вызвав Kernel.MakeFileName; но не все).

Как поправить:
Views.Old реализуется через крюк Views.ViewHook.OldView:
PROCEDURE (h: ViewHook) OldView (loc: Files.Locator; name: Files.Name; VAR conv: Converters.Converter): Views.View;
Вот если ему тоже указать VAR name: Files.Name, то добавленное дефолтное расширение окажется на месте, и рассогласования не будет. Я полагаю, что это мелкий недосмотр, поскольку conv передается как переменная, а не как значение.

Предлагаю поправить. Слово VAR добавится в модуле Views и StdDialog, где реализуется крюк.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/