diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-03-10 12:53:19 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-03-11 10:03:55 +0100 |
commit | 81d5acda2c143ab1183c7dc6d2386cc1b28c9fcf (patch) | |
tree | de1afc99e7586a1995868510202ec0972f1df358 /vcl | |
parent | 677a18c2e16c5c1ae6be8d30e1a967f41fbf67a0 (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.cxx | 10 |
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); |