Added a shared size-request helper plus GTK3 preferred-size vfuncs to reuse the existing sizing logic while keeping GTK2’s size_request path intact.

Guarded the GTK2 size_request assignment and wired the new GTK3 preferred-size handlers in class init.
This commit is contained in:
2026-01-31 12:59:58 -07:00
parent 5788bd90e2
commit 9af54f5ed7

View File

@@ -1058,12 +1058,54 @@ gtk_xtext_realize (GtkWidget * widget)
} }
static void static void
gtk_xtext_size_request (GtkWidget * widget, GtkRequisition * requisition) gtk_xtext_size_request_internal (GtkWidget *widget, GtkRequisition *requisition)
{ {
requisition->width = 200; requisition->width = 200;
requisition->height = 90; requisition->height = 90;
} }
#if !HAVE_GTK3
static void
gtk_xtext_size_request (GtkWidget *widget, GtkRequisition *requisition)
{
gtk_xtext_size_request_internal (widget, requisition);
}
#endif
#if HAVE_GTK3
static void
gtk_xtext_get_preferred_width (GtkWidget *widget, gint *minimum, gint *natural)
{
GtkRequisition requisition;
gtk_xtext_size_request_internal (widget, &requisition);
*minimum = requisition.width;
*natural = requisition.width;
}
static void
gtk_xtext_get_preferred_height (GtkWidget *widget, gint *minimum, gint *natural)
{
GtkRequisition requisition;
gtk_xtext_size_request_internal (widget, &requisition);
*minimum = requisition.height;
*natural = requisition.height;
}
static void
gtk_xtext_get_preferred_height_for_width (GtkWidget *widget, gint width,
gint *minimum, gint *natural)
{
GtkRequisition requisition;
(void)width;
gtk_xtext_size_request_internal (widget, &requisition);
*minimum = requisition.height;
*natural = requisition.height;
}
#endif
static void static void
gtk_xtext_size_allocate (GtkWidget * widget, GtkAllocation * allocation) gtk_xtext_size_allocate (GtkWidget * widget, GtkAllocation * allocation)
{ {
@@ -2816,7 +2858,9 @@ gtk_xtext_class_init (GtkXTextClass * class)
widget_class->realize = gtk_xtext_realize; widget_class->realize = gtk_xtext_realize;
widget_class->unrealize = gtk_xtext_unrealize; widget_class->unrealize = gtk_xtext_unrealize;
#if !HAVE_GTK3
widget_class->size_request = gtk_xtext_size_request; widget_class->size_request = gtk_xtext_size_request;
#endif
widget_class->size_allocate = gtk_xtext_size_allocate; widget_class->size_allocate = gtk_xtext_size_allocate;
widget_class->button_press_event = gtk_xtext_button_press; widget_class->button_press_event = gtk_xtext_button_press;
widget_class->button_release_event = gtk_xtext_button_release; widget_class->button_release_event = gtk_xtext_button_release;
@@ -2825,6 +2869,9 @@ gtk_xtext_class_init (GtkXTextClass * class)
widget_class->selection_get = gtk_xtext_selection_get; widget_class->selection_get = gtk_xtext_selection_get;
#if HAVE_GTK3 #if HAVE_GTK3
widget_class->draw = gtk_xtext_draw; widget_class->draw = gtk_xtext_draw;
widget_class->get_preferred_width = gtk_xtext_get_preferred_width;
widget_class->get_preferred_height = gtk_xtext_get_preferred_height;
widget_class->get_preferred_height_for_width = gtk_xtext_get_preferred_height_for_width;
#endif #endif
#if !HAVE_GTK3 #if !HAVE_GTK3
widget_class->expose_event = gtk_xtext_expose; widget_class->expose_event = gtk_xtext_expose;