Page 2 of 5

Re: Диалог/меню в редакторе, не перехватывающий ввод

Posted: Wed 01 Apr, 2009 19:10
by t-rex

Latest post of the previous page:

Marty
Читай доки, смотри сорцы плагинов.

Re: Диалог/меню в редакторе, не перехватывающий ввод

Posted: Wed 01 Apr, 2009 19:25
by Marty
t-rex wrote:Marty
Читай доки, смотри сорцы плагинов.
Может подскажете, кто-то уже делал подобный немодалный диалог, и что читать/куда смотреть, более адресно?

Re: Диалог/меню в редакторе, не перехватывающий ввод

Posted: Wed 01 Apr, 2009 19:28
by t-rex
Marty
Самый простой пример, плагин Uninstall.

Re: Диалог/меню в редакторе, не перехватывающий ввод

Posted: Wed 01 Apr, 2009 20:20
by Marty
t-rex wrote:Marty
Самый простой пример, плагин Uninstall.
Uninstall от Евгения Семенцова? По-моему, он вполне модальный. Единственно, там наверно можно глянуть обработку клавиатуры для списка, и закрывать/открывать диалог. Вы это имели ввиду, когда советовали посмотреть его?

Немодальный диалог

Posted: Fri 28 Aug, 2015 15:11
by John Doe
Тоже хочу немодальные диалоги.
"Изврат" из первого поста понятен, но предлагаю обсудить как бы это по-честному реализовать в АПИ.

Сейчас DialogRun возвращает управление только после закрытия диалога, очевидно что с немодальными надо возвращать управление сразу.
Если диалог немодальный, то логично работать с ним как и с прочими Экранами, переключаться по CtrlTab и т.п.

Но! Идея из первого поста предполагает что диалог не имея фокуса ввода всё-таки обрабатывает очередь сообщений.
Такое вообще реально легализовать? Или это уже будет не диалог?

Есть ли аналоги такого использования в каких-либо из существующих интерфейсов?
Кто-то может поделиться опытом, как это работает, и как можно организовать соответствующее АПИ?

Немодальный диалог

Posted: Fri 28 Aug, 2015 15:55
by zg
добавить диалогу немодальность можно уже сейчас. что из этого получится, другой вопрос. в планах есть, с не очень высоким приоритетом.

Немодальный диалог

Posted: Fri 28 Aug, 2015 16:54
by John Doe
Интересны комментарии по второму вопросу:
John Doe wrote: Идея из первого поста предполагает что диалог не имея фокуса ввода всё-таки обрабатывает очередь сообщений.
Такое вообще реально легализовать? Или это уже будет не диалог?

Есть ли аналоги такого использования в каких-либо из существующих интерфейсов?
Кто-то может поделиться опытом, как это работает, и как можно организовать соответствующее АПИ?

Немодальный диалог

Posted: Fri 28 Aug, 2015 18:04
by John Doe
John Doe wrote: диалог не имея фокуса ввода всё-таки обрабатывает очередь сообщений.
Упс, ложная посылка.
Всё может быть ровно наоборот: очередь обрабатывается в ProcessEditorInputW, и при необходимости какие-то нажатия направляются в наш немодальный диалог. Диалог очевидно должен обладать свойством show_on_top (http://bugs.farmanager.com/view.php?id=3517).

Плюс, ещё один обработчик в ProcessEditorEventW будет следить за потерей фокуса редактором, и прятать диалоги при необходимости.
Правда возможности по отслеживанию активного окна пока что в АПИ ограничены.

Ещё одно ограничение, официально есть только ProcessEditorInputW, а значит в других областях обработать нажатия проблематично...

P.S.
Возможности использования не ограничиваются примером из первого поста.
На немодальных диалогах можно делать фоновые индикаторы прогресса, тултипы, нотификации с таймаутом, какие-нибудь тулбары, списки автодополнения чего угодно.

Конечно всё это как-то делалось и раньше, но хочется по-честному.

Немодальный диалог

Posted: Mon 31 Aug, 2015 14:09
by John Doe
Нашёл аналогичное обсуждение Диалог/меню в редакторе, не перехватывающий ввод (влил сюда).
И ещё одно связанное тут: http://forum.farmanager.com/viewtopic.php?f=7&t=5267

А самое ранне упоминание о немодальных диалогах здесь: http://forum.farmanager.com/viewtopic.php?p=2148#p2148 (там сказано "юзай поиск", видимо искать надо ещё в фидошной рассылке)

Немодальный диалог

Posted: Thu 28 Sep, 2017 22:22
by John Doe
Свершилось (5047):

Code: Select all

r15175 | z-g | 2017-09-28 19:28:17 +0300 (Чт, 28 сен 2017) | 3 lines
1. если в DialogInit указать флаг FDLG_NONMODAL, то создастся и сразу запустится немодальный диалог.
   DialogRun и DialogFree для такого диалога указывать не нужно. при закрытии диалог автоматически уничтожается.

Немодальный диалог

Posted: Fri 29 Sep, 2017 06:23
by NightRoman
John Doe wrote:
Thu 28 Sep, 2017 22:22
Свершилось (5047
Это хорошая новость, открывается много новых возможностей и удобств для пользователя.

Должен ли немодальный диалог автоматически закрываться при клике вне диалога? Сейчас закрывается. Может, это настраивается? Для немодального диалога в некоторых случаях хотелось бы переключения в окно, где кликнули, а не закрытия диалога.

Немодальный диалог

Posted: Fri 29 Sep, 2017 07:13
by NightRoman
Также, в связи с новыми возможностями, хотелось бы получать DN_GOTFOCUS и DN_KILLFOCUS для самого диалога. При переключении между окнами надо бы знать об этих событиях для полноценной работы.

Немодальный диалог

Posted: Fri 29 Sep, 2017 09:35
by John Doe
NightRoman wrote:
Fri 29 Sep, 2017 06:23
Сейчас закрывается.
Кто сказал?
Работают F12 и CtrlTab.

Чего ещё пока нет: режима "Always on top".

Update:
http://bugs.farmanager.com/view.php?id=3517

Немодальный диалог

Posted: Fri 29 Sep, 2017 09:38
by John Doe
NightRoman wrote:
Fri 29 Sep, 2017 07:13
хотелось бы получать DN_GOTFOCUS и DN_KILLFOCUS для самого диалога. При переключении между окнами надо бы знать об этих событиях для полноценной работы.
Где-то на мантисе есть пожелание о получении подобных событий в общем виде, при смене окон.

Немодальный диалог

Posted: Fri 29 Sep, 2017 09:54
by zg
NightRoman wrote:
Fri 29 Sep, 2017 06:23
Должен ли немодальный диалог автоматически закрываться при клике вне диалога? Сейчас закрывается. Может, это настраивается?
на DN_CONTROLINPUT с param1==-1 вернуть true.

Немодальный диалог

Posted: Fri 29 Sep, 2017 10:46
by John Doe
zg wrote:
Fri 29 Sep, 2017 09:54
на DN_CONTROLINPUT с param1==-1 вернуть true.

Вероятно FALSE.

И при этом программно переключиться в окно под текущим*.
Хотя и это не совсем верно, ведь клик может быть в области совсем другого окна.

[*] При этом порядок окон у нас в АПИ не определён (и как по мне, то лучше обратный).

Немодальный диалог

Posted: Fri 29 Sep, 2017 10:53
by zg
причём тут вообще DN_CLOSE? у меня всё правильно написано.