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 /*