Кнопки внизу: подсказка не перехватывает щелчок, щелчки не теряются

Две беды у всех кнопок нижней полосы.

Всплывающая подсказка появлялась прямо поверх кнопки, о которой
рассказывает, и перехватывала щелчок: нажать кнопку было нельзя.
Подсказка переехала в строку состояния — она в той же полосе, ничего не
закрывает и меняется сразу после щелчка, не дожидаясь нового наведения.
Строка состояния теперь занимает всё свободное место справа, пока рядом
не показан ход работы, а самые длинные подсказки укорочены: раньше их
обрезало на полуслове.

Второй щелчок подряд виджетсет отдавал как двойной, и кнопка его не
видела: быстрая очередь щелчков срабатывала через раз. У кнопки убран
csDoubleClicks, а на случай, если двойной всё же дойдёт, он считается
за обычный.

Проверено: tests/lfmcheck, раздел «Кнопки нижней панели», и
tests/buttonclicks.sh мышью на невидимом экране — по всем шести
переключателям очереди из 1-5 щелчков отрабатываются полностью.
This commit is contained in:
4aiman 2026-09-30 15:44:29 +03:00
commit aba9bd57e4
5 changed files with 296 additions and 15 deletions

View file

@ -273,6 +273,29 @@ Ctrl+Shift+R, который схлопывает дыру под курсоро
удаляет: она лежит, пока проект не сохранят заново. После сохранения
копия не нужна и убирается.
## Кнопки внизу
Переключатели в нижней полосе — прилипание, прилипание курсора, курсор
посередине, автосхлопывание с выбором режима, режим выделения, журнал.
**Подсказка идёт в строку состояния, а не во всплывающее окно.**
Всплывающее окно появлялось прямо поверх кнопки, о которой
рассказывало, и перехватывало щелчок: нажать кнопку было нельзя, пока
подсказка не уйдёт. Теперь наведение мыши пишет ту же фразу в строку
состояния справа от кнопок — она ничего не закрывает. Щелчок по кнопке
подсказку тут же переписывает: «Журнал виден» становится «Журнал
спрятан».
Строка состояния занимает всё свободное место справа и ужимается только
на время, пока рядом показан ход работы.
**Каждый щелчок считается.** Раньше второй щелчок подряд оконная
библиотека отдавала как двойной, и до кнопки он не доходил: нажимаешь
журнал три раза быстро — срабатывает один. Теперь двойных щелчков
кнопкам не приходит вовсе, и любая очередь щелчков отрабатывается вся
(`tests/lfmcheck`, раздел «Кнопки нижней панели»; `tests/buttonclicks.sh`
проверяет то же самое мышью на невидимом экране).
## Два режима выделения
Кнопка внизу (справа от схлопывания) и клавиша `D`. Режим показан
@ -778,6 +801,18 @@ Wine с новой библиотекой не грузилось ничего.
`TThread`, `Name` и `Caption` — у формы. Компилятор ловит это как
«Duplicate identifier», но причину не объясняет.
**Двойной щелчок съедает второй щелчок.** Пока у элемента есть
`csDoubleClicks`, второй щелчок подряд приходит не как `Click`, а как
`DblClick`, и обработчик кнопки его не видит: человек щёлкает три раза,
срабатывает один. Лечится двумя строками в конструкторе:
`ControlStyle := ControlStyle - [csDoubleClicks]` и `DblClick`,
переопределённый в `Click`, — на случай, если двойной всё же дойдёт.
**Всплывающая подсказка перехватывает щелчок.** Окно подсказки в gtk2
встаёт поверх кнопки, о которой рассказывает, и щелчок попадает в него,
а не в кнопку. У кнопок в тесной полосе `ShowHint` выключен, а текст
подсказки идёт в строку состояния (`UseStatusHints` в `uMainForm`).
## Консольный инструмент проверок
Часть вещей проверяется числами, а не глазами. Сборка: `./build.sh tool`.