diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2019-04-25 10:41:12 +0200 |
---|---|---|
committer | Xisco Faulí <xiscofauli@libreoffice.org> | 2019-04-25 15:22:04 +0200 |
commit | 7ec3baef938d62d16558b7ee7fd84eb02b206551 (patch) | |
tree | 0e3c8a13938989ae681ddda8c101aa10ec9fef46 /svx/source/accessibility | |
parent | 982137545d5263bfcc28e896708ec851b8bcce99 (diff) |
Convert remaining SdrHint to static_cast
follow-up of 10c934147d469965dba6abc78efd02759a010b8e
Change-Id: I2085173dffd71dbbc68a0574400bebe132626dd9
Reviewed-on: https://gerrit.libreoffice.org/71284
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org>
Diffstat (limited to 'svx/source/accessibility')
-rw-r--r-- | svx/source/accessibility/AccessibleEmptyEditSource.cxx | 2 | ||||
-rw-r--r-- | svx/source/accessibility/AccessibleTextHelper.cxx | 107 |
2 files changed, 54 insertions, 55 deletions
diff --git a/svx/source/accessibility/AccessibleEmptyEditSource.cxx b/svx/source/accessibility/AccessibleEmptyEditSource.cxx index 88fb69043cc1..dea02a4fc359 100644 --- a/svx/source/accessibility/AccessibleEmptyEditSource.cxx +++ b/svx/source/accessibility/AccessibleEmptyEditSource.cxx @@ -298,7 +298,7 @@ namespace accessibility void AccessibleEmptyEditSource::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) { - const SdrHint* pSdrHint = dynamic_cast<const SdrHint*>( &rHint ); + const SdrHint* pSdrHint = ( rHint.GetId() == SfxHintId::ThisIsAnSdrHint ? static_cast<const SdrHint*>(&rHint) : nullptr ); if( pSdrHint && pSdrHint->GetKind() == SdrHintKind::BeginEdit && &mrObj == pSdrHint->GetObject() && mpEditSource.get() ) diff --git a/svx/source/accessibility/AccessibleTextHelper.cxx b/svx/source/accessibility/AccessibleTextHelper.cxx index 8eae723f0653..f48771522017 100644 --- a/svx/source/accessibility/AccessibleTextHelper.cxx +++ b/svx/source/accessibility/AccessibleTextHelper.cxx @@ -1132,17 +1132,49 @@ namespace accessibility { const SfxHint& rHint = *pHint; - // determine hint type - const SdrHint* pSdrHint = dynamic_cast<const SdrHint*>( &rHint ); - const TextHint* pTextHint = dynamic_cast<const TextHint*>( &rHint ); - const SvxViewChangedHint* pViewHint = dynamic_cast<const SvxViewChangedHint*>( &rHint ); - const SvxEditSourceHint* pEditSourceHint = dynamic_cast<const SvxEditSourceHint*>( &rHint ); try { - const sal_Int32 nParas = GetTextForwarder().GetParagraphCount(); - if( pEditSourceHint ) + if (rHint.GetId() == SfxHintId::ThisIsAnSdrHint) + { + const SdrHint* pSdrHint = static_cast< const SdrHint* >( &rHint ); + + switch( pSdrHint->GetKind() ) + { + case SdrHintKind::BeginEdit: + { + if(!IsActive()) + { + break; + } + // change children state + maParaManager.SetActive(); + + // per definition, edit mode text has the focus + SetFocus( true ); + break; + } + + case SdrHintKind::EndEdit: + { + // focused child now loses focus + ESelection aSelection; + if( GetEditViewForwarder().GetSelection( aSelection ) ) + SetChildFocus( aSelection.nEndPara, false ); + + // change children state + maParaManager.SetActive( false ); + + maLastSelection = ESelection( EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND, + EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND); + break; + } + default: + break; + } + } + else if( const SvxEditSourceHint* pEditSourceHint = dynamic_cast<const SvxEditSourceHint*>( &rHint ) ) { switch( pEditSourceHint->GetId() ) { @@ -1176,8 +1208,10 @@ namespace accessibility default: break; } } - else if( pTextHint ) + else if( const TextHint* pTextHint = dynamic_cast<const TextHint*>( &rHint ) ) { + const sal_Int32 nParas = GetTextForwarder().GetParagraphCount(); + switch( pTextHint->GetId() ) { case SfxHintId::TextModified: @@ -1226,48 +1260,12 @@ namespace accessibility UpdateVisibleChildren(); UpdateBoundRect(); } - else if( pViewHint ) + else if ( dynamic_cast<const SvxViewChangedHint*>( &rHint ) ) { // just check visibility UpdateVisibleChildren(); UpdateBoundRect(); } - else if( pSdrHint ) - { - switch( pSdrHint->GetKind() ) - { - case SdrHintKind::BeginEdit: - { - if(!IsActive()) - { - break; - } - // change children state - maParaManager.SetActive(); - - // per definition, edit mode text has the focus - SetFocus( true ); - break; - } - - case SdrHintKind::EndEdit: - { - // focused child now loses focus - ESelection aSelection; - if( GetEditViewForwarder().GetSelection( aSelection ) ) - SetChildFocus( aSelection.nEndPara, false ); - - // change children state - maParaManager.SetActive( false ); - - maLastSelection = ESelection( EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND, - EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND); - break; - } - default: - break; - } - } // it's VITAL to keep the SfxSimpleHint last! It's the base of some classes above! else if( rHint.GetId() == SfxHintId::Dying) { @@ -1306,22 +1304,23 @@ namespace accessibility // occurrence to avoid unnecessary dynamic_cast. Note that // SvxEditSourceHint is derived from TextHint, so has to be checked // before that. - if( const SvxViewChangedHint* pViewHint = dynamic_cast<const SvxViewChangedHint*>( &rHint ) ) - { - // process visibility right away, if not within an - // open EE notification frame. Otherwise, event - // processing would be delayed until next EE - // notification sequence. - maEventQueue.Append( *pViewHint ); - } - else if( const SdrHint* pSdrHint = dynamic_cast<const SdrHint*>( &rHint ) ) + if (rHint.GetId() == SfxHintId::ThisIsAnSdrHint) { + const SdrHint* pSdrHint = static_cast< const SdrHint* >( &rHint ); // process drawing layer events right away, if not // within an open EE notification frame. Otherwise, // event processing would be delayed until next EE // notification sequence. maEventQueue.Append( *pSdrHint ); } + else if( const SvxViewChangedHint* pViewHint = dynamic_cast<const SvxViewChangedHint*>( &rHint ) ) + { + // process visibility right away, if not within an + // open EE notification frame. Otherwise, event + // processing would be delayed until next EE + // notification sequence. + maEventQueue.Append( *pViewHint ); + } else if( const SvxEditSourceHint* pEditSourceHint = dynamic_cast<const SvxEditSourceHint*>( &rHint ) ) { // EditEngine should emit TEXT_SELECTION_CHANGED events (#i27299#) |