vcl/source/window/window.cxx | 5 +++-- vcl/source/window/window2.cxx | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-)
New commits: commit 40272c9a9b2c554d34cbb942a6fab2e7977dd549 Author: Michael Meeks <michael.me...@collabora.com> AuthorDate: Mon Aug 2 13:38:31 2021 +0100 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Mon Aug 2 16:29:10 2021 +0200 vcl: avoid native widget pieces for disposed BorderWindow. Fixes crash around help windows: vcl::Window::IsCompoundControl() const vcl/source/window/window2.cxx:1200 vcl::Window::Show(bool, ShowFlags) vcl/source/window/window.cxx:2243 (discriminator 3) vcl::Window::Show(bool, ShowFlags) vcl/source/window/window.cxx:2298 HelpTextWindow::ImplShow() vcl/source/app/help.cxx:371 Scheduler::ProcessTaskScheduling() vcl/source/app/scheduler.cxx:495 Change-Id: Ia0205813f3e9d306314577d59d6cdd1bdfa0ee71 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119881 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 60160d46b71a..f9acc5db9c2f 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -2240,7 +2240,8 @@ void Window::Show(bool bVisible, ShowFlags nFlags) // inherit native widget flag for form controls // required here, because frames never show up in the child hierarchy - which should be fixed... // eg, the drop down of a combobox which is a system floating window - if( mpWindowImpl->mbFrame && GetParent() && GetParent()->IsCompoundControl() && + if( mpWindowImpl->mbFrame && GetParent() && !GetParent()->IsDisposed() && + GetParent()->IsCompoundControl() && GetParent()->IsNativeWidgetEnabled() != IsNativeWidgetEnabled() && !(GetStyle() & WB_TOOLTIPWIN) ) { @@ -3709,7 +3710,7 @@ void Window::EnableNativeWidget( bool bEnable ) bool Window::IsNativeWidgetEnabled() const { - return ImplGetWinData()->mbEnableNativeWidget; + return mpWindowImpl ? ImplGetWinData()->mbEnableNativeWidget : false; } Reference< css::rendering::XCanvas > Window::ImplGetCanvas( bool bSpriteCanvas ) const diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx index 32150d1474fc..d2db1bb62670 100644 --- a/vcl/source/window/window2.cxx +++ b/vcl/source/window/window2.cxx @@ -1197,7 +1197,7 @@ GetFocusFlags Window::GetGetFocusFlags() const bool Window::IsCompoundControl() const { - return mpWindowImpl->mbCompoundControl; + return mpWindowImpl ? mpWindowImpl->mbCompoundControl : false; } bool Window::IsWait() const