Горячая клавиша в DI_TEXT и DIF_HIDDEN

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Горячая клавиша в DI_TEXT и DIF_HIDDEN

Post by Smitis »

Может это только в макросах, но горячая клавиша, заданная для текста не срабатывает, если следующий за ней элемент, который мог бы иметь фокус ввода, невидим (используется флаг DIF_HIDDEN или сделан невидимым через DM_SHOWITEM). Невидимый элемент не может иметь фокус ввода, поэтому по логике надо переходить на ближайший видимый, не?

П.С.
В описании противоречие. С одной стороны такое
7. Если в тексте элемента DI_TEXT имеется "горячая клавиша" (HotKey) и не выставлен флаг DIF_SHOWAMPERSAND, то при нажатии в диалоге Alt+Символ клавиатурный фокус ввода перейдёт на следующий элемент, который может иметь фокус ввода
А далее в описании "Фокус ввода элементов диалога" ничего про невидимые элементы нет. И ещё неточность - с DIF_DISABLE элементы могут иметь фокус, во всяком случае поля ввода.
Ниже перечислены элементы диалога, которые могут иметь клавиатурный фокус ввода (при условии, что для этих элементов не выставлены флаги DIF_NOFOCUS и/или DIF_DISABLE):
...
Разум когда-нибудь победит.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Горячая клавиша в DI_TEXT и DIF_HIDDEN

Post by zg »

Smitis wrote:В описании противоречие. С одной стороны такое
7. Если в тексте элемента DI_TEXT имеется "горячая клавиша" (HotKey) и не выставлен флаг DIF_SHOWAMPERSAND, то при нажатии в диалоге Alt+Символ клавиатурный фокус ввода перейдёт на следующий элемент, который может иметь фокус ввода
судя по коду и комментариям должно быть «фокус ввода перейдёт на следующий элемент, если он может иметь фокус ввода». в теории конечно можно поправить, но вот к сожалению нет простого примера, демонстрирующего проблему.

там кстати, если идёт сначала строка редактирования, потом метка в той же строке, а потом контрол уже на другой строке, то нажатия хоткея в метке переводит фокус на предыдущий контрол. кто-то для своих целей подпольно видимо добавил.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Горячая клавиша в DI_TEXT и DIF_HIDDEN

Post by zg »

Smitis wrote:И ещё неточность - с DIF_DISABLE элементы могут иметь фокус, во всяком случае поля ввода.
а что для этого надо сделать?
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Горячая клавиша в DI_TEXT и DIF_HIDDEN

Post by Smitis »

судя по коду и комментариям должно быть «фокус ввода перейдёт на следующий элемент, если он может иметь фокус ввода». в теории конечно можно поправить, но вот к сожалению нет простого примера, демонстрирующего проблему.
Я тут твоим советом воспользовался, включаю/выключаю элементы одного диалога, чтобы сами диалоги не переключать. А некоторые текстовые строки общие, вот и заметил - хоткеи то работают, то нет.
а что для этого надо сделать?
Писание поправить.
Разум когда-нибудь победит.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Горячая клавиша в DI_TEXT и DIF_HIDDEN

Post by zg »

Smitis wrote:
а что для этого надо сделать?
Писание поправить.
где?
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Горячая клавиша в DI_TEXT и DIF_HIDDEN

Post by Smitis »

zg wrote:где?
Словарь/Фокус ввода элементов диалога. Невидимые элементы не могут иметь фокус ввода.
В статье про DIF_TEXT. Клавиатурный фокус ввода перейдёт на следующий элемент, если тот может иметь фокус ввода.

Может ещё где.
Разум когда-нибудь победит.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Горячая клавиша в DI_TEXT и DIF_HIDDEN

Post by Smitis »

Раз это не баг, оформлю виш на мантис.
Разум когда-нибудь победит.
Post Reply

Return to “Глюки и баги”