Bug 45758

Summary: Анимация масштабирования текста при смене шрифта в GTK 3 ломает определение размера виджета в wxWidgets
Product: Альт Рабочая станция Reporter: Дмитрий Щербаков <das>
Component: Ошибки работыAssignee: Mikhail Efremov <sem>
Status: NEW --- QA Contact: qa-p8 <qa-p8>
Severity: normal    
Priority: P5 CC: antohami, aris, cas, mike
Version: 10.1   
Hardware: x86_64   
OS: Linux   
Bug Depends on: 48744    
Bug Blocks:    

Description Дмитрий Щербаков 2023-04-05 16:51:12 MSK
Заметил в Mate окружении в стандартной теме (BlueMenta) уникальную особенность в GTK 3. Сценарий следующий: в процессе работы программы создаём новый виджет-надпись (wxStaticText, который внутри представляет собой GtkLabel) и выставляем ему увеличенный шрифт. В процессе отображения надпись появляется стандартного мелкого шрифта, а потом в течение некоторого времени увеличивается с анимацией. Такое поведение с анимацией ломает алгоритм расчёта размера виджета в wxWidgets: размер фиксируется в момент отображения текста, после чего увеличенный текст не помещается в отведённое ему поле. Ошибка проявляется только на темах Menta и BlueMenta, в остальных работает нормально, то есть без анимации, как и в других окружениях/дистрибутивах.
Возможно ли отключить эту анимацию?

Ссылка на демонстрацию в видео: https://t.me/alt_linux/282391
Могу приложить здесь файл с видео, если это уместно.

Историческая справка:
В GTK 3.6 появилось кэширование размеров, так что определение размера надписи при смене шрифта происходит не сразу, а только при его реальном отображении. В wxw для обхода проблемы стали дополнительно обновлять собственную информацию о размере после отображения элемента:
https://github.com/wxWidgets/wxWidgets/issues/16088
Такой подход работает во всех окружениях, кроме описанного случая в Mate: в нормальных ситуациях надписи появляются без анимации, сразу правильного размера.
Дополнительно проверил: если с задержкой в секунду после отображения вызывать InvalidateBestSize() на wxStaticText и Layout() на родительскую панель, то подхватывается правильная информация о размере.

При необходимости позже могу сделать минимальный пример, демонстрирующий проблему.
Comment 1 Антон Мидюков 2023-04-06 11:03:35 MSK
А наблюдается ли такая проблема с приложениями на wxGTK3.2? В audacity, codelite, dvdstyler, wxMaxima?
Comment 2 Дмитрий Щербаков 2023-04-06 11:21:46 MSK
(In reply to Антон Мидюков from comment #1)
> А наблюдается ли такая проблема с приложениями на wxGTK3.2? В audacity,
> codelite, dvdstyler, wxMaxima?

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