summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-12-07 20:26:45 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-12-08 09:36:56 +0100
commit1361d656675c534638aa78c9decffae9e38127fa (patch)
tree93103cbe26a320d300d965ee22368bb2021ad170
parentCppunitTest_sw_rtfexport: avoid DECLARE_RTFEXPORT_TEST() for export-only tests (diff)
downloadcore-1361d656675c534638aa78c9decffae9e38127fa.tar.gz
core-1361d656675c534638aa78c9decffae9e38127fa.zip
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 <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk3/gtkinst.cxx6
1 files changed, 6 insertions, 0 deletions
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);