Код: Выделить всё
GdkGeometry geom = {
.min_width = -1 ,
.max_width = WIN_W ,
.min_height = 200 ,
.max_height = mrect.height };
gtk_window_set_geometry_hints (
GTK_WINDOW (main_win),
GTK_WIDGET (gtk_builder_get_object (builder, "spect_panned")),
& geom,
GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);Здесь https://mail.gnome.org/archives/gtk-list/2009-April/msg00044.html оно работает, хотя явно и gtk старый, и макс. размер только слегка ограничен, но не фиксирован.
Проблема начинается если приложение юзать с GDK_BACKEND=broadway - окна в broadway не ресайзятся. Можно только свернуть/развернут. Однако разворот по ЛКМ тупо игнорируется - ни сигналов, ни событий (проверял window-state-change). Судя по всему, окна в broadway работают с GTK_CSD=1. Однако в том же xfwm4 у окон с CSD также можно цепляться за рамку, в broadway такого нет. Добавление явного GTK_CSD=1 смысла не имеет (похоже, ресайз не зависит от CSD). И это при том, что resize_grip сам по себе выпилен - хотя такая опция есть и в gtk и в glade, её включение ничего не делает.
Можно ли как-то починить максимизацию при фиксированной ширине окна (min_width == max_width == 512), например заставив разворачивать только по вертикали; чтобы решение было универсальным, а не только для CSD ?
Также всё-ещё интересует ресайз окон в broadway. Правильно ли я понял, что сам CSD его не поддерживает, и реализуется только ручным дополнением CSD, реализующим нижнюю рамку?
Edit 1
совсем забыл, прямо перед кодом выше:
Код: Выделить всё
gdk_monitor_get_workarea (mon, & mrect);Если .max_height = -1, то весь ресайз отключается, и сама максимизация отключается целиком (кнопка Maximize скрыта).
P.S. Кто знает, если вообще смысл соваться на irc://irc.gnome.org/#gtk с подобными вопросами? Сам как-то пробовал, но похоже был проигнорен (несколько раз, ни разу не получал ответов). Или это закрытая тусовка гномеров, фильтрующих всех, кто не в команде?