[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - 2 commits - configure.ac sfx2/source
Michael Stahl
mstahl at redhat.com
Wed Dec 2 03:12:41 PST 2015
configure.ac | 6 +--
sfx2/source/sidebar/SidebarController.cxx | 59 ++++++++++++++++--------------
2 files changed, 36 insertions(+), 29 deletions(-)
New commits:
commit 9bd618740ea5da9d5077f755530de56f1e913bea
Author: Michael Stahl <mstahl at redhat.com>
Date: Tue Dec 1 23:59:19 2015 +0100
tdf#96162: sfx2: avoid re-creating existing sidebar Panels
Writer's naviagtor crashes when you click on a frame to select it,
because the SwContent* that is passed to SwContentTree::GotoContent()
is deleted because SidebarController::CreatePanels() re-creates
every single panel and then ResetPanels() disposes the existing ones,
which deletes the naviagtor's SwContent instances.
(regression from 536c259cb9644971d0eb0cdfb7d823c5383a5481)
Change-Id: I8f875df816a2d5948026a1d3f30b86bb2418acda
(cherry picked from commit 02f2c2f8a160133731d707a8359f5cd576bff434)
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index aad709f..55f4d0b 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -573,35 +573,43 @@ void SidebarController::CreatePanels(const ::rtl::OUString& rDeckId)
// init panels bounded to that deck, do not wait them being displayed as may be accessed through API
- VclPtr<Deck> pDeck = pDeckDescriptor->mpDeck;
+ VclPtr<Deck> pDeck = pDeckDescriptor->mpDeck;
- ResourceManager::PanelContextDescriptorContainer aPanelContextDescriptors;
+ ResourceManager::PanelContextDescriptorContainer aPanelContextDescriptors;
- css::uno::Reference<css::frame::XController> xController = mxCurrentController.is() ? mxCurrentController : mxFrame->getController();
+ css::uno::Reference<css::frame::XController> xController = mxCurrentController.is() ? mxCurrentController : mxFrame->getController();
- mpResourceManager->GetMatchingPanels(
- aPanelContextDescriptors,
- maCurrentContext,
- rDeckId,
- xController);
+ mpResourceManager->GetMatchingPanels(
+ aPanelContextDescriptors,
+ maCurrentContext,
+ rDeckId,
+ xController);
- // Update the panel list.
- const sal_Int32 nNewPanelCount (aPanelContextDescriptors.size());
- SharedPanelContainer aNewPanels;
+ // Update the panel list.
+ const sal_Int32 nNewPanelCount (aPanelContextDescriptors.size());
+ SharedPanelContainer aNewPanels;
- aNewPanels.resize(nNewPanelCount);
- sal_Int32 nWriteIndex (0);
+ aNewPanels.resize(nNewPanelCount);
+ sal_Int32 nWriteIndex (0);
- for (sal_Int32 nReadIndex=0; nReadIndex<nNewPanelCount; ++nReadIndex)
- {
- const ResourceManager::PanelContextDescriptor& rPanelContexDescriptor (
- aPanelContextDescriptors[nReadIndex]);
+ for (sal_Int32 nReadIndex=0; nReadIndex<nNewPanelCount; ++nReadIndex)
+ {
+ const ResourceManager::PanelContextDescriptor& rPanelContexDescriptor (
+ aPanelContextDescriptors[nReadIndex]);
- // Determine if the panel can be displayed.
- const bool bIsPanelVisible (!mbIsDocumentReadOnly || rPanelContexDescriptor.mbShowForReadOnlyDocuments);
- if ( ! bIsPanelVisible)
- continue;
+ // Determine if the panel can be displayed.
+ const bool bIsPanelVisible (!mbIsDocumentReadOnly || rPanelContexDescriptor.mbShowForReadOnlyDocuments);
+ if ( ! bIsPanelVisible)
+ continue;
+ Panel *const pPanel(pDeck->GetPanel(rPanelContexDescriptor.msId));
+ if (pPanel != nullptr)
+ {
+ aNewPanels[nWriteIndex] = pPanel;
+ ++nWriteIndex;
+ }
+ else
+ {
VclPtr<Panel> aPanel = CreatePanel(
rPanelContexDescriptor.msId,
pDeck->GetPanelParentWindow(),
@@ -625,12 +633,11 @@ void SidebarController::CreatePanels(const ::rtl::OUString& rDeckId)
}
}
+ }
- // mpCurrentPanels - may miss stuff (?)
- aNewPanels.resize(nWriteIndex);
- pDeck->ResetPanels(aNewPanels);
-
- pDeckDescriptor->mpDeck = pDeck;
+ // mpCurrentPanels - may miss stuff (?)
+ aNewPanels.resize(nWriteIndex);
+ pDeck->ResetPanels(aNewPanels);
}
void SidebarController::SwitchToDeck (
commit 76cd776207ef13d58a7cac838282c0ad2d65bcb8
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon Nov 30 21:19:52 2015 +0100
configure: check for dlsym(), not dlopen()
On Fedora 23, the check for dlopen happens to succeed with gcc -m32
-fsanitize=address, and then linking executables fails due to not
finding dlsym. Checking for dlsym results in the proper -ldl.
Change-Id: I02108c2c053e07b33848af068937f29967e7dc6a
(cherry picked from commit 037584cfe5e58bf6807fb0188d245042baa8c1c0)
diff --git a/configure.ac b/configure.ac
index 4d63038..71e2090 100644
--- a/configure.ac
+++ b/configure.ac
@@ -900,9 +900,9 @@ AC_SUBST(PTHREAD_LIBS)
if test $_os != "WINNT"; then
save_LIBS="$LIBS"
- AC_SEARCH_LIBS([dlopen], [dl],
- [case "$ac_cv_search_dlopen" in -l*) DLOPEN_LIBS="$ac_cv_search_dlopen";; esac],
- [AC_MSG_ERROR([dlopen not found in either libc nor libdl])])
+ AC_SEARCH_LIBS([dlsym], [dl],
+ [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
+ [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
LIBS="$save_LIBS"
fi
AC_SUBST(DLOPEN_LIBS)
More information about the Libreoffice-commits
mailing list