So, my code for creating the widget is…
viewer = gtk_gl_area_new();
gtk_widget_set_hexpand(viewer, 1);
gtk_widget_set_vexpand(viewer, 1);
gtk_widget_set_size_request(viewer, 1, 350);
g_signal_connect(viewer, "realize", G_CALLBACK(viewer_realize_callback), NULL);
g_signal_connect(viewer, "render", G_CALLBACK(viewer_render_callback), NULL);
gtk_box_append(GTK_BOX(v_box2), viewer);
… where v_box
is a vertically-oriented GtkBox
. In my viewer_realize_callback
I have:
static void viewer_realize_callback(GtkWidget *self, gpointer user_data) {
gtk_gl_area_make_current(GTK_GL_AREA(self));
int width = gtk_widget_get_width(self);
int height = gtk_widget_get_height(self);
int scale_factor = gtk_widget_get_scale_factor(self);
...
For some reason, width
and height
are both zero. Same if I use viewer
directly instead. This doesn’t look right; where could have I screwed up?
Edit: when running the code, the widget looks a normally-assigned size, it’s just that initialization fails and no OpenGL operations can be performed.