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);

Reply via email to