Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GtkContainer/GtkWidget maximum width

Tags:

c

gtk

gtk3

I am trying to write an application that contains a GtkBox (Horizontal) where I add a dynamic number of buttons (with labels) depending on various conditions. Now I want to prevent the GtkBox to grow more than (for example) 600px. The button labels can be ellipsized.

So my question is, is there any common way to solve this problem? If not, I think i would have to create a new Container Class that will watch its size.

I am using the C API for GTK (gtk+-3.0)

like image 892
mame98 Avatar asked Oct 09 '16 17:10

mame98


2 Answers

This is not directly possible with the current version of GTK. A max-width CSS property may be implemented in a future version, as there have been plenty of requests for it.

What you would do is indeed create a new container subclass. You could probably inherit from GtkBin to keep things simple, and in your size_allocate handler just clamp the width to the maximum value before passing it on to the child widget.

You can also try out Emeus, the constraint layout library for GTK, similar to how iOS would do this.

like image 194
ptomato Avatar answered Oct 17 '22 00:10

ptomato


There is no simple way to limit the size of a widget, at least as far as I can tell. What you can do is attach to the size-allocate signal and call set_size_request when received.

Since size requests are only requests, not commands, depending on the circumstances you may not be able to shrink the widget as much as you would like, but this should be rare.

like image 37
oldtechaa Avatar answered Oct 16 '22 23:10

oldtechaa