summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-02-01 10:06:53 +0000
committerMichael Stahl <mstahl@redhat.com>2017-02-01 13:59:14 +0000
commit77275c4f0a41d55f2689fb2cce97f888e7f4e027 (patch)
tree33b65e804b25cfce3366353e8d0c7ff65bda8b10
parentbafb52624869a5078636a462a06fd65b9efaf04b (diff)
with navigator in sidebar, press space, crash
because root entries have UserData of type SwContentType while children have UserData of type SwContent (both inherit from SwTypeNumber) (cherry picked from commit dfdd01d12226cfbd9b9d2618bd9da71191bfc4b9) turn switch with one case into if Change-Id: I413f195bb5571eb536e948a7e9ffb982b3619e65 (cherry picked from commit 567cd9043c09e42d8521a6b81545994ae4539beb) Change-Id: Iab7a4caaca5dfdae16aa4f6ede565e26aa4c73c9 Reviewed-on: https://gerrit.libreoffice.org/33783 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--sw/source/uibase/utlui/content.cxx127
1 files changed, 61 insertions, 66 deletions
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx
index 0d241c773789..dd8a2bfbf50d 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -2670,86 +2670,81 @@ void SwContentTree::KeyInput(const KeyEvent& rEvent)
m_pActiveShell->GetView().GetViewFrame()->GetWindow().ToTop();
}
- SwContent* pCnt = static_cast<SwContent*>(pEntry->GetUserData());
+ SwContent* pCnt = dynamic_cast<SwContent*>(static_cast<SwTypeNumber*>(pEntry->GetUserData()));
- switch(pCnt->GetParent()->GetType())
+ if (pCnt && pCnt->GetParent()->GetType() == ContentTypeId::DRAWOBJECT)
{
- case ContentTypeId::DRAWOBJECT:
+ SdrView* pDrawView = m_pActiveShell->GetDrawView();
+ if (pDrawView)
{
- SdrView* pDrawView = m_pActiveShell->GetDrawView();
- if (pDrawView)
- {
- pDrawView->SdrEndTextEdit();//Change from "EndTextEdit" to "SdrEndTextEdit" for acc migration
+ pDrawView->SdrEndTextEdit();//Change from "EndTextEdit" to "SdrEndTextEdit" for acc migration
- SwDrawModel* pDrawModel = m_pActiveShell->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel();
- SdrPage* pPage = pDrawModel->GetPage(0);
- const size_t nCount = pPage->GetObjCount();
- bool hasObjectMarked = false;
+ SwDrawModel* pDrawModel = m_pActiveShell->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel();
+ SdrPage* pPage = pDrawModel->GetPage(0);
+ const size_t nCount = pPage->GetObjCount();
+ bool hasObjectMarked = false;
- SdrObject* pObject = nullptr;
- pObject = GetDrawingObjectsByContent( pCnt );
- if( pObject )
+ SdrObject* pObject = nullptr;
+ pObject = GetDrawingObjectsByContent( pCnt );
+ if( pObject )
+ {
+ SdrPageView* pPV = pDrawView->GetSdrPageView/*GetPageViewPvNum*/(/*0*/);
+ if( pPV )
{
- SdrPageView* pPV = pDrawView->GetSdrPageView/*GetPageViewPvNum*/(/*0*/);
- if( pPV )
- {
- bool bUnMark = pDrawView->IsObjMarked(pObject);
- pDrawView->MarkObj( pObject, pPV, bUnMark);
+ bool bUnMark = pDrawView->IsObjMarked(pObject);
+ pDrawView->MarkObj( pObject, pPV, bUnMark);
- }
}
- for( size_t i=0; i<nCount; ++i )
+ }
+ for( size_t i=0; i<nCount; ++i )
+ {
+ SdrObject* pTemp = pPage->GetObj(i);
+ bool bMark = pDrawView->IsObjMarked(pTemp);
+ switch( pTemp->GetObjIdentifier() )
{
- SdrObject* pTemp = pPage->GetObj(i);
- bool bMark = pDrawView->IsObjMarked(pTemp);
- switch( pTemp->GetObjIdentifier() )
- {
- case OBJ_GRUP:
- case OBJ_TEXT:
- case OBJ_TEXTEXT:
- case OBJ_wegFITTEXT:
- case OBJ_LINE:
- case OBJ_RECT:
- case OBJ_CIRC:
- case OBJ_SECT:
- case OBJ_CARC:
- case OBJ_CCUT:
- case OBJ_POLY:
- case OBJ_PLIN:
- case OBJ_PATHLINE:
- case OBJ_PATHFILL:
- case OBJ_FREELINE:
- case OBJ_FREEFILL:
- case OBJ_PATHPOLY:
- case OBJ_PATHPLIN:
- case OBJ_CAPTION:
- case OBJ_CUSTOMSHAPE:
- if( bMark )
- hasObjectMarked = true;
- break;
- default:
- if ( bMark )
+ case OBJ_GRUP:
+ case OBJ_TEXT:
+ case OBJ_TEXTEXT:
+ case OBJ_wegFITTEXT:
+ case OBJ_LINE:
+ case OBJ_RECT:
+ case OBJ_CIRC:
+ case OBJ_SECT:
+ case OBJ_CARC:
+ case OBJ_CCUT:
+ case OBJ_POLY:
+ case OBJ_PLIN:
+ case OBJ_PATHLINE:
+ case OBJ_PATHFILL:
+ case OBJ_FREELINE:
+ case OBJ_FREEFILL:
+ case OBJ_PATHPOLY:
+ case OBJ_PATHPLIN:
+ case OBJ_CAPTION:
+ case OBJ_CUSTOMSHAPE:
+ if( bMark )
+ hasObjectMarked = true;
+ break;
+ default:
+ if ( bMark )
+ {
+ SdrPageView* pPV = pDrawView->GetSdrPageView/*GetPageViewPvNum*/(/*0*/);
+ if (pPV)
{
- SdrPageView* pPV = pDrawView->GetSdrPageView/*GetPageViewPvNum*/(/*0*/);
- if (pPV)
- {
- pDrawView->MarkObj(pTemp, pPV, true);
- }
+ pDrawView->MarkObj(pTemp, pPV, true);
}
- }
- //mod end
- }
- if ( !hasObjectMarked )
- {
- SwEditWin& rEditWindow = m_pActiveShell->GetView().GetEditWin();
- vcl::KeyCode tempKeycode( KEY_ESCAPE );
- KeyEvent rKEvt( 0 , tempKeycode );
- static_cast<vcl::Window*>(&rEditWindow)->KeyInput( rKEvt );
+ }
}
+ //mod end
+ }
+ if ( !hasObjectMarked )
+ {
+ SwEditWin& rEditWindow = m_pActiveShell->GetView().GetEditWin();
+ vcl::KeyCode tempKeycode( KEY_ESCAPE );
+ KeyEvent rKEvt( 0 , tempKeycode );
+ static_cast<vcl::Window*>(&rEditWindow)->KeyInput( rKEvt );
}
}
- break;
- default: break;
}
m_bViewHasChanged = true;