Measure and Size_allocate virtual function for custom widget


Hi everybody, I’m trying to implement a custom widget that needs functionalities that are like the one set in
the read_more gtk_demos widget example, but I’m having issues with it.
I’m trying to get my head around the measure and allocate widget_class virtual functions, so I’ve just added them in my class, and set widget_class->measure = my_widget_measure, widget_class->size_allocate = my_widget_allocate. Inside these functions, I’ve put some code to check their behavior as I’m resizing my window so at first I’ve just put g_print(“allocate\n”) in “the allocate function” and g_print(“measure\n”) in the measure function. I was expecting the program to print measure and/or allocate as I was resizing my window, like it did when I modified the read_more.c code to do that, but nothing was printed.
So I thought that it was because my functions were lacking some code, like gtk_widget_measure
and a gtk_widget_size_allocate, to really implement them. I decided to do that, but unfortunately it didn’t change anything.
And now I’m stuck, because these functions doesn’t seem to work even if they should produce at least a crash or some errors, but nothing happens which is worse in a way.
Here you can find the source code gread/gread-introduction.c at dev · Xalares/gread · GitHub in question.
Thanks for your time !

I’ve partially solved my problem, my custom size_allocate method is not used because I use a layout manager. Now I need a way to use the layout manager’s size_allocate virtual method.

You can’t “use” the allocate() virtual function of a layout manager: you can only implement it. If you are using an existing LayoutManager then you don’t have access to its implementation; you will need to create your custom LayoutManager class, and then assign an instance of that class to your widget.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.