Mercurial > dwindows
comparison gtk4/dw.c @ 2295:2a208d5400c5
GTK4: "size-allocate" signal is gone, so switch to using "realize".
This fixes the splitbar/paned widget from not using the requested position.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 07 Feb 2021 11:39:24 +0000 |
parents | fa19fce045aa |
children | 27c20fa1615e |
comparison
equal
deleted
inserted
replaced
2294:19242334712f | 2295:2a208d5400c5 |
---|---|
8585 } | 8585 } |
8586 return FALSE; | 8586 return FALSE; |
8587 } | 8587 } |
8588 | 8588 |
8589 /* Reposition the bar according to the percentage */ | 8589 /* Reposition the bar according to the percentage */ |
8590 static gint _splitbar_size_allocate(GtkWidget *widget, GtkAllocation *event, gpointer data) | 8590 static gint _splitbar_realize(GtkWidget *widget, gpointer data) |
8591 { | 8591 { |
8592 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent"); | 8592 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent"); |
8593 | 8593 |
8594 /* Prevent infinite recursion ;) */ | 8594 /* Prevent infinite recursion ;) */ |
8595 if(!percent || event->width < 20 || event->height < 20) | 8595 if(!percent) |
8596 return FALSE; | 8596 return FALSE; |
8597 | 8597 |
8598 g_idle_add(_splitbar_set_percent, widget); | 8598 g_idle_add(_splitbar_set_percent, widget); |
8599 return FALSE; | 8599 return FALSE; |
8600 } | 8600 } |
8621 gtk_paned_set_resize_end_child(GTK_PANED(tmp), TRUE); | 8621 gtk_paned_set_resize_end_child(GTK_PANED(tmp), TRUE); |
8622 gtk_paned_set_shrink_end_child(GTK_PANED(tmp), FALSE); | 8622 gtk_paned_set_shrink_end_child(GTK_PANED(tmp), FALSE); |
8623 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); | 8623 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); |
8624 *percent = 50.0; | 8624 *percent = 50.0; |
8625 g_object_set_data(G_OBJECT(tmp), "_dw_percent", (gpointer)percent); | 8625 g_object_set_data(G_OBJECT(tmp), "_dw_percent", (gpointer)percent); |
8626 g_signal_connect(G_OBJECT(tmp), "size-allocate", G_CALLBACK(_splitbar_size_allocate), NULL); | 8626 g_signal_connect(G_OBJECT(tmp), "realize", G_CALLBACK(_splitbar_realize), NULL); |
8627 gtk_widget_show(tmp); | 8627 gtk_widget_show(tmp); |
8628 return tmp; | 8628 return tmp; |
8629 } | 8629 } |
8630 | 8630 |
8631 /* | 8631 /* |