include/vcl/syschild.hxx | 1 + vcl/inc/salobj.hxx | 2 ++ vcl/inc/unx/gtk/gtkobject.hxx | 2 ++ vcl/source/window/syschild.cxx | 7 +++++++ vcl/unx/gtk3/gtk3gtkobject.cxx | 16 ++++++++++++++++ 5 files changed, 28 insertions(+)
New commits: commit 0c764bfd7abf0b4f21ece732d79bf9b02d7a42d9 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Dec 17 17:25:57 2019 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Thu Dec 19 17:14:06 2019 +0100 add a SystemChildWindow::GetOptimalSize override Change-Id: I812d996e78a6d627fda6612307ca4cb2f111b6a9 Reviewed-on: https://gerrit.libreoffice.org/85325 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/vcl/syschild.hxx b/include/vcl/syschild.hxx index bdfd913fe929..11d85b029bf5 100644 --- a/include/vcl/syschild.hxx +++ b/include/vcl/syschild.hxx @@ -41,6 +41,7 @@ public: // create a SystemChildWindow using the given SystemWindowData explicit SystemChildWindow( vcl::Window* pParent, WinBits nStyle, SystemWindowData *pData, bool bShow = true ); virtual ~SystemChildWindow() override; + virtual Size GetOptimalSize() const override; virtual void dispose() override; virtual const SystemEnvData* GetSystemData() const override; diff --git a/vcl/inc/salobj.hxx b/vcl/inc/salobj.hxx index 83024fec339d..90ef3ae5e8d2 100644 --- a/vcl/inc/salobj.hxx +++ b/vcl/inc/salobj.hxx @@ -55,6 +55,8 @@ public: virtual const SystemEnvData* GetSystemData() const = 0; + virtual Size GetOptimalSize() const { return Size(); } + void SetCallback( SystemChildWindow* pInst, SALOBJECTPROC pProc ) { m_pInst = pInst; m_pCallback = pProc; } void CallCallback( SalObjEvent nEvent ) diff --git a/vcl/inc/unx/gtk/gtkobject.hxx b/vcl/inc/unx/gtk/gtkobject.hxx index 75dbe39e4b9e..7ff9e499815b 100644 --- a/vcl/inc/unx/gtk/gtkobject.hxx +++ b/vcl/inc/unx/gtk/gtkobject.hxx @@ -52,6 +52,8 @@ public: virtual void SetForwardKey( bool bEnable ) override; virtual const SystemEnvData* GetSystemData() const override; + + virtual Size GetOptimalSize() const override; }; #endif // INCLUDED_VCL_INC_UNX_GTK_GTKOBJECT_HXX diff --git a/vcl/source/window/syschild.cxx b/vcl/source/window/syschild.cxx index 2ba10a2bcc75..81cbc43abd11 100644 --- a/vcl/source/window/syschild.cxx +++ b/vcl/source/window/syschild.cxx @@ -140,6 +140,13 @@ void SystemChildWindow::EnableEraseBackground( bool bEnable ) mpWindowImpl->mpSysObj->EnableEraseBackground( bEnable ); } +Size SystemChildWindow::GetOptimalSize() const +{ + if (mpWindowImpl->mpSysObj) + return mpWindowImpl->mpSysObj->GetOptimalSize(); + return vcl::Window::GetOptimalSize(); +} + void SystemChildWindow::SetLeaveEnterBackgrounds(const css::uno::Sequence<css::uno::Any>& rLeaveArgs, const css::uno::Sequence<css::uno::Any>& rEnterArgs) { if (mpWindowImpl->mpSysObj) diff --git a/vcl/unx/gtk3/gtk3gtkobject.cxx b/vcl/unx/gtk3/gtk3gtkobject.cxx index 833048611b14..3079fdbe03a4 100644 --- a/vcl/unx/gtk3/gtk3gtkobject.cxx +++ b/vcl/unx/gtk3/gtk3gtkobject.cxx @@ -156,6 +156,22 @@ void GtkSalObject::Show( bool bVisible ) } } +Size GtkSalObject::GetOptimalSize() const +{ + if (m_pSocket) + { + bool bVisible = gtk_widget_get_visible(m_pSocket); + if (!bVisible) + gtk_widget_set_visible(m_pSocket, true); + GtkRequisition size; + gtk_widget_get_preferred_size(m_pSocket, nullptr, &size); + if (!bVisible) + gtk_widget_set_visible(m_pSocket, false); + return Size(size.width, size.height); + } + return Size(); +} + const SystemEnvData* GtkSalObject::GetSystemData() const { return &m_aSystemData; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits