OberonCore https://forum.oberoncore.ru/ |
|
Отмена после сохранения https://forum.oberoncore.ru/viewtopic.php?f=23&t=305 |
Страница 1 из 1 |
Автор: | Александр Ильин [ Воскресенье, 24 Сентябрь, 2006 07:01 ] |
Заголовок сообщения: | Отмена после сохранения |
Подскажите, пожалуйста, как разрешить отмену после сохранения. Ну, то есть, чтобы после сохранения на диск документ не забывал историю своих правок, и можно было вернуться по Ctrl+Z? У меня сохранение при вводе текста уже на уровне автоматических рефлексов. Получается, что я сохраняюсь довольно часто, и возможность отмены при этом иногда очень жалко бывает терять. Я понимаю, что при этом с каждым документом будет связан все больший объем памяти для хранения всех этих операций. Отсюда второй вопрос: можно ли искусственно ввести ограничение. Например, не больше столько-то операций на документ? Или не более такого-то объема памяти под буфера "undo". Этот вопрос встанет еще и в связи с возможными перспективами введения автоматического сохранения. |
Автор: | Александр Ильин [ Вторник, 03 Февраль, 2009 07:21 ] |
Заголовок сообщения: | Re: Отмена после сохранения |
Александр Ильин писал(а): Подскажите, пожалуйста, как разрешить отмену после сохранения. Ну, то есть, чтобы после сохранения на диск документ не забывал историю своих правок, и можно было вернуться по Ctrl+Z? Давным-давно нашёл я для себя ответ на этот вопрос, да вот забыл поделиться с остальными. Решение находится в Windows.SaveWindow. Нужно заменитьКод: IF w.seq.Dirty() THEN наw.seq.BeginModification(Sequencers.notUndoable, NIL); w.seq.EndModification(Sequencers.notUndoable, NIL); (* clear sequencer *) w.seq.SetDirty(FALSE) END; Код: IF w.seq.Dirty() THEN Т.е. удалить или закомментировать две строки (я их свернул в складку). После этого сохранение документа не приводит к очистке буфера отмены. Побочный эффект такой: отмена после сохранения не помечает документ изменённым. Соответственно, если вы сохранили, отменили и снова сохранили, то последнее сохранение не будет выполнено, т.к. пункт меню File - Save и комбинация Ctrl+S не доступны. Чтобы это изменить, нужно пересмотреть реализацию Windows.StdSequencer.Dirty.(* Alexander Iljin: don't clear undo buffer on save *) w.seq.SetDirty(FALSE) END; Вариант временного решения - убрать SetDirty (FALSE) в предыдущем куске кода. Тогда сохранение возможно, но нет индикации того, что файл был сохранён. |
Автор: | Александр Ильин [ Вторник, 03 Февраль, 2009 08:26 ] |
Заголовок сообщения: | Re: Отмена после сохранения |
Два года и 4 месяца между сообщениями выше : ) |
Автор: | Valery Solovey [ Вторник, 03 Февраль, 2009 12:40 ] |
Заголовок сообщения: | Re: Отмена после сохранения |
Александр Ильин писал(а): Вариант временного решения... При Undo выставлять w.seq.SetDirty(TRUE)Минусы тоже есть, но, вроде, ничего фатального. Самое главное потом будет - после появления правильного решения не забыть всё всюду поотменять. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |