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
)
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With