summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-03-10 12:53:19 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-03-11 10:03:55 +0100
commit81d5acda2c143ab1183c7dc6d2386cc1b28c9fcf (patch)
treede1afc99e7586a1995868510202ec0972f1df358 /vcl
parent677a18c2e16c5c1ae6be8d30e1a967f41fbf67a0 (diff)
in GtkSalObject::GetOptimalSize get the preferred size
and not its current size as set via SetPosSize as needed for calc navigator shrink/expand contents toolbar toggle Change-Id: I848402f609d9c03fde9953e3b313c5a815a7f4f7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112270 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/gtk3gtkobject.cxx10
1 files changed, 10 insertions, 0 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkobject.cxx b/vcl/unx/gtk3/gtk3gtkobject.cxx
index 5923088b79ee..e6da598d5e30 100644
--- a/vcl/unx/gtk3/gtk3gtkobject.cxx
+++ b/vcl/unx/gtk3/gtk3gtkobject.cxx
@@ -206,8 +206,18 @@ Size GtkSalObjectBase::GetOptimalSize() const
bool bVisible = gtk_widget_get_visible(m_pSocket);
if (!bVisible)
gtk_widget_set_visible(m_pSocket, true);
+
+ // Undo SetPosSize before getting its preferred size
+ gint width(-1), height(-1);
+ gtk_widget_get_size_request(m_pSocket, &width, &height);
+ gtk_widget_set_size_request(m_pSocket, -1, -1);
+
GtkRequisition size;
gtk_widget_get_preferred_size(m_pSocket, nullptr, &size);
+
+ // Restore SetPosSize size
+ gtk_widget_set_size_request(m_pSocket, width, height);
+
if (!bVisible)
gtk_widget_set_visible(m_pSocket, false);
return Size(size.width, size.height);