[Libreoffice-commits] core.git: 2 commits - sfx2/source vcl/source
Philippe Jung
phil.jung at free.fr
Thu May 7 03:06:11 PDT 2015
sfx2/source/dialog/infobar.cxx | 8 ++++++--
vcl/source/window/winproc.cxx | 5 ++++-
2 files changed, 10 insertions(+), 3 deletions(-)
New commits:
commit 3faf9c4a2a5d2f761dc83b942199f55cdbd5f054
Author: Philippe Jung <phil.jung at free.fr>
Date: Thu May 7 10:15:46 2015 +0200
Fix a crash in SfxInfoBarWindow
Fix a crash that occurs when a locked doc is opened. Ask to open it
read-only, then click on Edit the document in the info bar. Used to
crash.
Change-Id: Ic6e53853345e9e8431cae0eb2408ab0624d92cce
diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx
index ff91cc6..3c2c197 100644
--- a/sfx2/source/dialog/infobar.cxx
+++ b/sfx2/source/dialog/infobar.cxx
@@ -283,17 +283,21 @@ SfxInfoBarWindow* SfxInfoBarContainerWindow::getInfoBar(const OUString& sId)
void SfxInfoBarContainerWindow::removeInfoBar(SfxInfoBarWindow* pInfoBar)
{
+ // Store a VclPtr to the pInfoBar while we remove it from m_pInfoBars
+ ScopedVclPtr<SfxInfoBarWindow> pTmp(pInfoBar);
+
+ // Remove
for (auto it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it)
{
if (pInfoBar == it->get())
{
+ it->disposeAndClear();
m_pInfoBars.erase(it);
break;
}
}
- if (pInfoBar)
- pInfoBar->disposeOnce();
+ // Resize
long nY = 0;
for (auto it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it)
{
commit cc444e083c59ffcd73520faf55a28f55cfcb0068
Author: Michael Meeks <michael.meeks at collabora.com>
Date: Thu May 7 11:08:24 2015 +0100
Hold a reference on the Window while emitting events from vcl backends.
Change-Id: I4673dc03c214ca8f5c227a444e182a45f6199b9b
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index 6cccd18..30db414 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -2377,11 +2377,14 @@ static void ImplHandleSalQueryCharPosition( vcl::Window *pWindow,
}
}
-bool ImplWindowFrameProc( vcl::Window* pWindow, SalFrame* /*pFrame*/,
+bool ImplWindowFrameProc( vcl::Window* _pWindow, SalFrame* /*pFrame*/,
sal_uInt16 nEvent, const void* pEvent )
{
DBG_TESTSOLARMUTEX();
+ // Ensure the window survives during this method.
+ VclPtr<vcl::Window> pWindow( _pWindow );
+
bool nRet = false;
// #119709# for some unknown reason it is possible to receive events (in this case key events)
More information about the Libreoffice-commits
mailing list