vcl/unx/gtk3/gtkinst.cxx | 6 ++++++ 1 file changed, 6 insertions(+) New commits: commit 1361d656675c534638aa78c9decffae9e38127fa Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Dec 7 20:26:45 2021 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Wed Dec 8 09:36:56 2021 +0100
gtk3: GtkTreeView::gtk_widget_get_preferred_size can return a poor height if GtkTreeView's internal do_validate_rows hasn't been run yet, guarantee that's called by calling gtk_widget_get_preferred_width. this is noticable in the calc autofilter color dropdown on getting its preferred height right after inserting rows into it Change-Id: I6dcef6ddfb462bcd9ff31ac797862804661f46fa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126491 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index fbd171a14549..760c9a45652f 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -15401,6 +15401,12 @@ public: gtk_scrolled_window_get_min_content_height(GTK_SCROLLED_WINDOW(pParent))); } GtkRequisition size; +#if !GTK_CHECK_VERSION(4, 0, 0) + // sometimes gtk gives a bad outcome for gtk_widget_get_preferred_size if GtkTreeView's + // do_validate_rows hasn't been run before querying the preferred size, if we call + // gtk_widget_get_preferred_width first, we can guarantee do_validate_rows get's called + gtk_widget_get_preferred_width(m_pWidget, nullptr, &size.width); +#endif gtk_widget_get_preferred_size(m_pWidget, nullptr, &size); if (aRet.Width() == -1) aRet.setWidth(size.width);