mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 09:58:01 +00:00
Make string_width() work in GTK3.
This was another piece of code that determined text size by instantiating a GtkLabel and asking for its size, which I had to fix in gtkfont.c recently because that strategy doesn't work in GTK3. Replaced the implementation of string_width() with a call to the function I added in gtkfont.c, and now dialog boxes which depend on that for their width measurement (e.g. the one in reallyclose()) don't come out in silly sizes on GTK3 any more.
This commit is contained in:
parent
22ed04d00e
commit
afe2c355cf
@ -3428,11 +3428,9 @@ int messagebox(GtkWidget *parentwin, const char *title, const char *msg,
|
||||
|
||||
int string_width(const char *text)
|
||||
{
|
||||
GtkWidget *label = gtk_label_new(text);
|
||||
GtkRequisition req;
|
||||
gtk_widget_size_request(label, &req);
|
||||
g_object_ref_sink(G_OBJECT(label));
|
||||
return req.width;
|
||||
int ret;
|
||||
get_label_text_dimensions(text, &ret, NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int reallyclose(void *frontend)
|
||||
|
@ -2958,8 +2958,7 @@ static gint unifontsel_configure_area(GtkWidget *widget,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void get_label_text_dimensions(const char *text,
|
||||
int *width, int *height)
|
||||
void get_label_text_dimensions(const char *text, int *width, int *height)
|
||||
{
|
||||
/*
|
||||
* Determine the dimensions of a piece of text in the standard
|
||||
@ -2976,13 +2975,17 @@ static void get_label_text_dimensions(const char *text,
|
||||
PangoLayout *layout = gtk_label_get_layout(GTK_LABEL(label));
|
||||
PangoRectangle logrect;
|
||||
pango_layout_get_extents(layout, NULL, &logrect);
|
||||
*width = logrect.width / PANGO_SCALE;
|
||||
*height = logrect.height / PANGO_SCALE;
|
||||
if (width)
|
||||
*width = logrect.width / PANGO_SCALE;
|
||||
if (height)
|
||||
*height = logrect.height / PANGO_SCALE;
|
||||
#else
|
||||
GtkRequisition req;
|
||||
gtk_widget_size_request(label, &req);
|
||||
*width = req.width;
|
||||
*height = req.height;
|
||||
if (width)
|
||||
*width = req.width;
|
||||
if (height)
|
||||
*height = req.height;
|
||||
#endif
|
||||
|
||||
g_object_ref_sink(G_OBJECT(label));
|
||||
|
@ -137,6 +137,9 @@ void unix_setup_config_box(struct controlbox *b, int midsession, int protocol);
|
||||
/* gtkcfg.c */
|
||||
void gtk_setup_config_box(struct controlbox *b, int midsession, void *window);
|
||||
|
||||
/* Helper function which happens to be in gtkfont.c at the moment */
|
||||
void get_label_text_dimensions(const char *text, int *width, int *height);
|
||||
|
||||
/*
|
||||
* In the Unix Unicode layer, DEFAULT_CODEPAGE is a special value
|
||||
* which causes mb_to_wc and wc_to_mb to call _libc_ rather than
|
||||
|
Loading…
Reference in New Issue
Block a user