From 9af54f5ed7c2c662adc9b6543e658857f59fce27 Mon Sep 17 00:00:00 2001 From: deepend Date: Sat, 31 Jan 2026 12:59:58 -0700 Subject: [PATCH] =?UTF-8?q?Added=20a=20shared=20size-request=20helper=20pl?= =?UTF-8?q?us=20GTK3=20preferred-size=20vfuncs=20to=20reuse=20the=20existi?= =?UTF-8?q?ng=20sizing=20logic=20while=20keeping=20GTK2=E2=80=99s=20size?= =?UTF-8?q?=5Frequest=20path=20intact.=20Guarded=20the=20GTK2=20size=5Freq?= =?UTF-8?q?uest=20assignment=20and=20wired=20the=20new=20GTK3=20preferred-?= =?UTF-8?q?size=20handlers=20in=20class=20init.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fe-gtk/xtext.c | 49 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/fe-gtk/xtext.c b/src/fe-gtk/xtext.c index b6336deb..2651139d 100644 --- a/src/fe-gtk/xtext.c +++ b/src/fe-gtk/xtext.c @@ -1058,12 +1058,54 @@ gtk_xtext_realize (GtkWidget * widget) } static void -gtk_xtext_size_request (GtkWidget * widget, GtkRequisition * requisition) +gtk_xtext_size_request_internal (GtkWidget *widget, GtkRequisition *requisition) { requisition->width = 200; 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 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->unrealize = gtk_xtext_unrealize; +#if !HAVE_GTK3 widget_class->size_request = gtk_xtext_size_request; +#endif widget_class->size_allocate = gtk_xtext_size_allocate; widget_class->button_press_event = gtk_xtext_button_press; 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; #if HAVE_GTK3 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 #if !HAVE_GTK3 widget_class->expose_event = gtk_xtext_expose;