OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Сентябрь, 2023 00:23

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Понедельник, 29 Май, 2023 10:25 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3732
arisu писал(а):
это у вас баг с битмаповым скроллом и отцеплеными окнами — то, о чём я в теме LC писал. для отцепленых окон всегда используется битмаповый скролл, а он в принципе неработоспособен. замените в `Views.ScrollFrame()` строчку `bitmapScrolling := TRUE;` на `bitmapScrolling := FALSE;`. всё равно эта штука толком не работает — и не будет, пока я там всё полностью не перепишу.

Понял, да пока такое решение будет логичным. Спасибо!

UPD: только вот для MDI сборки решение не подходит, так что это только для 2.0 должно выключаться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Понедельник, 29 Май, 2023 10:37 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
а вычисляется при отцеплении всё верно — но по алгоритму для tool windows (форм, то бишь). отцеплятор совершенно не в курсе, что у не-форм есть поля, и нафиг их не учитывает. и не может, собственно, нет у среды этой информации. надо делать апи для document margins, и впиливать его в стратегические места.

а баг с сошедшей с ума вертикальной прокруткой есть, да. но только в том случае, если горизонтальная прокрутка есть. откройте из хэлпа любой документ, потом сдублируйте его — и будет работать как надо. посплю — попробую разобраться. я само окно помощи-то не дублировал ни разу, гыг.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Понедельник, 29 Май, 2023 10:41 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
Иван Денисов писал(а):
Иван Денисов писал(а):
Заменил на OR тоже, стало обрабатываться перемещение ползунка. Пока не вижу, какие от этого могут быть проблемы.

Заметил, что изменилось. Если Ctrl зажат, то раньше если курсор был над полем ввода в режиме маски, то шла прокрутка документа, а теперь не идёт.
это можно починить передачей модификаторов в `StdScrollbars.Proposal` и проверкой в `StdDocuments`. сделаю потом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Понедельник, 29 Май, 2023 10:43 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
Иван Денисов писал(а):
UPD: только вот для MDI сборки решение не подходит, так что это только для 2.0 должно выключаться.
почему не подходит? ну, будет и там окно полностью перерисовываться вместо скролла. битмаповый скролл — это опциональная оптимизация, её можно смело выключить — и ничего не сломается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Понедельник, 29 Май, 2023 10:47 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3732
arisu писал(а):
Иван Денисов писал(а):
UPD: только вот для MDI сборки решение не подходит, так что это только для 2.0 должно выключаться.
почему не подходит? ну, будет и там окно полностью перерисовываться вместо скролла. битмаповый скролл — это опциональная оптимизация, её можно смело выключить — и ничего не сломается.

Не сломается, но будет больше тормозить при прокрутке больших текстов. Так что сделал, чтобы для MDI было старое поведение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Вторник, 30 Май, 2023 01:49 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
охлол. хорошо поспать хорошо. короче, корень проблемы с отцеплеными окнами в том, что… битмаповый скролл, етить его. уберите его. совсем. полностью. вообще. проблема с бешенством скроллбаров исчезнет. и в MDI убирите, он и там проглюкивал периодически. там, конечно, очень плохая рисовалка в целом, и рисовалка текстов в частности, но эту проблему надо решать новой рисовалкой, а не битмаповым скролом. битмаповый скрол надо кардинально чинить.

если хотите более правильное решение — то переделайте опросник в Views так, чтобы он начинал опрос с того фрэйма, который, собственно, собрались скроллить, и пусть документ (именно документ) разрешает такое только в режиме MDI.

вторая проблема — это документ, который по высоте меньше окна, и имеет фиксированые размеры. сдублируйте любой длинный мануал, расшироканый по window size — всё будет ок. вертикальный скролл на F1 сходит с ума именно от этого.

проблема с горизонтальном скроллом, как я уже говорил, именно в том, что окно открывают точно по размерам text view, а document view имеет И рамочки, И скроллбары. откуда и возникает прокрутка. если присмотритесь — то увидите, что горизонтальная прокрутка происходит как раз на ширину вертикального скроллбара (плюс-минус).

я помедитирую ещё.

p.s.: с формами такого не происходит потому что текстовый документ имеет такой диапазон прокрутки, чтобы верхняя строка оставалась в окне одна. это связано с осбенностями реализации текстовой подсистемы, простой починке не подлежит: диапазон считают исходя из размера текста в символах и высоты последней строки, иначе пришлось бы при открытии и каждом изменении переформатировать весь документ заново, чтобы узнать его точную высоту. короче, я это планирую чуть-чуть порихтовать, но пока лучше не трогать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Вторник, 30 Май, 2023 03:23 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
вертикальный скролл в мелкодокументах:
заменить в StdDocuments, в `PROCEDURE (c: SBContext) Consider (VAR p: Models.Proposal);` строку `msg.focus := TRUE;` на `msg.focus := FALSE;`. я не знаю, почему там TRUE, это явно ошибка: «документальный» скроллбар скроллит не фрэйм в фокусе, а весь документ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Вторник, 30 Май, 2023 04:43 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
а чтобы не было горизонтального скролла, надо компенсировать размер нового окна в `StdWindows.GetInitSize()`. поскольку размеров скроллбаров мы не знаем, то надо или угадывать, или добавить в `StdDocuments.Document` метод, и спрашивать у него. вот там, где `wid` и `hei` — их надо увеличить на размеры скроллбаров (в пикселях), если оные скроллбары разрешены. но только для документов, у которых основной view — TextViews.View (иначе формы испортятся). спросите тип и `Extends()` у Services, чтобы не тянуть дополнительных импортов.

тут я на ваш выбор оставляю, как лучше в mainline это сделать: угадайкой, методом, или ещё как-нибудь.

N.B.: компенсировать всё остальное не надо, и ни в коем случае не менять `dr`, `db` и прочие. именно `wid` и `hei`, и только их.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Вторник, 30 Май, 2023 09:54 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3732
arisu писал(а):
вертикальный скролл в мелкодокументах:
заменить в StdDocuments, в `PROCEDURE (c: SBContext) Consider (VAR p: Models.Proposal);` строку `msg.focus := TRUE;` на `msg.focus := FALSE;`. я не знаю, почему там TRUE, это явно ошибка: «документальный» скроллбар скроллит не фрэйм в фокусе, а весь документ.

Вот тут разобраться бы, а то может вы все правки исходя из этой парадигмы делаете.
Мы брали за эталон версию 1.7.2, а там вот эти полосы прокрутки у документов работают на тот кадр, который в фокусе.
Я честно не уверен уже, что это хорошая идея, так как с прокруткой какая-то куча проблем в итоге.
А ждёт ли этого пользователь тоже не ясно... Если у кадра надо что-то прокручивать, то его надо обернуть в скролбары.
Вероятно и надо делать так, как проще, и более ожидаемо для пользователя. Вопрос дискуссионный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Вторник, 30 Май, 2023 10:20 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
Иван Денисов писал(а):
Вот тут разобраться бы, а то может вы все правки исходя из этой парадигмы делаете.
а тут всё очень просто: скроллбары показывают размер документа. совершенно очевидно (и с точки зрения пользователя, и просто из здравого смысла), что прокручивать они должны то, чей размер показывают. любой другой вариант — очевидная ошибка. омики тоже небезгрешны, и как видите — этот баг можно вполне успешно не замечать очень долгое время.

я так подозреваю, что омики очень редко жали F1 (скорее всего, у них были любимые сочетания для нужных документов и мест), ещё реже пытались его прокручивать, а если баг и замечали, то оставляли на потом, как маловажный, и забыли. оно почти работает — ровно настолько, чтобы жить в коде долго-долго.

моё мнение вот такое.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Вторник, 30 Май, 2023 14:39 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3732
arisu писал(а):
а чтобы не было горизонтального скролла, надо компенсировать размер нового окна в `StdWindows.GetInitSize()`. поскольку размеров скроллбаров мы не знаем, то надо или угадывать, или добавить в `StdDocuments.Document` метод, и спрашивать у него. вот там, где `wid` и `hei` — их надо увеличить на размеры скроллбаров (в пикселях), если оные скроллбары разрешены. но только для документов, у которых основной view — TextViews.View (иначе формы испортятся). спросите тип и `Extends()` у Services, чтобы не тянуть дополнительных импортов.

тут я на ваш выбор оставляю, как лучше в mainline это сделать: угадайкой, методом, или ещё как-нибудь.

N.B.: компенсировать всё остальное не надо, и ни в коем случае не менять `dr`, `db` и прочие. именно `wid` и `hei`, и только их.

Спасибо большое за эту наводку.

Я пока добавлю всем не диалоговым окнам место под полосы прокрутки. Они не только текстовым отображаниям могут понадобиться ведь.
Код:
INC(wid, StdDocuments.param.sbThickness);
INC(hei, StdDocuments.param.sbThickness);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прокрутка документов и StdScrollbars
СообщениеДобавлено: Вторник, 30 Май, 2023 20:58 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
Иван Денисов писал(а):
Я пока добавлю всем не диалоговым окнам место под полосы прокрутки. Они не только текстовым отображаниям могут понадобиться ведь.
оно да, и мне надо глянуть, почему у меня не работала просто проверка флагов `noVScroll` и `noHScroll`. кажется, потому что скроллбары, заразы, появляются не сразу. кстати, а почему. вот почему скроллбар на документе появляется после того, как документ в первый раз отрисовался? (перекиньте, например, их на левую сторону, и будет очень хорошо видно). ведь структура фрэймов уже есть, мы отрисовываем окно «в никуда» при создании. надо подумать…

(вообще, обожаю такие детективы. признаюсь, что на самом деле моменты, когда я ковыряюсь в среде и мы что-то туда допиливаем — самые прикольные. всегда было скучно писать конечные приложения, и очень пёрло от создания всяких программерских инструментов. по-моему, это какая-то не очень приличная болезнь.)

а просто вот так в лоб назначить размеры… я не помню, а скроллбары их не запоминают в mainline? у меня специально при создании скроллбары запоминают текущий стиль, и потом на изменения плевать хотели. я так сделал чтобы можно было разного вида их создавать (и потерял возможность обновлять стили у открытых окон, ну да ладно). поэтому мне пришлось ходить на поклон к StdDocuments.Document и смиренно спрашивать. если вы мой код не очень меняли — у вас там то же самое тогда. (или оно сразу так было, а я просто не менял? эх, склероз…)

p.s.: а, вам же не видно, скорее всего, как скроллбары появляются. а мне видно, потому что у меня есть восстановление рабочего стола в тайлере. вот когда кучу табов открыть с прошлого сеанса, и между ними переключаться, то в первый раз таб отрисовывается без скроллбара, потом ему становится стыдно, и он сразу же отрисовывается второй раз, уже со скроллбаром. после чего всё уже нормально. этого не видно (не происходит?) если открывать просто через Ctrl+O, так что сэмулируйте открытием нескольких документов из кода через Open, тогда увидите, например.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2023, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB