Свойство "Always On Top" для немодальных диалогов?

Хотите предложить идею нового плагина или знаете, что улучшить в существующем? Пишите сюда.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Свойство "Always On Top" для немодальных диалогов?

Post by buniak_a_h »

Latest post of the previous page:

zg, P/S
Многие неприятности легко были бы побеждены, если бы у открытого редактора можно было бы менять координаты, как это делается с диалогами (сообщения DM_RESIZEDIALOG и DM_MOVEDIALOG). Причём, вроде, всё для этого есть (есть функция editor.SetParam с кучей флагов; не хватает только ESPT_RESIZE и ESPT_MOVE, а лучше ESPT_SETBOUNDS). Ну и реализовать эти флаги (тоже, наверняка, наполовину готово, раз есть возможность указывать координаты при создании окна редактора editor.Editor()). Это, конечно, "костыль" (не учитывает, например, перемещение немодального диалога или диалог на фоне чего-то кроме редактора-вьюера), но для многих задач (в частности, "любимая" тема citRiks-а про нумерацию строк в редакторе, или мои поиск, компиляция) этого бы хватило.
Last edited by buniak_a_h on Tue 08 Sep, 2020 21:06, edited 2 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Свойство "Always On Top" для немодальных диалогов?

Post by citRiks »

Пока вот еще соображения как упростить определения какое окно поверх какого будет.
задача значительно упрощается, если внедрить во все немодальные диалоги свойство "parent/owner".
Например, если немодальный диалог открыт из какого-то редактора,
то этот редактор (точнее обьект окна редактора) должен быть "parent/owner window",
а диалог - дочерним окном к этому редактору,
Что это дает для AOT?
При фокусе в этот редактор, автоматически становится очевидным и легко реализуемым,
- что надо поднять все его немодальные окна в видимость.
Которые AOT - те естественно будут поверх всего.
Фокус становится другой - нет проблем, убираем дочернее у это редактора,
достаем все дочернее другого редактора/панели/чего угодно

Просветление и осознание этой идеи пришло от прочтения этого "виша" авторства @JohnDoe,
ссылку на который любезно предоставил А. Буняк.
https://bugs.farmanager.com/view.php?id=3517
Last edited by citRiks on Mon 21 Sep, 2020 16:46, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Свойство "Always On Top" для немодальных диалогов?

Post by buniak_a_h »

citRiks wrote: Tue 08 Sep, 2020 21:15 внедрить во все немодальные диалоги свойство "parent/owner".
Дополнение.
Я тут сделал компиляцию с представлением результатов в немодальном диалоге. Пришлось здорово повозиться, чтобы при закрытии редактора его дочерний диалог тоже закрывался. Это свойство могло бы помочь…
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Свойство "Always On Top" для немодальных диалогов?

Post by zg »

buniak_a_h wrote: Tue 08 Sep, 2020 20:251. Это Вы мне разъясняли. За что Вам большое спасибо: скрипт компиляции (Harbour и GoLang) прекрасно работает.
citRiks в виде Xerox'а в той теме присутствует.
buniak_a_h wrote: Tue 08 Sep, 2020 20:25Т.е. это работает только если диалог открыт "на фоне" панелей. А заставить любой объект, на который переключён фокус, обрабатывать любое событие, не нужное диалогу - это написать первую версию ФАР-а
а причём тут любой объект? речь про редактор, причем вполне конкретный. при наличии EE_GOTFOCUS всё делается и проще и изящнее.
buniak_a_h wrote: Tue 08 Sep, 2020 20:253. Это немножко не о том.
что происходит? во-первых, вы пытаетесь объяснить мне смысл моих же слов, во-вторых, citRiks понял мою мысль, а вы нет.
citRiks wrote: Tue 08 Sep, 2020 20:54почему же вам легче выпилить такой монументально-вычурный костылище, чем добавить простое настоящее АОТ?
1. скрипт основан на плагине, плагин написан лет 15 назад.
2. никто так чётко и не объяснил, что такое «простое настоящее АОТ»
citRiks wrote: Tue 08 Sep, 2020 20:54Касательно конкретно результатов поиска редактора, вы предлагаете:
сразу уточню очевидную вещь: поиск делать лучше свой, это сильно упрощает задачу.
citRiks wrote: Tue 08 Sep, 2020 20:544.) Заново искать все ==>>
нет. результаты можно сохранить и переискать только в изменившейся с последнего поиска части файла.
buniak_a_h wrote: Tue 08 Sep, 2020 21:00если бы у открытого редактора можно было бы менять координаты, как это делается с диалогами
технически это сделать просто.
buniak_a_h wrote: Tue 08 Sep, 2020 21:38Пришлось здорово повозиться, чтобы при закрытии редактора его дочерний диалог тоже закрывался. Это свойство могло бы помочь…
а в чём проблема? делается таблица eid=hdlg и в EE_CLOSE соответствующему диалогу посылается DM_CLOSE.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Свойство "Always On Top" для немодальных диалогов?

Post by citRiks »

zg wrote: Tue 08 Sep, 2020 22:00..сразу уточню очевидную вещь: поиск делать лучше свой, это сильно упрощает задачу.
zg wrote: Tue 08 Sep, 2020 22:00..нет. результаты можно сохранить и переискать только в изменившейся с последнего поиска части файла.
Далее все ИМХО.
Переписать каждую такую базовую функциональность чтобы получить квинтэссенцию костыльности - это .. даже не знаю как сказать.
это победа чистого разума над здравым смыслом, скажем так.
И это вместо обычного АоТ, и все равно ожидаемой и нужной функциональности не будет.
Я видел в том числе и ваш user control для цветного меню (ListBoxEx) - выглядит прикольно, но не практично, поскольку такие user controls выбиваются из рамок, их надо бесконечно допиливать и забыть про стандартные подходы (что есть меню, диалог, их евенты и свойства).
UserControl очень полезен для некоторых задач, нарисовать например HeхEditor, но не как общая практика применения..
Далее, если действительно все переписывать, то в итоге окажется, что залезть в сишные исходники ФАРа и чинить там, окажется значительно дешевле чем выпиливание и составление вместе домиком шедевров костыльного искусства в Луа/внешним АПИ.
Даже для человека изначально незнакомогo с Сями.
и еще дешевле будет сидеть в Vim-е, например.
(это не как утверждение что Vim лучше ФАРа,
а как предложение всем имеющим претензии к ФАРу идти куда подальше на три буквы в Vim)
Last edited by citRiks on Wed 09 Sep, 2020 06:19, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Свойство "Always On Top" для немодальных диалогов?

Post by citRiks »

zg wrote: Tue 08 Sep, 2020 22:00 2. никто так чётко и не объяснил, что такое «простое настоящее АОТ»
Kак в Windows может, cкопировать поведение оттуда?
Поведение Windows формализируется отношениями parent window - child windows,
как я писал здесь парой сообщений выше, на основе предложенным в свое время @JohnDoe
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Свойство "Always On Top" для немодальных диалогов?

Post by citRiks »

zg wrote: Tue 08 Sep, 2020 22:00
buniak_a_h wrote: если бы у открытого редактора можно было бы менять координаты, как это делается с диалогами
технически это сделать просто.
А кто это может сделать и где?
Или кому это следует сделать и где?
Ждать от вас?
Last edited by citRiks on Wed 09 Sep, 2020 18:47, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Свойство "Always On Top" для немодальных диалогов?

Post by citRiks »

Еще один вариант подобия АоТ диалога:
Пусть диалог будет модальным, но "(инпут-)прозрачным" для ему не нужного инпута (нажатий).
То что ему не нужно он пусть передает в низлежайшее под ним окно.
Ну видимо это будет не сам обьект диалога, а ФАРовский механизм опроса "кому нужен этот кей?"
Сейчас этот механизм общается только с модальным окном (диалогом).
Но технически вроде не трудно сделать общение с низлежайшим окном
(при условии модальности и "инпут-прозрачности" верхнего топ-окна),
и так далее до исчерпания стека открытого поверх другого открытого.
Это получается довольно то же самое как и вы предлагали на примере ЛуаПикча,
но это лучше, так как закрывать и переоткрывать ничего не надо.

Недостатки:
* Это все равно не АоТ, и например, мигающего курсора в редакторе не будет видно.
* поведение редакторных макросов будет как минимум странным, так как, например, current area будет диалог а не редактор.
точнее, и скорее всего, редакторные макросы вообще не будут работать

Преимущества "инпут-прозрачности-АоТ" перед "как-в-Виндовс-АоТ" (на базе "paren w. - childs w-s."):
* Может быть уважаемым и любимым девелоперам ФАРа это будет быстрее и легче реализовать?
* Сам по себе такой режим имеет смысл, передача события инпута в "parent control" много где практикуется
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Свойство "Always On Top" для немодальных диалогов?

Post by citRiks »

справедливости ради надо отметить,
что немодальный диалог будет больше подходить на роль симулянта AoT чем модальный как в LuaPicture.
будет меньше головной боли с переоткрытие диалога, надо будет лишь переводить фокус.
но все равно я считаю это костыльный костыль с кучей побочных эффектов.
Наверное когда-нибудь попробую посмотреть в исходных Сях ФАРа как можно допилить самому АоТ,
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Свойство "Always On Top" для немодальных диалогов?

Post by citRiks »

zg,
A для DialogAutoComplete и ShellAutoComplete как реализуется АоТ?
тоже через переоткрывание диалога, или через перевод фокуса, или ..?
Post Reply

Return to “Предложения и идеи”