Hi Chris, Try getting the font height and base the textview height on that. If you use the font ascent you might have to pad it a little but it should give you a consistent value to size your textviews with based on font size.
Eric /* gcc -Wall textview_height1.c -o textview_height1 `pkg-config --cflags --libs gtk+-3.0` Tested on Ubuntu16.04 with GTK3.18. */ #include<gtk/gtk.h> int main(int argc, char *argv[]) { gtk_init(&argc, &argv); GtkWidget *window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Textview Height"); gtk_window_set_default_size(GTK_WINDOW(window), 400, 400); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_container_set_border_width(GTK_CONTAINER(window), 20); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); GtkWidget *textview1=gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview1), GTK_WRAP_WORD); //Testing different font sizes. PangoFontDescription *font=pango_font_description_from_string("Monospace 20"); G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_widget_override_font(textview1, font); G_GNUC_END_IGNORE_DEPRECATIONS PangoContext *pango_context=gtk_widget_get_pango_context(textview1); PangoFontDescription *desc=pango_context_get_font_description(pango_context); PangoFontMetrics *metrics=pango_context_get_metrics(pango_context, desc, NULL); gdouble ascent=(gdouble)pango_font_metrics_get_ascent(metrics)/PANGO_SCALE; pango_font_metrics_unref(metrics); g_print("Ascent %f\n", ascent); GtkWidget *scroll1=gtk_scrolled_window_new(NULL, NULL); gtk_widget_set_hexpand(scroll1, TRUE); gtk_widget_set_size_request(scroll1, 360, 3.0*ascent); gtk_container_add(GTK_CONTAINER(scroll1), textview1); //Assume the same font size for the second textview. GtkWidget *textview2=gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview2), GTK_WRAP_WORD); G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_widget_override_font(textview2, font); G_GNUC_END_IGNORE_DEPRECATIONS //Don't need this anymore. pango_font_description_free(font); GtkWidget *scroll2=gtk_scrolled_window_new(NULL, NULL); gtk_widget_set_hexpand(scroll2, TRUE); gtk_widget_set_size_request(scroll2, 360, 5.0*ascent); gtk_container_add(GTK_CONTAINER(scroll2), textview2); GtkWidget *grid=gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(grid), 10); gtk_grid_set_row_homogeneous(GTK_GRID(grid), FALSE); gtk_grid_attach(GTK_GRID(grid), scroll1, 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(grid), scroll2, 0, 1, 1, 1); gtk_container_add(GTK_CONTAINER(window), grid); gtk_widget_show_all(window); gtk_main(); return 0; } _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list