sd/source/ui/dlg/navigatr.cxx |    1 +
 sd/source/ui/dlg/sdtreelb.cxx |   35 ++++++++++++++++++++++++++++++++---
 2 files changed, 33 insertions(+), 3 deletions(-)

New commits:
commit 60e32969a98cad348cf8e55e8f93abc3d6e9c70c
Author:     Jim Raykowski <rayk...@gmail.com>
AuthorDate: Sun May 21 15:39:11 2023 -0800
Commit:     Jim Raykowski <rayk...@gmail.com>
CommitDate: Tue May 30 21:06:26 2023 +0200

    tdf#155393 SdNavigator: Enhancement to navigate in Notes view
    
    Change-Id: Icea71217fa5ffadc637bd7d9b8cae2fa18ec93bc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152075
    Tested-by: Jenkins
    Reviewed-by: Stéphane Guillou <stephane.guil...@libreoffice.org>
    Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org>
    Reviewed-by: Jim Raykowski <rayk...@gmail.com>

diff --git a/sd/source/ui/dlg/navigatr.cxx b/sd/source/ui/dlg/navigatr.cxx
index 2bdfaefde410..ca6bc100cad9 100644
--- a/sd/source/ui/dlg/navigatr.cxx
+++ b/sd/source/ui/dlg/navigatr.cxx
@@ -778,6 +778,7 @@ void 
SdNavigatorControllerItem::StateChangedAtToolBoxControl( sal_uInt16 nSId,
                 static_cast<::sd::DrawViewShell 
*>(pDrawDocShell->GetViewShell());
         if (pDrawViewShell)
         {
+            pNavigatorWin->FreshTree(pDrawDocShell->GetDoc());
             bool bEditModePage(pDrawViewShell->GetEditMode() == 
EditMode::Page);
             pNavigatorWin->mxToolbox->set_sensitive(bEditModePage);
             pNavigatorWin->mxLbDocs->set_sensitive(bEditModePage);
diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx
index e39099a61675..45b078df0cb0 100644
--- a/sd/source/ui/dlg/sdtreelb.cxx
+++ b/sd/source/ui/dlg/sdtreelb.cxx
@@ -56,9 +56,21 @@
 #include <vcl/commandevent.hxx>
 
 #include <svx/svdview.hxx>
+#include <DrawViewShell.hxx>
 
 using namespace com::sun::star;
 
+namespace {
+
+sd::DrawViewShell* lcl_getDrawViewShell(const SdDrawDocument* pDoc)
+{
+    if (!pDoc || !pDoc->GetDocSh())
+        return nullptr;
+    return static_cast<sd::DrawViewShell*>(pDoc->GetDocSh()->GetViewShell());
+}
+
+}
+
 bool SdPageObjsTLV::bIsInDrag = false;
 
 bool SdPageObjsTLV::IsInDrag()
@@ -251,6 +263,13 @@ bool SdPageObjsTLV::IsEqualToDoc( const SdDrawDocument* 
pInDoc )
     if( !m_pDoc )
         return false;
 
+    sd::DrawViewShell* pDrawViewShell = lcl_getDrawViewShell(m_pDoc);
+    if (!pDrawViewShell)
+        return false;
+    PageKind eDrawViewShellPageKind = pDrawViewShell->GetPageKind();
+    if (eDrawViewShellPageKind != PageKind::Standard && eDrawViewShellPageKind 
!= PageKind::Notes)
+        return false;
+
     std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
     if (!m_xTreeView->get_iter_first(*xEntry))
         xEntry.reset();
@@ -262,7 +281,7 @@ bool SdPageObjsTLV::IsEqualToDoc( const SdDrawDocument* 
pInDoc )
     while( nPage < nMaxPages )
     {
         const SdPage* pPage = static_cast<const SdPage*>( m_pDoc->GetPage( 
nPage ) );
-        if( pPage->GetPageKind() == PageKind::Standard )
+        if (pPage->GetPageKind() == eDrawViewShellPageKind)
         {
             bool bRet = IsEqualToShapeList(xEntry, *pPage, pPage->GetName());
             if (!bRet)
@@ -1247,11 +1266,21 @@ void SdPageObjsTLV::Fill(const SdDrawDocument* pInDoc, 
bool bAllPages, const OUS
     sal_uInt16 nPage = 0;
     const sal_uInt16 nMaxPages = m_pDoc->GetPageCount();
 
+    sd::DrawViewShell* pDrawViewShell = lcl_getDrawViewShell(m_pDoc);
+    if (!pDrawViewShell)
+        return;
+    PageKind eDrawViewShellPageKind = pDrawViewShell->GetPageKind();
+
     while( nPage < nMaxPages )
     {
         const SdPage* pPage = static_cast<const SdPage*>( m_pDoc->GetPage( 
nPage ) );
-        if(  (m_bShowAllPages || pPage->GetPageKind() == PageKind::Standard)
-             && (pPage->GetPageKind() != PageKind::Handout)   ) //#94954# 
never list the normal handout page ( handout-masterpage is used instead )
+        PageKind ePagePageKind = pPage->GetPageKind();
+        if ((m_bShowAllPages ||
+             (ePagePageKind == PageKind::Standard &&
+              eDrawViewShellPageKind == PageKind::Standard) ||
+             (ePagePageKind == PageKind::Notes &&
+              eDrawViewShellPageKind == PageKind::Notes)) &&
+                ePagePageKind != PageKind::Handout) //#94954# never list the 
normal handout page ( handout-masterpage is used instead )
         {
             bool bPageExcluded = pPage->IsExcluded();
 

Reply via email to