sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx | 144 ++--- sd/source/ui/accessibility/AccessibleOutlineView.cxx | 30 - sd/source/ui/accessibility/AccessibleSlideSorterObject.cxx | 54 - sd/source/ui/accessibility/AccessibleSlideSorterView.cxx | 108 +-- sd/source/ui/animations/CustomAnimationDialog.cxx | 310 +++++------ sd/source/ui/animations/CustomAnimationList.cxx | 33 - sd/source/ui/animations/CustomAnimationPane.cxx | 365 ++++++------- sd/source/ui/animations/SlideTransitionPane.cxx | 60 +- sd/source/ui/animations/motionpathtag.cxx | 312 +++++------ sd/source/ui/annotations/annotationmanager.cxx | 318 +++++------ sd/source/ui/annotations/annotationtag.cxx | 224 +++---- sd/source/ui/annotations/annotationwindow.cxx | 148 ++--- sd/source/ui/app/optsitem.cxx | 212 +++---- sd/source/ui/app/sdmod1.cxx | 150 ++--- sd/source/ui/app/tmplctrl.cxx | 62 +- sd/source/ui/controller/displaymodecontroller.cxx | 25 sd/source/ui/dlg/LayerTabBar.cxx | 78 +- sd/source/ui/dlg/PaneDockingWindow.cxx | 32 - sd/source/ui/dlg/SpellDialogChildWindow.cxx | 78 +- sd/source/ui/dlg/animobjs.cxx | 254 ++++----- sd/source/ui/dlg/filedlg.cxx | 42 - sd/source/ui/dlg/headerfooterdlg.cxx | 118 ++-- sd/source/ui/dlg/navigatr.cxx | 136 ++-- sd/source/ui/dlg/sdpreslt.cxx | 100 +-- sd/source/ui/dlg/sdtreelb.cxx | 232 ++++---- sd/source/ui/dlg/tpaction.cxx | 72 +- sd/source/ui/dlg/tpoption.cxx | 52 - sd/source/ui/docshell/docshel2.cxx | 36 - sd/source/ui/docshell/docshel4.cxx | 325 +++++------ sd/source/ui/docshell/sdclient.cxx | 148 ++--- 30 files changed, 2136 insertions(+), 2122 deletions(-)
New commits: commit 6d2c720dccc3a9d2d0dcaeaa7d6014b7acc5708f Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Feb 14 09:12:41 2019 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Feb 15 13:47:49 2019 +0100 loplugin:flatten in sd/source/ui/[a-c]* Change-Id: I7e568e563d2097c7052dfd406396335f5ae36170 Reviewed-on: https://gerrit.libreoffice.org/67836 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx b/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx index f86604ca3775..d7852eb6cda6 100644 --- a/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx +++ b/sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx @@ -620,78 +620,78 @@ void const SolarMutexGuard aSolarGuard; uno::Reference< view::XSelectionSupplier > xSel( mxController, uno::UNO_QUERY ); - if( xSel.is() ) + if( !xSel.is() ) + return; + + uno::Any aAny; + + if( ACCESSIBLE_SELECTION_CHILD_ALL == nAccessibleChildIndex ) { - uno::Any aAny; + // Select or deselect all children. - if( ACCESSIBLE_SELECTION_CHILD_ALL == nAccessibleChildIndex ) + if( !bSelect ) + xSel->select( aAny ); + else { - // Select or deselect all children. + uno::Reference< drawing::XShapes > xShapes = drawing::ShapeCollection::create( + comphelper::getProcessComponentContext()); - if( !bSelect ) - xSel->select( aAny ); - else + for(sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i ) { - uno::Reference< drawing::XShapes > xShapes = drawing::ShapeCollection::create( - comphelper::getProcessComponentContext()); + AccessibleShape* pAcc = AccessibleShape::getImplementation( getAccessibleChild( i ) ); - for(sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i ) - { - AccessibleShape* pAcc = AccessibleShape::getImplementation( getAccessibleChild( i ) ); - - if( pAcc && pAcc->GetXShape().is() ) - xShapes->add( pAcc->GetXShape() ); - } + if( pAcc && pAcc->GetXShape().is() ) + xShapes->add( pAcc->GetXShape() ); + } - if( xShapes->getCount() ) - { - xSel->select( Any(xShapes) ); - } + if( xShapes->getCount() ) + { + xSel->select( Any(xShapes) ); } } - else if( nAccessibleChildIndex >= 0 ) - { - // Select or deselect only the child with index - // nAccessibleChildIndex. + } + else if( nAccessibleChildIndex >= 0 ) + { + // Select or deselect only the child with index + // nAccessibleChildIndex. - AccessibleShape* pAcc = AccessibleShape::getImplementation( - getAccessibleChild( nAccessibleChildIndex )); + AccessibleShape* pAcc = AccessibleShape::getImplementation( + getAccessibleChild( nAccessibleChildIndex )); - // Add or remove the shape that is made accessible from the - // selection of the controller. - if( pAcc ) - { - uno::Reference< drawing::XShape > xShape( pAcc->GetXShape() ); + // Add or remove the shape that is made accessible from the + // selection of the controller. + if( pAcc ) + { + uno::Reference< drawing::XShape > xShape( pAcc->GetXShape() ); - if( xShape.is() ) - { - uno::Reference< drawing::XShapes > xShapes; - bool bFound = false; + if( xShape.is() ) + { + uno::Reference< drawing::XShapes > xShapes; + bool bFound = false; - aAny = xSel->getSelection(); - aAny >>= xShapes; + aAny = xSel->getSelection(); + aAny >>= xShapes; - // Search shape to be selected in current selection. - if (xShapes.is()) - { - sal_Int32 nCount = xShapes->getCount(); - for (sal_Int32 i=0; ( i < nCount ) && !bFound; ++i ) - if( xShapes->getByIndex( i ) == xShape ) - bFound = true; - } - else - // Create an empty selection to add the shape to. - xShapes = drawing::ShapeCollection::create( - comphelper::getProcessComponentContext()); - - // Update the selection. - if( !bFound && bSelect ) - xShapes->add( xShape ); - else if( bFound && !bSelect ) - xShapes->remove( xShape ); - - xSel->select( Any(xShapes) ); + // Search shape to be selected in current selection. + if (xShapes.is()) + { + sal_Int32 nCount = xShapes->getCount(); + for (sal_Int32 i=0; ( i < nCount ) && !bFound; ++i ) + if( xShapes->getByIndex( i ) == xShape ) + bFound = true; } + else + // Create an empty selection to add the shape to. + xShapes = drawing::ShapeCollection::create( + comphelper::getProcessComponentContext()); + + // Update the selection. + if( !bFound && bSelect ) + xShapes->add( xShape ); + else if( bFound && !bSelect ) + xShapes->remove( xShape ); + + xSel->select( Any(xShapes) ); } } } @@ -699,23 +699,23 @@ void void AccessibleDrawDocumentView::Activated() { - if (mpChildrenManager != nullptr) + if (mpChildrenManager == nullptr) + return; + + bool bChange = false; + // When none of the children has the focus then claim it for the + // view. + if ( ! mpChildrenManager->HasFocus()) { - bool bChange = false; - // When none of the children has the focus then claim it for the - // view. - if ( ! mpChildrenManager->HasFocus()) - { - SetState (AccessibleStateType::FOCUSED); - bChange = true; - } - else - ResetState (AccessibleStateType::FOCUSED); - mpChildrenManager->UpdateSelection(); - // if the child gets focus in UpdateSelection(), needs to reset the focus on document. - if (mpChildrenManager->HasFocus() && bChange) - ResetState (AccessibleStateType::FOCUSED); + SetState (AccessibleStateType::FOCUSED); + bChange = true; } + else + ResetState (AccessibleStateType::FOCUSED); + mpChildrenManager->UpdateSelection(); + // if the child gets focus in UpdateSelection(), needs to reset the focus on document. + if (mpChildrenManager->HasFocus() && bChange) + ResetState (AccessibleStateType::FOCUSED); } void AccessibleDrawDocumentView::Deactivated() diff --git a/sd/source/ui/accessibility/AccessibleOutlineView.cxx b/sd/source/ui/accessibility/AccessibleOutlineView.cxx index 1e71a03cc8ae..9e165b4c2686 100644 --- a/sd/source/ui/accessibility/AccessibleOutlineView.cxx +++ b/sd/source/ui/accessibility/AccessibleOutlineView.cxx @@ -70,23 +70,23 @@ AccessibleOutlineView::AccessibleOutlineView ( // Beware! Here we leave the paths of the UNO API and descend into the // depths of the core. Necessary for making the edit engine accessible. - if (pSdWindow) - { - ::sd::View* pView = pViewShell->GetView(); + if (!pSdWindow) + return; - if (dynamic_cast<const ::sd::OutlineView* >( pView ) != nullptr) - { - OutlinerView* pOutlineView = static_cast< ::sd::OutlineView*>( - pView)->GetViewByWindow( pSdWindow ); - SdrOutliner& rOutliner = - static_cast< ::sd::OutlineView*>(pView)->GetOutliner(); + ::sd::View* pView = pViewShell->GetView(); - if( pOutlineView ) - { - maTextHelper.SetEditSource( ::std::unique_ptr< SvxEditSource >( new AccessibleOutlineEditSource( - rOutliner, *pView, *pOutlineView, *pSdWindow ) ) ); - } - } + if (dynamic_cast<const ::sd::OutlineView* >( pView ) == nullptr) + return; + + OutlinerView* pOutlineView = static_cast< ::sd::OutlineView*>( + pView)->GetViewByWindow( pSdWindow ); + SdrOutliner& rOutliner = + static_cast< ::sd::OutlineView*>(pView)->GetOutliner(); + + if( pOutlineView ) + { + maTextHelper.SetEditSource( ::std::unique_ptr< SvxEditSource >( new AccessibleOutlineEditSource( + rOutliner, *pView, *pOutlineView, *pSdWindow ) ) ); } } diff --git a/sd/source/ui/accessibility/AccessibleSlideSorterObject.cxx b/sd/source/ui/accessibility/AccessibleSlideSorterObject.cxx index 50358ef51b90..63ab93880137 100644 --- a/sd/source/ui/accessibility/AccessibleSlideSorterObject.cxx +++ b/sd/source/ui/accessibility/AccessibleSlideSorterObject.cxx @@ -233,21 +233,21 @@ lang::Locale SAL_CALL AccessibleSlideSorterObject::getLocale() void SAL_CALL AccessibleSlideSorterObject::addAccessibleEventListener( const Reference<XAccessibleEventListener>& rxListener) { - if (rxListener.is()) - { - const osl::MutexGuard aGuard(maMutex); + if (!rxListener.is()) + return; - if (IsDisposed()) - { - uno::Reference<uno::XInterface> x (static_cast<lang::XComponent *>(this), uno::UNO_QUERY); - rxListener->disposing (lang::EventObject (x)); - } - else - { - if (mnClientId == 0) - mnClientId = comphelper::AccessibleEventNotifier::registerClient(); - comphelper::AccessibleEventNotifier::addEventListener(mnClientId, rxListener); - } + const osl::MutexGuard aGuard(maMutex); + + if (IsDisposed()) + { + uno::Reference<uno::XInterface> x (static_cast<lang::XComponent *>(this), uno::UNO_QUERY); + rxListener->disposing (lang::EventObject (x)); + } + else + { + if (mnClientId == 0) + mnClientId = comphelper::AccessibleEventNotifier::registerClient(); + comphelper::AccessibleEventNotifier::addEventListener(mnClientId, rxListener); } } @@ -255,20 +255,20 @@ void SAL_CALL AccessibleSlideSorterObject::removeAccessibleEventListener( const Reference<XAccessibleEventListener>& rxListener) { ThrowIfDisposed(); - if (rxListener.is() && mnClientId) - { - const osl::MutexGuard aGuard(maMutex); + if (!(rxListener.is() && mnClientId)) + return; - sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( mnClientId, rxListener ); - if ( !nListenerCount ) - { - // no listeners anymore - // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client), - // and at least to us not firing any events anymore, in case somebody calls - // NotifyAccessibleEvent, again - comphelper::AccessibleEventNotifier::revokeClient( mnClientId ); - mnClientId = 0; - } + const osl::MutexGuard aGuard(maMutex); + + sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( mnClientId, rxListener ); + if ( !nListenerCount ) + { + // no listeners anymore + // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client), + // and at least to us not firing any events anymore, in case somebody calls + // NotifyAccessibleEvent, again + comphelper::AccessibleEventNotifier::revokeClient( mnClientId ); + mnClientId = 0; } } diff --git a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx index ef6b37566a0c..401faab3cebf 100644 --- a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx +++ b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx @@ -320,21 +320,21 @@ lang::Locale SAL_CALL AccessibleSlideSorterView::getLocale() void SAL_CALL AccessibleSlideSorterView::addAccessibleEventListener( const Reference<XAccessibleEventListener >& rxListener) { - if (rxListener.is()) - { - const osl::MutexGuard aGuard(maMutex); + if (!rxListener.is()) + return; - if (rBHelper.bDisposed || rBHelper.bInDispose) - { - uno::Reference<uno::XInterface> x (static_cast<lang::XComponent *>(this), uno::UNO_QUERY); - rxListener->disposing (lang::EventObject (x)); - } - else - { - if ( ! mnClientId) - mnClientId = comphelper::AccessibleEventNotifier::registerClient(); - comphelper::AccessibleEventNotifier::addEventListener(mnClientId, rxListener); - } + const osl::MutexGuard aGuard(maMutex); + + if (rBHelper.bDisposed || rBHelper.bInDispose) + { + uno::Reference<uno::XInterface> x (static_cast<lang::XComponent *>(this), uno::UNO_QUERY); + rxListener->disposing (lang::EventObject (x)); + } + else + { + if ( ! mnClientId) + mnClientId = comphelper::AccessibleEventNotifier::registerClient(); + comphelper::AccessibleEventNotifier::addEventListener(mnClientId, rxListener); } } @@ -342,24 +342,24 @@ void SAL_CALL AccessibleSlideSorterView::removeAccessibleEventListener( const Reference<XAccessibleEventListener >& rxListener) { ThrowIfDisposed(); - if (rxListener.is()) - { - const osl::MutexGuard aGuard(maMutex); + if (!rxListener.is()) + return; - if (mnClientId != 0) - { - sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( - mnClientId, rxListener ); - if ( !nListenerCount ) - { - // no listeners anymore -> revoke ourself. This may lead to - // the notifier thread dying (if we were the last client), - // and at least to us not firing any events anymore, in case - // somebody calls NotifyAccessibleEvent, again - comphelper::AccessibleEventNotifier::revokeClient( mnClientId ); - mnClientId = 0; - } - } + const osl::MutexGuard aGuard(maMutex); + + if (mnClientId == 0) + return; + + sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( + mnClientId, rxListener ); + if ( !nListenerCount ) + { + // no listeners anymore -> revoke ourself. This may lead to + // the notifier thread dying (if we were the last client), + // and at least to us not firing any events anymore, in case + // somebody calls NotifyAccessibleEvent, again + comphelper::AccessibleEventNotifier::revokeClient( mnClientId ); + mnClientId = 0; } } @@ -903,35 +903,35 @@ IMPL_LINK_NOARG(AccessibleSlideSorterView::Implementation, FocusChangeListener, // add a checker whether the focus event is sent out. Only after sent, the mnFocusedIndex should be updated. bool bSentFocus = false; - if (nNewFocusedIndex != mnFocusedIndex) + if (nNewFocusedIndex == mnFocusedIndex) + return; + + if (mnFocusedIndex >= 0) { - if (mnFocusedIndex >= 0) + AccessibleSlideSorterObject* pObject = GetAccessibleChild(mnFocusedIndex); + if (pObject != nullptr) { - AccessibleSlideSorterObject* pObject = GetAccessibleChild(mnFocusedIndex); - if (pObject != nullptr) - { - pObject->FireAccessibleEvent( - AccessibleEventId::STATE_CHANGED, - Any(AccessibleStateType::FOCUSED), - Any()); - bSentFocus = true; - } + pObject->FireAccessibleEvent( + AccessibleEventId::STATE_CHANGED, + Any(AccessibleStateType::FOCUSED), + Any()); + bSentFocus = true; } - if (nNewFocusedIndex >= 0) + } + if (nNewFocusedIndex >= 0) + { + AccessibleSlideSorterObject* pObject = GetAccessibleChild(nNewFocusedIndex); + if (pObject != nullptr) { - AccessibleSlideSorterObject* pObject = GetAccessibleChild(nNewFocusedIndex); - if (pObject != nullptr) - { - pObject->FireAccessibleEvent( - AccessibleEventId::STATE_CHANGED, - Any(), - Any(AccessibleStateType::FOCUSED)); - bSentFocus = true; - } + pObject->FireAccessibleEvent( + AccessibleEventId::STATE_CHANGED, + Any(), + Any(AccessibleStateType::FOCUSED)); + bSentFocus = true; } - if (bSentFocus) - mnFocusedIndex = nNewFocusedIndex; } + if (bSentFocus) + mnFocusedIndex = nNewFocusedIndex; } IMPL_LINK_NOARG(AccessibleSlideSorterView::Implementation, UpdateChildrenCallback, void*, void) diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx b/sd/source/ui/animations/CustomAnimationDialog.cxx index cc62a28e169c..6581de2a0f05 100644 --- a/sd/source/ui/animations/CustomAnimationDialog.cxx +++ b/sd/source/ui/animations/CustomAnimationDialog.cxx @@ -129,35 +129,35 @@ IMPL_LINK_NOARG(PresetPropertyBox, OnSelect, ListBox&, void) void PresetPropertyBox::setValue( const Any& rValue, const OUString& rPresetId ) { - if( mpControl ) - { - mpControl->Clear(); + if( !mpControl ) + return; - const CustomAnimationPresets& rPresets = CustomAnimationPresets::getCustomAnimationPresets(); - CustomAnimationPresetPtr pDescriptor = rPresets.getEffectDescriptor( rPresetId ); - if( pDescriptor.get() ) - { + mpControl->Clear(); - OUString aPropertyValue; - rValue >>= aPropertyValue; + const CustomAnimationPresets& rPresets = CustomAnimationPresets::getCustomAnimationPresets(); + CustomAnimationPresetPtr pDescriptor = rPresets.getEffectDescriptor( rPresetId ); + if( pDescriptor.get() ) + { - std::vector<OUString> aSubTypes( pDescriptor->getSubTypes() ); + OUString aPropertyValue; + rValue >>= aPropertyValue; - mpControl->Enable( !aSubTypes.empty() ); + std::vector<OUString> aSubTypes( pDescriptor->getSubTypes() ); - for( auto& aSubType : aSubTypes ) - { - sal_Int32 nPos = mpControl->InsertEntry( rPresets.getUINameForProperty( aSubType ) ); - if( aSubType == aPropertyValue ) - mpControl->SelectEntryPos( nPos ); - maPropertyValues[nPos] = aSubType; - } - } - else + mpControl->Enable( !aSubTypes.empty() ); + + for( auto& aSubType : aSubTypes ) { - mpControl->Enable( false ); + sal_Int32 nPos = mpControl->InsertEntry( rPresets.getUINameForProperty( aSubType ) ); + if( aSubType == aPropertyValue ) + mpControl->SelectEntryPos( nPos ); + maPropertyValues[nPos] = aSubType; } } + else + { + mpControl->Enable( false ); + } } PresetPropertyBox::~PresetPropertyBox() @@ -214,40 +214,40 @@ IMPL_LINK_NOARG(SdPresetPropertyBox, OnSelect, weld::ComboBox&, void) void SdPresetPropertyBox::setValue( const Any& rValue, const OUString& rPresetId ) { - if (mxControl) - { - mxControl->freeze(); - mxControl->clear(); - int nPos = -1; + if (!mxControl) + return; - const CustomAnimationPresets& rPresets = CustomAnimationPresets::getCustomAnimationPresets(); - CustomAnimationPresetPtr pDescriptor = rPresets.getEffectDescriptor( rPresetId ); - if( pDescriptor.get() ) - { + mxControl->freeze(); + mxControl->clear(); + int nPos = -1; - OUString aPropertyValue; - rValue >>= aPropertyValue; + const CustomAnimationPresets& rPresets = CustomAnimationPresets::getCustomAnimationPresets(); + CustomAnimationPresetPtr pDescriptor = rPresets.getEffectDescriptor( rPresetId ); + if( pDescriptor.get() ) + { - std::vector<OUString> aSubTypes( pDescriptor->getSubTypes() ); + OUString aPropertyValue; + rValue >>= aPropertyValue; - mxControl->set_sensitive(!aSubTypes.empty()); + std::vector<OUString> aSubTypes( pDescriptor->getSubTypes() ); - for( auto& aSubType : aSubTypes ) - { - mxControl->append_text(rPresets.getUINameForProperty(aSubType)); - maPropertyValues.push_back(aSubType); - if (aSubType == aPropertyValue) - nPos = maPropertyValues.size() - 1; - } - } - else + mxControl->set_sensitive(!aSubTypes.empty()); + + for( auto& aSubType : aSubTypes ) { - mxControl->set_sensitive(false); + mxControl->append_text(rPresets.getUINameForProperty(aSubType)); + maPropertyValues.push_back(aSubType); + if (aSubType == aPropertyValue) + nPos = maPropertyValues.size() - 1; } - mxControl->thaw(); - if (nPos != -1) - mxControl->set_active(nPos); } + else + { + mxControl->set_sensitive(false); + } + mxControl->thaw(); + if (nPos != -1) + mxControl->set_active(nPos); } Any SdPresetPropertyBox::getValue() @@ -1266,41 +1266,41 @@ IMPL_LINK( ScalePropertyBox, implMenuSelectHdl, MenuButton*, pPb, void ) void ScalePropertyBox::setValue( const Any& rValue, const OUString& ) { - if( mpMetric.get() ) - { - ValuePair aValues; - rValue >>= aValues; + if( !mpMetric.get() ) + return; - double fValue1 = 0.0; - double fValue2 = 0.0; + ValuePair aValues; + rValue >>= aValues; - aValues.First >>= fValue1; - aValues.Second >>= fValue2; + double fValue1 = 0.0; + double fValue2 = 0.0; - if( fValue2 == 0.0 ) - mnDirection = 1; - else if( fValue1 == 0.0 ) - mnDirection = 2; - else - mnDirection = 3; - - // Shrink animation is represented by negative value - // Shrink factor is calculated as (1 + $fValue) - // e.g 1 + (-0.75) = 0.25 => shrink to 25% of the size - // 0.25 = -0.75 + 1 - if ( fValue1 < 0.0 ) - fValue1 += 1; - if ( fValue2 < 0.0 ) - fValue2 += 1; - - long nValue; - if( fValue1 ) - nValue = static_cast<long>(fValue1 * 100.0); - else - nValue = static_cast<long>(fValue2 * 100.0); - mpMetric->SetValue( nValue ); - updateMenu(); - } + aValues.First >>= fValue1; + aValues.Second >>= fValue2; + + if( fValue2 == 0.0 ) + mnDirection = 1; + else if( fValue1 == 0.0 ) + mnDirection = 2; + else + mnDirection = 3; + + // Shrink animation is represented by negative value + // Shrink factor is calculated as (1 + $fValue) + // e.g 1 + (-0.75) = 0.25 => shrink to 25% of the size + // 0.25 = -0.75 + 1 + if ( fValue1 < 0.0 ) + fValue1 += 1; + if ( fValue2 < 0.0 ) + fValue2 += 1; + + long nValue; + if( fValue1 ) + nValue = static_cast<long>(fValue1 * 100.0); + else + nValue = static_cast<long>(fValue2 * 100.0); + mpMetric->SetValue( nValue ); + updateMenu(); } Any ScalePropertyBox::getValue() @@ -1430,41 +1430,41 @@ IMPL_LINK(SdScalePropertyBox, implMenuSelectHdl, const OString&, rIdent, void) void SdScalePropertyBox::setValue(const Any& rValue, const OUString&) { - if (mxMetric) - { - ValuePair aValues; - rValue >>= aValues; + if (!mxMetric) + return; - double fValue1 = 0.0; - double fValue2 = 0.0; + ValuePair aValues; + rValue >>= aValues; - aValues.First >>= fValue1; - aValues.Second >>= fValue2; + double fValue1 = 0.0; + double fValue2 = 0.0; - if( fValue2 == 0.0 ) - mnDirection = 1; - else if( fValue1 == 0.0 ) - mnDirection = 2; - else - mnDirection = 3; - - // Shrink animation is represented by negative value - // Shrink factor is calculated as (1 + $fValue) - // e.g 1 + (-0.75) = 0.25 => shrink to 25% of the size - // 0.25 = -0.75 + 1 - if ( fValue1 < 0.0 ) - fValue1 += 1; - if ( fValue2 < 0.0 ) - fValue2 += 1; - - long nValue; - if( fValue1 ) - nValue = static_cast<long>(fValue1 * 100.0); - else - nValue = static_cast<long>(fValue2 * 100.0); - mxMetric->set_value(nValue, FieldUnit::PERCENT); - updateMenu(); - } + aValues.First >>= fValue1; + aValues.Second >>= fValue2; + + if( fValue2 == 0.0 ) + mnDirection = 1; + else if( fValue1 == 0.0 ) + mnDirection = 2; + else + mnDirection = 3; + + // Shrink animation is represented by negative value + // Shrink factor is calculated as (1 + $fValue) + // e.g 1 + (-0.75) = 0.25 => shrink to 25% of the size + // 0.25 = -0.75 + 1 + if ( fValue1 < 0.0 ) + fValue1 += 1; + if ( fValue2 < 0.0 ) + fValue2 += 1; + + long nValue; + if( fValue1 ) + nValue = static_cast<long>(fValue1 * 100.0); + else + nValue = static_cast<long>(fValue2 * 100.0); + mxMetric->set_value(nValue, FieldUnit::PERCENT); + updateMenu(); } Any SdScalePropertyBox::getValue() @@ -2126,31 +2126,31 @@ void CustomAnimationEffectTabPage::update( STLPropertySet* pSet ) } nPos = mxLBSound->get_active(); - if (nPos != -1) - { - Any aNewSoundURL, aOldSoundURL( makeAny( sal_Int32(0) ) ); + if (nPos == -1) + return; - if( nPos == 0 ) - { - // 0 means no sound, so leave any empty - } - else if( nPos == 1 ) - { - // this means stop sound - aNewSoundURL <<= true; - } - else - { - OUString aSoundURL( maSoundList[ nPos-2 ] ); - aNewSoundURL <<= aSoundURL; - } + Any aNewSoundURL, aOldSoundURL( makeAny( sal_Int32(0) ) ); - if( mpSet->getPropertyState( nHandleSoundURL ) != STLPropertyState::Ambiguous ) - aOldSoundURL = mpSet->getPropertyValue( nHandleSoundURL ); - - if( aNewSoundURL != aOldSoundURL ) - pSet->setPropertyValue( nHandleSoundURL, aNewSoundURL ); + if( nPos == 0 ) + { + // 0 means no sound, so leave any empty } + else if( nPos == 1 ) + { + // this means stop sound + aNewSoundURL <<= true; + } + else + { + OUString aSoundURL( maSoundList[ nPos-2 ] ); + aNewSoundURL <<= aSoundURL; + } + + if( mpSet->getPropertyState( nHandleSoundURL ) != STLPropertyState::Ambiguous ) + aOldSoundURL = mpSet->getPropertyValue( nHandleSoundURL ); + + if( aNewSoundURL != aOldSoundURL ) + pSet->setPropertyValue( nHandleSoundURL, aNewSoundURL ); } void CustomAnimationEffectTabPage::fillSoundListBox() @@ -2416,33 +2416,33 @@ CustomAnimationDurationTabPage::CustomAnimationDurationTabPage(weld::Container* Reference< XDrawPage > xCurrentPage; pSet->getPropertyValue( nHandleCurrentPage ) >>= xCurrentPage; - if( xCurrentPage.is() ) - { - const OUString aStrIsEmptyPresObj( "IsEmptyPresentationObject" ); + if( !xCurrentPage.is() ) + return; - sal_Int32 nShape, nCount = xCurrentPage->getCount(); - for( nShape = 0; nShape < nCount; nShape++ ) - { - Reference< XShape > xShape( xCurrentPage->getByIndex( nShape ), UNO_QUERY ); + const OUString aStrIsEmptyPresObj( "IsEmptyPresentationObject" ); - if( !xShape.is() ) - continue; + sal_Int32 nShape, nCount = xCurrentPage->getCount(); + for( nShape = 0; nShape < nCount; nShape++ ) + { + Reference< XShape > xShape( xCurrentPage->getByIndex( nShape ), UNO_QUERY ); - Reference< XPropertySet > xSet( xShape, UNO_QUERY ); - if( xSet.is() && xSet->getPropertySetInfo()->hasPropertyByName( aStrIsEmptyPresObj ) ) - { - bool bIsEmpty = false; - xSet->getPropertyValue( aStrIsEmptyPresObj ) >>= bIsEmpty; - if( bIsEmpty ) - continue; - } + if( !xShape.is() ) + continue; - OUString aDescription( getShapeDescription( xShape, true ) ); - mxLBTrigger->append(OUString::number(nShape), aDescription); - auto nPos = mxLBTrigger->get_count() - 1; - if (xShape == xTrigger) - mxLBTrigger->set_active(nPos); + Reference< XPropertySet > xSet( xShape, UNO_QUERY ); + if( xSet.is() && xSet->getPropertySetInfo()->hasPropertyByName( aStrIsEmptyPresObj ) ) + { + bool bIsEmpty = false; + xSet->getPropertyValue( aStrIsEmptyPresObj ) >>= bIsEmpty; + if( bIsEmpty ) + continue; } + + OUString aDescription( getShapeDescription( xShape, true ) ); + mxLBTrigger->append(OUString::number(nShape), aDescription); + auto nPos = mxLBTrigger->get_count() - 1; + if (xShape == xTrigger) + mxLBTrigger->set_active(nPos); } } diff --git a/sd/source/ui/animations/CustomAnimationList.cxx b/sd/source/ui/animations/CustomAnimationList.cxx index 306aaecfd15b..659d622a3ffe 100644 --- a/sd/source/ui/animations/CustomAnimationList.cxx +++ b/sd/source/ui/animations/CustomAnimationList.cxx @@ -1002,7 +1002,10 @@ void CustomAnimationList::append( CustomAnimationEffectPtr pEffect ) OUString aDescription; Any aTarget( pEffect->getTarget() ); - if( aTarget.hasValue() ) try + if( !aTarget.hasValue() ) + return; + + try { aDescription = getDescription( aTarget, pEffect->getTargetSubItem() != ShapeAnimationSubType::ONLY_BACKGROUND ); @@ -1239,24 +1242,24 @@ void CustomAnimationList::Paint(vcl::RenderContext& rRenderContext, const ::tool SvTreeListBox::Paint(rRenderContext, rRect); // draw help text if list box is still empty - if( First() == nullptr ) - { - Color aOldColor(rRenderContext.GetTextColor()); - rRenderContext.SetTextColor(rRenderContext.GetSettings().GetStyleSettings().GetDisableColor()); - ::Point aOffset(rRenderContext.LogicToPixel(Point(6, 6), MapMode(MapUnit::MapAppFont))); + if( First() != nullptr ) + return; - ::tools::Rectangle aRect(Point(0,0), GetOutputSizePixel()); + Color aOldColor(rRenderContext.GetTextColor()); + rRenderContext.SetTextColor(rRenderContext.GetSettings().GetStyleSettings().GetDisableColor()); + ::Point aOffset(rRenderContext.LogicToPixel(Point(6, 6), MapMode(MapUnit::MapAppFont))); - aRect.AdjustLeft(aOffset.X() ); - aRect.AdjustTop(aOffset.Y() ); - aRect.AdjustRight( -(aOffset.X()) ); - aRect.AdjustBottom( -(aOffset.Y()) ); + ::tools::Rectangle aRect(Point(0,0), GetOutputSizePixel()); - rRenderContext.DrawText(aRect, SdResId(STR_CUSTOMANIMATION_LIST_HELPTEXT), - DrawTextFlags::MultiLine | DrawTextFlags::WordBreak | DrawTextFlags::Center | DrawTextFlags::VCenter ); + aRect.AdjustLeft(aOffset.X() ); + aRect.AdjustTop(aOffset.Y() ); + aRect.AdjustRight( -(aOffset.X()) ); + aRect.AdjustBottom( -(aOffset.Y()) ); - rRenderContext.SetTextColor(aOldColor); - } + rRenderContext.DrawText(aRect, SdResId(STR_CUSTOMANIMATION_LIST_HELPTEXT), + DrawTextFlags::MultiLine | DrawTextFlags::WordBreak | DrawTextFlags::Center | DrawTextFlags::VCenter ); + + rRenderContext.SetTextColor(aOldColor); } } diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx index dad65336ab45..a7e55e344648 100644 --- a/sd/source/ui/animations/CustomAnimationPane.cxx +++ b/sd/source/ui/animations/CustomAnimationPane.cxx @@ -842,21 +842,21 @@ void CustomAnimationPane::updateMotionPathTags() void CustomAnimationPane::onSelectionChanged() { - if( !maSelectionLock.isLocked() ) - { - ScopeLockGuard aGuard( maSelectionLock ); + if( maSelectionLock.isLocked() ) + return; - if( mxView.is() ) try - { - Reference< XSelectionSupplier > xSel( mxView, UNO_QUERY_THROW ); - maViewSelection = xSel->getSelection(); - mpCustomAnimationList->onSelectionChanged( maViewSelection ); - updateControls(); - } - catch( Exception& ) - { - OSL_FAIL( "sd::CustomAnimationPane::onSelectionChanged(), Exception caught!" ); - } + ScopeLockGuard aGuard( maSelectionLock ); + + if( mxView.is() ) try + { + Reference< XSelectionSupplier > xSel( mxView, UNO_QUERY_THROW ); + maViewSelection = xSel->getSelection(); + mpCustomAnimationList->onSelectionChanged( maViewSelection ); + updateControls(); + } + catch( Exception& ) + { + OSL_FAIL( "sd::CustomAnimationPane::onSelectionChanged(), Exception caught!" ); } } @@ -891,19 +891,19 @@ void CustomAnimationPane::DataChanged (const DataChangedEvent&) void CustomAnimationPane::UpdateLook() { - if( !mbHorizontal ) - { - Wallpaper aBackground ( - ::sfx2::sidebar::Theme::GetWallpaper( - ::sfx2::sidebar::Theme::Paint_PanelBackground)); - SetBackground(aBackground); - if (mpFTStart != nullptr) - mpFTStart->SetBackground(aBackground); - if (mpFTProperty != nullptr) - mpFTProperty->SetBackground(aBackground); - if (mpFTDuration != nullptr) - mpFTDuration->SetBackground(aBackground); - } + if( mbHorizontal ) + return; + + Wallpaper aBackground ( + ::sfx2::sidebar::Theme::GetWallpaper( + ::sfx2::sidebar::Theme::Paint_PanelBackground)); + SetBackground(aBackground); + if (mpFTStart != nullptr) + mpFTStart->SetBackground(aBackground); + if (mpFTProperty != nullptr) + mpFTProperty->SetBackground(aBackground); + if (mpFTDuration != nullptr) + mpFTDuration->SetBackground(aBackground); } static void addValue( const std::unique_ptr<STLPropertySet>& pSet, sal_Int32 nHandle, const Any& rValue ) @@ -1659,7 +1659,10 @@ void CustomAnimationPane::showOptions(const OString& rPage) void CustomAnimationPane::onChangeCurrentPage() { - if( mxView.is() ) try + if( !mxView.is() ) + return; + + try { Reference< XDrawPage > xNewPage( mxView->getCurrentPage() ); if( xNewPage != mxCurrentPage ) @@ -1863,23 +1866,23 @@ void CustomAnimationPane::onAdd() void CustomAnimationPane::onRemove() { - if( !maListSelection.empty() ) - { - addUndo(); + if( maListSelection.empty() ) + return; - MainSequenceRebuildGuard aGuard( mpMainSequence ); + addUndo(); - EffectSequence aList( maListSelection ); + MainSequenceRebuildGuard aGuard( mpMainSequence ); - for( CustomAnimationEffectPtr& pEffect : aList ) - { - if( pEffect->getEffectSequence() ) - pEffect->getEffectSequence()->remove( pEffect ); - } + EffectSequence aList( maListSelection ); - maListSelection.clear(); - mrBase.GetDocShell()->SetModified(); + for( CustomAnimationEffectPtr& pEffect : aList ) + { + if( pEffect->getEffectSequence() ) + pEffect->getEffectSequence()->remove( pEffect ); } + + maListSelection.clear(); + mrBase.GetDocShell()->SetModified(); } void CustomAnimationPane::remove( CustomAnimationEffectPtr const & pEffect ) @@ -1894,20 +1897,20 @@ void CustomAnimationPane::remove( CustomAnimationEffectPtr const & pEffect ) void CustomAnimationPane::onChangeStart() { - if( mpLBStart->GetSelectedEntryCount() == 1 ) - { - sal_Int16 nNodeType; - switch( mpLBStart->GetSelectedEntryPos() ) - { - case 0: nNodeType = EffectNodeType::ON_CLICK; break; - case 1: nNodeType = EffectNodeType::WITH_PREVIOUS; break; - case 2: nNodeType = EffectNodeType::AFTER_PREVIOUS; break; - default: - return; - } + if( mpLBStart->GetSelectedEntryCount() != 1 ) + return; - onChangeStart( nNodeType ); + sal_Int16 nNodeType; + switch( mpLBStart->GetSelectedEntryPos() ) + { + case 0: nNodeType = EffectNodeType::ON_CLICK; break; + case 1: nNodeType = EffectNodeType::WITH_PREVIOUS; break; + case 2: nNodeType = EffectNodeType::AFTER_PREVIOUS; break; + default: + return; } + + onChangeStart( nNodeType ); } void CustomAnimationPane::onChangeStart( sal_Int16 nNodeType ) @@ -2007,23 +2010,23 @@ void CustomAnimationPane::createPath( PathKind eKind, std::vector< Any >& rTarge default: break; } - if( nSID ) - { - DrawViewShell* pViewShell = dynamic_cast< DrawViewShell* >( - FrameworkHelper::Instance(mrBase)->GetViewShell(FrameworkHelper::msCenterPaneURL).get()); + if( !nSID ) + return; - if( pViewShell ) - { - DrawView* pView = pViewShell->GetDrawView(); - if( pView ) - pView->UnmarkAllObj(); + DrawViewShell* pViewShell = dynamic_cast< DrawViewShell* >( + FrameworkHelper::Instance(mrBase)->GetViewShell(FrameworkHelper::msCenterPaneURL).get()); - std::vector< Any > aTargets( 1, Any( fDuration ) ); - aTargets.insert( aTargets.end(), rTargets.begin(), rTargets.end() ); - Sequence< Any > aTargetSequence( comphelper::containerToSequence( aTargets ) ); - const SfxUnoAnyItem aItem( SID_ADD_MOTION_PATH, Any( aTargetSequence ) ); - pViewShell->GetViewFrame()->GetDispatcher()->ExecuteList( nSID, SfxCallMode::ASYNCHRON, {&aItem} ); - } + if( pViewShell ) + { + DrawView* pView = pViewShell->GetDrawView(); + if( pView ) + pView->UnmarkAllObj(); + + std::vector< Any > aTargets( 1, Any( fDuration ) ); + aTargets.insert( aTargets.end(), rTargets.begin(), rTargets.end() ); + Sequence< Any > aTargetSequence( comphelper::containerToSequence( aTargets ) ); + const SfxUnoAnyItem aItem( SID_ADD_MOTION_PATH, Any( aTargetSequence ) ); + pViewShell->GetViewFrame()->GetDispatcher()->ExecuteList( nSID, SfxCallMode::ASYNCHRON, {&aItem} ); } } @@ -2031,32 +2034,32 @@ void CustomAnimationPane::createPath( PathKind eKind, std::vector< Any >& rTarge /// this link is called when the property box is modified by the user IMPL_LINK_NOARG(CustomAnimationPane, implPropertyHdl, LinkParamNone*, void) { - if( mpLBProperty->getSubControl() ) - { - addUndo(); + if( !mpLBProperty->getSubControl() ) + return; - MainSequenceRebuildGuard aGuard( mpMainSequence ); + addUndo(); - const Any aValue( mpLBProperty->getSubControl()->getValue() ); + MainSequenceRebuildGuard aGuard( mpMainSequence ); - bool bNeedUpdate = false; + const Any aValue( mpLBProperty->getSubControl()->getValue() ); - // change selected effect - for( CustomAnimationEffectPtr& pEffect : maListSelection ) - { - if( setProperty1Value( mnPropertyType, pEffect, aValue ) ) - bNeedUpdate = true; - } + bool bNeedUpdate = false; - if( bNeedUpdate ) - { - mpMainSequence->rebuild(); - updateControls(); - mrBase.GetDocShell()->SetModified(); - } + // change selected effect + for( CustomAnimationEffectPtr& pEffect : maListSelection ) + { + if( setProperty1Value( mnPropertyType, pEffect, aValue ) ) + bNeedUpdate = true; + } - onPreview( false ); + if( bNeedUpdate ) + { + mpMainSequence->rebuild(); + updateControls(); + mrBase.GetDocShell()->SetModified(); } + + onPreview( false ); } IMPL_LINK_NOARG(CustomAnimationPane, DelayModifiedHdl, Edit&, void) @@ -2084,65 +2087,65 @@ IMPL_LINK_NOARG(CustomAnimationPane, DelayLoseFocusHdl, Control&, void) IMPL_LINK_NOARG(CustomAnimationPane, AnimationSelectHdl, ListBox&, void) { - if( maListSelection.size() == 1 ) - { - CustomAnimationPresetPtr* pPreset = static_cast< CustomAnimationPresetPtr* >(mpLBAnimation->GetSelectedEntryData()); - PathKind ePathKind = getCreatePathKind(); - - // tdf#99137, the selected entry may also be a subcategory title, so not an effect - // just leave in this case - if ( !pPreset && ( ePathKind == PathKind::NONE ) ) - return; - - if ( ePathKind != PathKind::NONE ) - { - std::vector< Any > aTargets; - MainSequenceRebuildGuard aGuard( mpMainSequence ); - - for( CustomAnimationEffectPtr& pEffect : maListSelection ) - { - aTargets.push_back( pEffect->getTarget() ); - - EffectSequenceHelper* pEffectSequence = pEffect->getEffectSequence(); - if( !pEffectSequence ) - pEffectSequence = mpMainSequence.get(); + if( maListSelection.size() != 1 ) + return; - // delete the old animation, new one will be appended - // by createPath and SID_ADD_MOTION_PATH therein - pEffectSequence->remove( pEffect ); - } + CustomAnimationPresetPtr* pPreset = static_cast< CustomAnimationPresetPtr* >(mpLBAnimation->GetSelectedEntryData()); + PathKind ePathKind = getCreatePathKind(); - createPath( ePathKind, aTargets, 0.0 ); - updateMotionPathTags(); - return; - } + // tdf#99137, the selected entry may also be a subcategory title, so not an effect + // just leave in this case + if ( !pPreset && ( ePathKind == PathKind::NONE ) ) + return; - CustomAnimationPresetPtr pDescriptor(*pPreset); - const double fDuration = (*pPreset)->getDuration(); + if ( ePathKind != PathKind::NONE ) + { + std::vector< Any > aTargets; MainSequenceRebuildGuard aGuard( mpMainSequence ); - // get selected effect for( CustomAnimationEffectPtr& pEffect : maListSelection ) { - // Dispose the deprecated motion path tag. It will be rebuilt later. - if (pEffect->getPresetClass() == css::presentation::EffectPresetClass::MOTIONPATH) - { - for (auto const& xTag: maMotionPathTags) - { - if(xTag->getEffect() == pEffect && !xTag->isDisposed()) - xTag->Dispose(); - } - } + aTargets.push_back( pEffect->getTarget() ); EffectSequenceHelper* pEffectSequence = pEffect->getEffectSequence(); if( !pEffectSequence ) pEffectSequence = mpMainSequence.get(); - pEffectSequence->replace( pEffect, pDescriptor, fDuration ); + // delete the old animation, new one will be appended + // by createPath and SID_ADD_MOTION_PATH therein + pEffectSequence->remove( pEffect ); } - onPreview(false); + createPath( ePathKind, aTargets, 0.0 ); + updateMotionPathTags(); + return; } + + CustomAnimationPresetPtr pDescriptor(*pPreset); + const double fDuration = (*pPreset)->getDuration(); + MainSequenceRebuildGuard aGuard( mpMainSequence ); + + // get selected effect + for( CustomAnimationEffectPtr& pEffect : maListSelection ) + { + // Dispose the deprecated motion path tag. It will be rebuilt later. + if (pEffect->getPresetClass() == css::presentation::EffectPresetClass::MOTIONPATH) + { + for (auto const& xTag: maMotionPathTags) + { + if(xTag->getEffect() == pEffect && !xTag->isDisposed()) + xTag->Dispose(); + } + } + + EffectSequenceHelper* pEffectSequence = pEffect->getEffectSequence(); + if( !pEffectSequence ) + pEffectSequence = mpMainSequence.get(); + + pEffectSequence->replace( pEffect, pDescriptor, fDuration ); + } + + onPreview(false); } IMPL_LINK_NOARG(CustomAnimationPane, UpdateAnimationLB, ListBox&, void) @@ -2415,23 +2418,23 @@ void CustomAnimationPane::onSelect() updateControls(); // mark shapes from selected effects - if( !maSelectionLock.isLocked() ) - { - ScopeLockGuard aGuard( maSelectionLock ); - DrawViewShell* pViewShell = dynamic_cast< DrawViewShell* >( - FrameworkHelper::Instance(mrBase)->GetViewShell(FrameworkHelper::msCenterPaneURL).get()); - DrawView* pView = pViewShell ? pViewShell->GetDrawView() : nullptr; + if( maSelectionLock.isLocked() ) + return; - if( pView ) + ScopeLockGuard aGuard( maSelectionLock ); + DrawViewShell* pViewShell = dynamic_cast< DrawViewShell* >( + FrameworkHelper::Instance(mrBase)->GetViewShell(FrameworkHelper::msCenterPaneURL).get()); + DrawView* pView = pViewShell ? pViewShell->GetDrawView() : nullptr; + + if( pView ) + { + pView->UnmarkAllObj(); + for( const CustomAnimationEffectPtr& pEffect : maListSelection ) { - pView->UnmarkAllObj(); - for( const CustomAnimationEffectPtr& pEffect : maListSelection ) - { - Reference< XShape > xShape( pEffect->getTargetShape() ); - SdrObject* pObj = GetSdrObjectFromXShape( xShape ); - if( pObj ) - pView->MarkObj(pObj, pView->GetSdrPageView()); - } + Reference< XShape > xShape( pEffect->getTargetShape() ); + SdrObject* pObj = GetSdrObjectFromXShape( xShape ); + if( pObj ) + pView->MarkObj(pObj, pView->GetSdrPageView()); } } } @@ -2440,60 +2443,60 @@ void CustomAnimationPane::onSelect() // pEffectInsertBefore may be null if moving to end of list. void CustomAnimationPane::onDragNDropComplete(std::vector< CustomAnimationEffectPtr > pEffectsDragged, CustomAnimationEffectPtr pEffectInsertBefore) { - if ( mpMainSequence.get() ) - { - addUndo(); + if ( !mpMainSequence.get() ) + return; - MainSequenceRebuildGuard aGuard( mpMainSequence ); + addUndo(); - // Move all selected effects - for( auto const& pEffectDragged : pEffectsDragged ) - { - // Move this dragged effect and any hidden sub-effects - EffectSequence::iterator aIter = mpMainSequence->find( pEffectDragged ); - const EffectSequence::iterator aEnd( mpMainSequence->getEnd() ); + MainSequenceRebuildGuard aGuard( mpMainSequence ); - while( aIter != aEnd ) - { - CustomAnimationEffectPtr pEffect = *aIter++; + // Move all selected effects + for( auto const& pEffectDragged : pEffectsDragged ) + { + // Move this dragged effect and any hidden sub-effects + EffectSequence::iterator aIter = mpMainSequence->find( pEffectDragged ); + const EffectSequence::iterator aEnd( mpMainSequence->getEnd() ); - // Update model with new location (function triggers a rebuild) - // target may be null, which will insert at the end. - mpMainSequence->moveToBeforeEffect( pEffect, pEffectInsertBefore ); + while( aIter != aEnd ) + { + CustomAnimationEffectPtr pEffect = *aIter++; - // Done moving effect and its hidden sub-effects when *next* effect is visible. - if ( mpCustomAnimationList->isVisible( *aIter ) ) - break; - } + // Update model with new location (function triggers a rebuild) + // target may be null, which will insert at the end. + mpMainSequence->moveToBeforeEffect( pEffect, pEffectInsertBefore ); + // Done moving effect and its hidden sub-effects when *next* effect is visible. + if ( mpCustomAnimationList->isVisible( *aIter ) ) + break; } - - updateControls(); - mrBase.GetDocShell()->SetModified(); } + + + updateControls(); + mrBase.GetDocShell()->SetModified(); } void CustomAnimationPane::updatePathFromMotionPathTag( const rtl::Reference< MotionPathTag >& xTag ) { MainSequenceRebuildGuard aGuard( mpMainSequence ); - if( xTag.is() ) + if( !xTag.is() ) + return; + + SdrPathObj* pPathObj = xTag->getPathObj(); + CustomAnimationEffectPtr pEffect = xTag->getEffect(); + if( (pPathObj != nullptr) && pEffect.get() != nullptr ) { - SdrPathObj* pPathObj = xTag->getPathObj(); - CustomAnimationEffectPtr pEffect = xTag->getEffect(); - if( (pPathObj != nullptr) && pEffect.get() != nullptr ) + SfxUndoManager* pManager = mrBase.GetDocShell()->GetUndoManager(); + if( pManager ) { - SfxUndoManager* pManager = mrBase.GetDocShell()->GetUndoManager(); - if( pManager ) - { - SdPage* pPage = SdPage::getImplementation( mxCurrentPage ); - if( pPage ) - pManager->AddUndoAction( std::make_unique<UndoAnimationPath>( mrBase.GetDocShell()->GetDoc(), pPage, pEffect->getNode() ) ); - } - - pEffect->updatePathFromSdrPathObj( *pPathObj ); + SdPage* pPage = SdPage::getImplementation( mxCurrentPage ); + if( pPage ) + pManager->AddUndoAction( std::make_unique<UndoAnimationPath>( mrBase.GetDocShell()->GetDoc(), pPage, pEffect->getNode() ) ); } + + pEffect->updatePathFromSdrPathObj( *pPathObj ); } } diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx index 715337180111..4883b1a72287 100644 --- a/sd/source/ui/animations/SlideTransitionPane.cxx +++ b/sd/source/ui/animations/SlideTransitionPane.cxx @@ -779,19 +779,19 @@ void SlideTransitionPane::openSoundFileDialog() mpLB_SOUND->SelectEntryPos( nPos + 3 ); } - if( ! bValidSoundFile ) + if( bValidSoundFile ) + return; + + if( !maCurrentSoundFile.isEmpty() ) { - if( !maCurrentSoundFile.isEmpty() ) - { - std::vector<OUString>::size_type nPos = 0; - if( lcl_findSoundInList( maSoundList, maCurrentSoundFile, nPos )) - mpLB_SOUND->SelectEntryPos( nPos + 3 ); - else - mpLB_SOUND->SelectEntryPos( 0 ); // NONE - } + std::vector<OUString>::size_type nPos = 0; + if( lcl_findSoundInList( maSoundList, maCurrentSoundFile, nPos )) + mpLB_SOUND->SelectEntryPos( nPos + 3 ); else mpLB_SOUND->SelectEntryPos( 0 ); // NONE } + else + mpLB_SOUND->SelectEntryPos( 0 ); // NONE } impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() const @@ -909,30 +909,30 @@ impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() co void SlideTransitionPane::applyToSelectedPages(bool bPreview = true) { - if( ! mbUpdatingControls ) - { - Window *pFocusWindow = Application::GetFocusWindow(); + if( mbUpdatingControls ) + return; - ::sd::slidesorter::SharedPageSelection pSelectedPages( getSelectedPages()); - impl::TransitionEffect aEffect = getTransitionEffectFromControls(); - if( ! pSelectedPages->empty()) - { - lcl_CreateUndoForPages( pSelectedPages, mrBase ); - lcl_ApplyToPages( pSelectedPages, aEffect ); - mrBase.GetDocShell()->SetModified(); - } - if( mpCB_AUTO_PREVIEW->IsEnabled() && - mpCB_AUTO_PREVIEW->IsChecked() && bPreview) - { - if (aEffect.mnType) // mnType = 0 denotes no transition - playCurrentEffect(); - else if( mxView.is() ) - SlideShow::Stop( mrBase ); - } + Window *pFocusWindow = Application::GetFocusWindow(); - if (pFocusWindow) - pFocusWindow->GrabFocus(); + ::sd::slidesorter::SharedPageSelection pSelectedPages( getSelectedPages()); + impl::TransitionEffect aEffect = getTransitionEffectFromControls(); + if( ! pSelectedPages->empty()) + { + lcl_CreateUndoForPages( pSelectedPages, mrBase ); + lcl_ApplyToPages( pSelectedPages, aEffect ); + mrBase.GetDocShell()->SetModified(); } + if( mpCB_AUTO_PREVIEW->IsEnabled() && + mpCB_AUTO_PREVIEW->IsChecked() && bPreview) + { + if (aEffect.mnType) // mnType = 0 denotes no transition + playCurrentEffect(); + else if( mxView.is() ) + SlideShow::Stop( mrBase ); + } + + if (pFocusWindow) + pFocusWindow->GrabFocus(); } void SlideTransitionPane::playCurrentEffect() diff --git a/sd/source/ui/animations/motionpathtag.cxx b/sd/source/ui/animations/motionpathtag.cxx index e08f3f4cb328..1996aec0a02d 100644 --- a/sd/source/ui/animations/motionpathtag.cxx +++ b/sd/source/ui/animations/motionpathtag.cxx @@ -267,37 +267,37 @@ void SdPathHdl::CreateB2dIAObject() // first throw away old one GetRidOfIAObject(); - if(pHdlList) + if(!pHdlList) + return; + + SdrMarkView* pView = pHdlList->GetView(); + + if(!(pView && !pView->areMarkHandlesHidden())) + return; + + SdrPageView* pPageView = pView->GetSdrPageView(); + + if(!pPageView) + return; + + for(sal_uInt32 b(0); b < pPageView->PageWindowCount(); b++) { - SdrMarkView* pView = pHdlList->GetView(); + const SdrPageWindow& rPageWindow = *pPageView->GetPageWindow(b); - if(pView && !pView->areMarkHandlesHidden()) + if(rPageWindow.GetPaintWindow().OutputToWindow()) { - SdrPageView* pPageView = pView->GetSdrPageView(); - - if(pPageView) + const rtl::Reference< sdr::overlay::OverlayManager >& xManager = rPageWindow.GetOverlayManager(); + if (xManager.is() && mpPathObj) { - for(sal_uInt32 b(0); b < pPageView->PageWindowCount(); b++) - { - const SdrPageWindow& rPageWindow = *pPageView->GetPageWindow(b); - - if(rPageWindow.GetPaintWindow().OutputToWindow()) - { - const rtl::Reference< sdr::overlay::OverlayManager >& xManager = rPageWindow.GetOverlayManager(); - if (xManager.is() && mpPathObj) - { - const sdr::contact::ViewContact& rVC = mpPathObj->GetViewContact(); - const drawinglayer::primitive2d::Primitive2DContainer& aSequence = rVC.getViewIndependentPrimitive2DContainer(); - std::unique_ptr<sdr::overlay::OverlayObject> pNew(new sdr::overlay::OverlayPrimitive2DSequenceObject(aSequence)); - - // OVERLAYMANAGER - insertNewlyCreatedOverlayObjectForSdrHdl( - std::move(pNew), - rPageWindow.GetObjectContact(), - *xManager); - } - } - } + const sdr::contact::ViewContact& rVC = mpPathObj->GetViewContact(); + const drawinglayer::primitive2d::Primitive2DContainer& aSequence = rVC.getViewIndependentPrimitive2DContainer(); + std::unique_ptr<sdr::overlay::OverlayObject> pNew(new sdr::overlay::OverlayPrimitive2DSequenceObject(aSequence)); + + // OVERLAYMANAGER + insertNewlyCreatedOverlayObjectForSdrHdl( + std::move(pNew), + rPageWindow.GetObjectContact(), + *xManager); } } } @@ -391,18 +391,18 @@ void MotionPathTag::updatePathAttributes() void MotionPathTag::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) { - if( mpPathObj && !mbInUpdatePath && dynamic_cast< const SdrHint* >( &rHint ) && (mpEffect.get() != nullptr) ) + if( !(mpPathObj && !mbInUpdatePath && dynamic_cast< const SdrHint* >( &rHint ) && (mpEffect.get() != nullptr)) ) + return; + + if( mxPolyPoly != mpPathObj->GetPathPoly() ) { - if( mxPolyPoly != mpPathObj->GetPathPoly() ) - { - mbInUpdatePath = true; - mxPolyPoly = mpPathObj->GetPathPoly(); - rtl::Reference< MotionPathTag > xTag( this ); - mrPane.updatePathFromMotionPathTag( xTag ); - msLastPath = mpEffect->getPath(); - updatePathAttributes(); - mbInUpdatePath = false; - } + mbInUpdatePath = true; + mxPolyPoly = mpPathObj->GetPathPoly(); + rtl::Reference< MotionPathTag > xTag( this ); + mrPane.updatePathFromMotionPathTag( xTag ); + msLastPath = mpEffect->getPath(); + updatePathAttributes(); + mbInUpdatePath = false; } } @@ -840,130 +840,130 @@ bool MotionPathTag::getContext( SdrViewContext& rContext ) void MotionPathTag::CheckPossibilities() { - if( mpPathObj && isSelected() ) - { - mrView.SetMoveAllowed( true ); - mrView.SetMoveProtected( false ); - mrView.SetResizeFreeAllowed( true ); - mrView.SetResizePropAllowed( true ); - mrView.SetResizeProtected( false ); + if( !(mpPathObj && isSelected()) ) + return; - if( !mrView.IsFrameDragSingles() ) - { - bool b1stSmooth(true); - bool b1stSegm(true); - bool bCurve(false); - bool bSmoothFuz(false); - bool bSegmFuz(false); - basegfx::B2VectorContinuity eSmooth = basegfx::B2VectorContinuity::NONE; - - mrView.CheckPolyPossibilitiesHelper( mpMark.get(), b1stSmooth, b1stSegm, bCurve, bSmoothFuz, bSegmFuz, eSmooth ); - } + mrView.SetMoveAllowed( true ); + mrView.SetMoveProtected( false ); + mrView.SetResizeFreeAllowed( true ); + mrView.SetResizePropAllowed( true ); + mrView.SetResizeProtected( false ); + + if( !mrView.IsFrameDragSingles() ) + { + bool b1stSmooth(true); + bool b1stSegm(true); + bool bCurve(false); + bool bSmoothFuz(false); + bool bSegmFuz(false); + basegfx::B2VectorContinuity eSmooth = basegfx::B2VectorContinuity::NONE; + + mrView.CheckPolyPossibilitiesHelper( mpMark.get(), b1stSmooth, b1stSegm, bCurve, bSmoothFuz, bSegmFuz, eSmooth ); } } void MotionPathTag::addCustomHandles( SdrHdlList& rHandlerList ) { - if( mpPathObj ) + if( !mpPathObj ) + return; + + css::awt::Point aPos; + if (mxOrigin.is()) + aPos = mxOrigin->getPosition(); + if( (aPos.X != maOriginPos.X) || (aPos.Y != maOriginPos.Y) ) { - css::awt::Point aPos; - if (mxOrigin.is()) - aPos = mxOrigin->getPosition(); - if( (aPos.X != maOriginPos.X) || (aPos.Y != maOriginPos.Y) ) - { - const basegfx::B2DHomMatrix aTransform(basegfx::utils::createTranslateB2DHomMatrix( - aPos.X - maOriginPos.X, aPos.Y - maOriginPos.Y)); - mxPolyPoly.transform( aTransform ); - mpPathObj->SetPathPoly( mxPolyPoly ); - maOriginPos = aPos; - } + const basegfx::B2DHomMatrix aTransform(basegfx::utils::createTranslateB2DHomMatrix( + aPos.X - maOriginPos.X, aPos.Y - maOriginPos.Y)); + mxPolyPoly.transform( aTransform ); + mpPathObj->SetPathPoly( mxPolyPoly ); + maOriginPos = aPos; + } - SmartTagReference xThis( this ); - std::unique_ptr<SdPathHdl> pHdl(new SdPathHdl( xThis, mpPathObj )); - pHdl->SetObjHdlNum( SMART_TAG_HDL_NUM ); - pHdl->SetPageView( mrView.GetSdrPageView() ); - pHdl->SetObj(mpPathObj); - rHandlerList.AddHdl( std::move(pHdl) ); + SmartTagReference xThis( this ); + std::unique_ptr<SdPathHdl> pHdl(new SdPathHdl( xThis, mpPathObj )); + pHdl->SetObjHdlNum( SMART_TAG_HDL_NUM ); + pHdl->SetPageView( mrView.GetSdrPageView() ); + pHdl->SetObj(mpPathObj); + rHandlerList.AddHdl( std::move(pHdl) ); - if( isSelected() ) - { - mrView.GetSdrPageView()->SetHasMarkedObj(true); + if( !isSelected() ) + return; - if( !mrView.IsFrameDragSingles() ) - { - SdrHdlList aTemp( rHandlerList.GetView() ); - mpPathObj->AddToHdlList( aTemp ); - const SdrUShortCont& rMrkPnts = mpMark->GetMarkedPoints(); + mrView.GetSdrPageView()->SetHasMarkedObj(true); - for( size_t nHandle = 0; nHandle < aTemp.GetHdlCount(); ++nHandle ) - { - SdrHdl* pTempHdl = aTemp.GetHdl( nHandle ); + if( !mrView.IsFrameDragSingles() ) + { + SdrHdlList aTemp( rHandlerList.GetView() ); + mpPathObj->AddToHdlList( aTemp ); + const SdrUShortCont& rMrkPnts = mpMark->GetMarkedPoints(); - SmartHdl* pSmartHdl = new SmartHdl( xThis, mpPathObj, pTempHdl->GetPos(), pTempHdl->GetKind() ); - pSmartHdl->SetObjHdlNum( static_cast<sal_uInt32>(nHandle) ); - pSmartHdl->SetPolyNum( pTempHdl->GetPolyNum() ); - pSmartHdl->SetPointNum( pTempHdl->GetPointNum() ); - pSmartHdl->SetPlusHdl( pTempHdl->IsPlusHdl() ); - pSmartHdl->SetSourceHdlNum( pTempHdl->GetSourceHdlNum() ); - pSmartHdl->SetPageView( mrView.GetSdrPageView() ); + for( size_t nHandle = 0; nHandle < aTemp.GetHdlCount(); ++nHandle ) + { + SdrHdl* pTempHdl = aTemp.GetHdl( nHandle ); - rHandlerList.AddHdl( std::unique_ptr<SmartHdl>(pSmartHdl) ); + SmartHdl* pSmartHdl = new SmartHdl( xThis, mpPathObj, pTempHdl->GetPos(), pTempHdl->GetKind() ); + pSmartHdl->SetObjHdlNum( static_cast<sal_uInt32>(nHandle) ); + pSmartHdl->SetPolyNum( pTempHdl->GetPolyNum() ); + pSmartHdl->SetPointNum( pTempHdl->GetPointNum() ); + pSmartHdl->SetPlusHdl( pTempHdl->IsPlusHdl() ); + pSmartHdl->SetSourceHdlNum( pTempHdl->GetSourceHdlNum() ); + pSmartHdl->SetPageView( mrView.GetSdrPageView() ); - const bool bSelected = rMrkPnts.find( sal_uInt16(nHandle) ) != rMrkPnts.end(); - pSmartHdl->SetSelected(bSelected); + rHandlerList.AddHdl( std::unique_ptr<SmartHdl>(pSmartHdl) ); - if( mrView.IsPlusHandlesAlwaysVisible() || bSelected ) - { - SdrHdlList plusList(nullptr); - mpPathObj->AddToPlusHdlList(plusList, *pSmartHdl); - sal_uInt32 nPlusHdlCnt=plusList.GetHdlCount(); - for (sal_uInt32 nPlusNum=0; nPlusNum<nPlusHdlCnt; nPlusNum++) - { - SdrHdl* pPlusHdl = plusList.GetHdl(nPlusNum); - pPlusHdl->SetObj(mpPathObj); - pPlusHdl->SetPageView(mrView.GetSdrPageView()); - pPlusHdl->SetPlusHdl(true); - } - plusList.MoveTo(rHandlerList); - } + const bool bSelected = rMrkPnts.find( sal_uInt16(nHandle) ) != rMrkPnts.end(); + pSmartHdl->SetSelected(bSelected); + + if( mrView.IsPlusHandlesAlwaysVisible() || bSelected ) + { + SdrHdlList plusList(nullptr); + mpPathObj->AddToPlusHdlList(plusList, *pSmartHdl); + sal_uInt32 nPlusHdlCnt=plusList.GetHdlCount(); + for (sal_uInt32 nPlusNum=0; nPlusNum<nPlusHdlCnt; nPlusNum++) + { + SdrHdl* pPlusHdl = plusList.GetHdl(nPlusNum); + pPlusHdl->SetObj(mpPathObj); + pPlusHdl->SetPageView(mrView.GetSdrPageView()); + pPlusHdl->SetPlusHdl(true); } + plusList.MoveTo(rHandlerList); } - else - { - ::tools::Rectangle aRect(mpPathObj->GetCurrentBoundRect()); + } + } + else + { + ::tools::Rectangle aRect(mpPathObj->GetCurrentBoundRect()); - if(!aRect.IsEmpty()) - { - size_t nCount = rHandlerList.GetHdlCount(); + if(!aRect.IsEmpty()) + { + size_t nCount = rHandlerList.GetHdlCount(); - bool bWdt0=aRect.Left()==aRect.Right(); - bool bHgt0=aRect.Top()==aRect.Bottom(); - if (bWdt0 && bHgt0) - { - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopLeft(),SdrHdlKind::UpperLeft)); - } - else if (bWdt0 || bHgt0) - { - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopLeft() ,SdrHdlKind::UpperLeft)); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomRight(),SdrHdlKind::LowerRight)); - } - else // !bWdt0 && !bHgt0 - { - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopLeft() ,SdrHdlKind::UpperLeft)); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopCenter() ,SdrHdlKind::Upper)); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopRight() ,SdrHdlKind::UpperRight)); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.LeftCenter() ,SdrHdlKind::Left )); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.RightCenter() ,SdrHdlKind::Right)); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomLeft() ,SdrHdlKind::LowerLeft)); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomCenter(),SdrHdlKind::Lower)); - rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomRight() ,SdrHdlKind::LowerRight)); - } + bool bWdt0=aRect.Left()==aRect.Right(); + bool bHgt0=aRect.Top()==aRect.Bottom(); + if (bWdt0 && bHgt0) + { + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopLeft(),SdrHdlKind::UpperLeft)); + } + else if (bWdt0 || bHgt0) + { + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopLeft() ,SdrHdlKind::UpperLeft)); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomRight(),SdrHdlKind::LowerRight)); + } + else // !bWdt0 && !bHgt0 + { + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopLeft() ,SdrHdlKind::UpperLeft)); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopCenter() ,SdrHdlKind::Upper)); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.TopRight() ,SdrHdlKind::UpperRight)); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.LeftCenter() ,SdrHdlKind::Left )); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.RightCenter() ,SdrHdlKind::Right)); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomLeft() ,SdrHdlKind::LowerLeft)); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomCenter(),SdrHdlKind::Lower)); + rHandlerList.AddHdl(std::make_unique<SmartHdl>( xThis, mpPathObj, aRect.BottomRight() ,SdrHdlKind::LowerRight)); + } - while( nCount < rHandlerList.GetHdlCount() ) - { - rHandlerList.GetHdl(nCount++)->SetPageView( mrView.GetSdrPageView() ); - } - } + while( nCount < rHandlerList.GetHdlCount() ) + { + rHandlerList.GetHdl(nCount++)->SetPageView( mrView.GetSdrPageView() ); } } } @@ -1018,23 +1018,23 @@ void MotionPathTag::selectionChanged() void MotionPathTag::DeleteMarkedPoints() { - if( mpPathObj && IsDeleteMarkedPointsPossible() ) - { - mrView.BrkAction(); + if( !(mpPathObj && IsDeleteMarkedPointsPossible()) ) + return; - SdrUShortCont& rPts = mpMark->GetMarkedPoints(); - PolyPolygonEditor aEditor( mpPathObj->GetPathPoly()); - if (aEditor.DeletePoints(rPts)) - { - if( aEditor.GetPolyPolygon().count() ) - { - mpPathObj->SetPathPoly( aEditor.GetPolyPolygon() ); - } + mrView.BrkAction(); - mrView.UnmarkAllPoints(); - mrView.MarkListHasChanged(); - mrView.updateHandles(); + SdrUShortCont& rPts = mpMark->GetMarkedPoints(); + PolyPolygonEditor aEditor( mpPathObj->GetPathPoly()); + if (aEditor.DeletePoints(rPts)) + { + if( aEditor.GetPolyPolygon().count() ) + { + mpPathObj->SetPathPoly( aEditor.GetPolyPolygon() ); } + + mrView.UnmarkAllPoints(); + mrView.MarkListHasChanged(); + mrView.updateHandles(); } } diff --git a/sd/source/ui/annotations/annotationmanager.cxx b/sd/source/ui/annotations/annotationmanager.cxx index f98c4c4d313f..fab298c33de0 100644 --- a/sd/source/ui/annotations/annotationmanager.cxx +++ b/sd/source/ui/annotations/annotationmanager.cxx @@ -238,25 +238,25 @@ void SAL_CALL AnnotationManagerImpl::disposing () // XEventListener void SAL_CALL AnnotationManagerImpl::notifyEvent( const css::document::EventObject& aEvent ) { - if( aEvent.EventName == "OnAnnotationInserted" || aEvent.EventName == "OnAnnotationRemoved" || aEvent.EventName == "OnAnnotationChanged" ) + if( !(aEvent.EventName == "OnAnnotationInserted" || aEvent.EventName == "OnAnnotationRemoved" || aEvent.EventName == "OnAnnotationChanged") ) + return; + + // AnnotationInsertion and modification is not handled here because when + // a new annotation is inserted, it consists of OnAnnotationInserted + // followed by a chain of OnAnnotationChanged (called for setting each + // of the annotation attributes - author, text etc.). This is not what a + // LOK client wants. So only handle removal here as annotation removal + // consists of only one event - 'OnAnnotationRemoved' + if ( aEvent.EventName == "OnAnnotationRemoved" ) { - // AnnotationInsertion and modification is not handled here because when - // a new annotation is inserted, it consists of OnAnnotationInserted - // followed by a chain of OnAnnotationChanged (called for setting each - // of the annotation attributes - author, text etc.). This is not what a - // LOK client wants. So only handle removal here as annotation removal - // consists of only one event - 'OnAnnotationRemoved' - if ( aEvent.EventName == "OnAnnotationRemoved" ) + Reference< XAnnotation > xAnnotation( aEvent.Source, uno::UNO_QUERY ); + if ( xAnnotation.is() ) { - Reference< XAnnotation > xAnnotation( aEvent.Source, uno::UNO_QUERY ); - if ( xAnnotation.is() ) - { - LOKCommentNotify(CommentNotificationType::Remove, &mrBase, xAnnotation); - } + LOKCommentNotify(CommentNotificationType::Remove, &mrBase, xAnnotation); } - - UpdateTags(); } + + UpdateTags(); } void SAL_CALL AnnotationManagerImpl::disposing( const css::lang::EventObject& /*Source*/ ) @@ -401,130 +401,130 @@ void AnnotationManagerImpl::ExecuteEditAnnotation(SfxRequest const & rReq) Reference< XAnnotation > xAnnotation; sal_uInt32 nId = 0; OUString sText; - if (pArgs) - { - if (mpDoc->IsUndoEnabled()) - mpDoc->BegUndo(SdResId(STR_ANNOTATION_UNDO_EDIT)); - - const SfxPoolItem* pPoolItem = nullptr; - if (SfxItemState::SET == pArgs->GetItemState(SID_ATTR_POSTIT_ID, true, &pPoolItem)) - { - nId = static_cast<const SvxPostItIdItem*>(pPoolItem)->GetValue().toUInt32(); - xAnnotation = GetAnnotationById(nId); - } - if (SfxItemState::SET == pArgs->GetItemState(SID_ATTR_POSTIT_TEXT, true, &pPoolItem)) - sText = static_cast<const SfxStringItem*>(pPoolItem)->GetValue(); + if (!pArgs) + return; - if (xAnnotation.is() && !sText.isEmpty()) - { - CreateChangeUndo(xAnnotation); + if (mpDoc->IsUndoEnabled()) + mpDoc->BegUndo(SdResId(STR_ANNOTATION_UNDO_EDIT)); - // TODO: Not allow other authors to change others' comments ? - Reference<XText> xText(xAnnotation->getTextRange()); - xText->setString(sText); + const SfxPoolItem* pPoolItem = nullptr; + if (SfxItemState::SET == pArgs->GetItemState(SID_ATTR_POSTIT_ID, true, &pPoolItem)) + { + nId = static_cast<const SvxPostItIdItem*>(pPoolItem)->GetValue().toUInt32(); + xAnnotation = GetAnnotationById(nId); + } + if (SfxItemState::SET == pArgs->GetItemState(SID_ATTR_POSTIT_TEXT, true, &pPoolItem)) + sText = static_cast<const SfxStringItem*>(pPoolItem)->GetValue(); - LOKCommentNotifyAll(CommentNotificationType::Modify, xAnnotation); - } + if (xAnnotation.is() && !sText.isEmpty()) + { + CreateChangeUndo(xAnnotation); - if (mpDoc->IsUndoEnabled()) - mpDoc->EndUndo(); + // TODO: Not allow other authors to change others' comments ? + Reference<XText> xText(xAnnotation->getTextRange()); + xText->setString(sText); - UpdateTags(true); + LOKCommentNotifyAll(CommentNotificationType::Modify, xAnnotation); } + + if (mpDoc->IsUndoEnabled()) + mpDoc->EndUndo(); + + UpdateTags(true); } void AnnotationManagerImpl::InsertAnnotation(const OUString& rText) { SdPage* pPage = GetCurrentPage(); - if( pPage ) - { - if( mpDoc->IsUndoEnabled() ) - mpDoc->BegUndo( SdResId( STR_ANNOTATION_UNDO_INSERT ) ); + if( !pPage ) + return; - // find free space for new annotation - int y = 0, x = 0; + if( mpDoc->IsUndoEnabled() ) + mpDoc->BegUndo( SdResId( STR_ANNOTATION_UNDO_INSERT ) ); - AnnotationVector aAnnotations( pPage->getAnnotations() ); - if( !aAnnotations.empty() ) + // find free space for new annotation + int y = 0, x = 0; + + AnnotationVector aAnnotations( pPage->getAnnotations() ); + if( !aAnnotations.empty() ) + { + const int page_width = pPage->GetSize().Width(); + const int width = 1000; + const int height = 800; + ::tools::Rectangle aTagRect; + + while( true ) { - const int page_width = pPage->GetSize().Width(); - const int width = 1000; - const int height = 800; - ::tools::Rectangle aTagRect; + ::tools::Rectangle aNewRect( x, y, x + width - 1, y + height - 1 ); + bool bFree = true; - while( true ) + for( const auto& rxAnnotation : aAnnotations ) { - ::tools::Rectangle aNewRect( x, y, x + width - 1, y + height - 1 ); - bool bFree = true; + RealPoint2D aPoint( rxAnnotation->getPosition() ); + aTagRect.SetLeft( sal::static_int_cast< long >( aPoint.X * 100.0 ) ); + aTagRect.SetTop( sal::static_int_cast< long >( aPoint.Y * 100.0 ) ); + aTagRect.SetRight( aTagRect.Left() + width - 1 ); + aTagRect.SetBottom( aTagRect.Top() + height - 1 ); - for( const auto& rxAnnotation : aAnnotations ) + if( aNewRect.IsOver( aTagRect ) ) { - RealPoint2D aPoint( rxAnnotation->getPosition() ); - aTagRect.SetLeft( sal::static_int_cast< long >( aPoint.X * 100.0 ) ); - aTagRect.SetTop( sal::static_int_cast< long >( aPoint.Y * 100.0 ) ); - aTagRect.SetRight( aTagRect.Left() + width - 1 ); - aTagRect.SetBottom( aTagRect.Top() + height - 1 ); - - if( aNewRect.IsOver( aTagRect ) ) - { - bFree = false; - break; - } + bFree = false; + break; } + } - if( !bFree ) - { - x += width; - if( x > page_width ) - { - x = 0; - y += height; - } - } - else + if( !bFree ) + { + x += width; + if( x > page_width ) { - break; + x = 0; + y += height; } } + else + { + break; + } } + } - Reference< XAnnotation > xAnnotation; - pPage->createAnnotation( xAnnotation ); + Reference< XAnnotation > xAnnotation; + pPage->createAnnotation( xAnnotation ); - OUString sAuthor; - if (comphelper::LibreOfficeKit::isActive()) - sAuthor = mrBase.GetMainViewShell()->GetView()->GetAuthor(); - else - { - SvtUserOptions aUserOptions; - sAuthor = aUserOptions.GetFullName(); - xAnnotation->setInitials( aUserOptions.GetID() ); - } + OUString sAuthor; + if (comphelper::LibreOfficeKit::isActive()) + sAuthor = mrBase.GetMainViewShell()->GetView()->GetAuthor(); + else + { + SvtUserOptions aUserOptions; + sAuthor = aUserOptions.GetFullName(); + xAnnotation->setInitials( aUserOptions.GetID() ); + } - if (!rText.isEmpty()) - { - Reference<XText> xText(xAnnotation->getTextRange()); - xText->setString(rText); - } + if (!rText.isEmpty()) + { + Reference<XText> xText(xAnnotation->getTextRange()); + xText->setString(rText); + } - // set current author to new annotation - xAnnotation->setAuthor( sAuthor ); - // set current time to new annotation - xAnnotation->setDateTime( getCurrentDateTime() ); + // set current author to new annotation + xAnnotation->setAuthor( sAuthor ); + // set current time to new annotation + xAnnotation->setDateTime( getCurrentDateTime() ); - // set position - RealPoint2D aPos( static_cast<double>(x) / 100.0, static_cast<double>(y) / 100.0 ); - xAnnotation->setPosition( aPos ); + // set position + RealPoint2D aPos( static_cast<double>(x) / 100.0, static_cast<double>(y) / 100.0 ); + xAnnotation->setPosition( aPos ); - if( mpDoc->IsUndoEnabled() ) - mpDoc->EndUndo(); + if( mpDoc->IsUndoEnabled() ) + mpDoc->EndUndo(); - // Tell our LOK clients about new comment added - LOKCommentNotifyAll(CommentNotificationType::Add, xAnnotation); + // Tell our LOK clients about new comment added + LOKCommentNotifyAll(CommentNotificationType::Add, xAnnotation); - UpdateTags(true); - SelectAnnotation( xAnnotation, true ); - } + UpdateTags(true); + SelectAnnotation( xAnnotation, true ); } void AnnotationManagerImpl::ExecuteReplyToAnnotation( SfxRequest const & rReq ) @@ -549,69 +549,69 @@ void AnnotationManagerImpl::ExecuteReplyToAnnotation( SfxRequest const & rReq ) } TextApiObject* pTextApi = getTextApiObject( xAnnotation ); - if( pTextApi ) - { - std::unique_ptr< ::Outliner > pOutliner( new ::Outliner(GetAnnotationPool(),OutlinerMode::TextObject) ); + if( !pTextApi ) + return; - SdDrawDocument::SetCalcFieldValueHdl( pOutliner.get() ); - pOutliner->SetUpdateMode( true ); + std::unique_ptr< ::Outliner > pOutliner( new ::Outliner(GetAnnotationPool(),OutlinerMode::TextObject) ); - OUString aStr(SdResId(STR_ANNOTATION_REPLY)); - OUString sAuthor( xAnnotation->getAuthor() ); - if( sAuthor.isEmpty() ) - sAuthor = SdResId( STR_ANNOTATION_NOAUTHOR ); + SdDrawDocument::SetCalcFieldValueHdl( pOutliner.get() ); + pOutliner->SetUpdateMode( true ); - aStr = aStr.replaceFirst("%1", sAuthor); + OUString aStr(SdResId(STR_ANNOTATION_REPLY)); + OUString sAuthor( xAnnotation->getAuthor() ); + if( sAuthor.isEmpty() ) + sAuthor = SdResId( STR_ANNOTATION_NOAUTHOR ); - aStr += " (" + getAnnotationDateTimeString( xAnnotation ) + "): \""; + aStr = aStr.replaceFirst("%1", sAuthor); - OUString sQuote( pTextApi->GetText() ); + aStr += " (" + getAnnotationDateTimeString( xAnnotation ) + "): \""; - if( sQuote.isEmpty() ) - sQuote = "..."; - aStr += sQuote + "\"\n"; + OUString sQuote( pTextApi->GetText() ); - for( sal_Int32 nIdx = 0; nIdx >= 0; ) - pOutliner->Insert( aStr.getToken( 0, '\n', nIdx ), EE_PARA_APPEND, -1 ); + if( sQuote.isEmpty() ) + sQuote = "..."; + aStr += sQuote + "\"\n"; - if( pOutliner->GetParagraphCount() > 1 ) - { - SfxItemSet aAnswerSet( pOutliner->GetEmptyItemSet() ); - aAnswerSet.Put(SvxPostureItem(ITALIC_NORMAL,EE_CHAR_ITALIC)); + for( sal_Int32 nIdx = 0; nIdx >= 0; ) + pOutliner->Insert( aStr.getToken( 0, '\n', nIdx ), EE_PARA_APPEND, -1 ); - ESelection aSel; - aSel.nEndPara = pOutliner->GetParagraphCount()-2; - aSel.nEndPos = pOutliner->GetText( pOutliner->GetParagraph( aSel.nEndPara ) ).getLength(); + if( pOutliner->GetParagraphCount() > 1 ) + { + SfxItemSet aAnswerSet( pOutliner->GetEmptyItemSet() ); + aAnswerSet.Put(SvxPostureItem(ITALIC_NORMAL,EE_CHAR_ITALIC)); - pOutliner->QuickSetAttribs( aAnswerSet, aSel ); - } + ESelection aSel; + aSel.nEndPara = pOutliner->GetParagraphCount()-2; + aSel.nEndPos = pOutliner->GetText( pOutliner->GetParagraph( aSel.nEndPara ) ).getLength(); - if (!sReplyText.isEmpty()) - pOutliner->Insert(sReplyText); + pOutliner->QuickSetAttribs( aAnswerSet, aSel ); + } - std::unique_ptr< OutlinerParaObject > pOPO( pOutliner->CreateParaObject() ); - pTextApi->SetText(*pOPO); + if (!sReplyText.isEmpty()) + pOutliner->Insert(sReplyText); - OUString sReplyAuthor; - if (comphelper::LibreOfficeKit::isActive()) - sReplyAuthor = mrBase.GetMainViewShell()->GetView()->GetAuthor(); - else - { - SvtUserOptions aUserOptions; - sReplyAuthor = aUserOptions.GetFullName(); - xAnnotation->setInitials( aUserOptions.GetID() ); - } + std::unique_ptr< OutlinerParaObject > pOPO( pOutliner->CreateParaObject() ); + pTextApi->SetText(*pOPO); - xAnnotation->setAuthor( sReplyAuthor ); - // set current time to reply - xAnnotation->setDateTime( getCurrentDateTime() ); + OUString sReplyAuthor; + if (comphelper::LibreOfficeKit::isActive()) + sReplyAuthor = mrBase.GetMainViewShell()->GetView()->GetAuthor(); + else + { + SvtUserOptions aUserOptions; + sReplyAuthor = aUserOptions.GetFullName(); + xAnnotation->setInitials( aUserOptions.GetID() ); + } - // Tell our LOK clients about this (comment modification) - LOKCommentNotifyAll(CommentNotificationType::Modify, xAnnotation); + xAnnotation->setAuthor( sReplyAuthor ); + // set current time to reply + xAnnotation->setDateTime( getCurrentDateTime() ); - UpdateTags(true); - SelectAnnotation( xAnnotation, true ); - } + // Tell our LOK clients about this (comment modification) + LOKCommentNotifyAll(CommentNotificationType::Modify, xAnnotation); + + UpdateTags(true); + SelectAnnotation( xAnnotation, true ); } void AnnotationManagerImpl::DeleteAnnotation( const Reference< XAnnotation >& xAnnotation ) @@ -888,7 +888,10 @@ void AnnotationManagerImpl::invalidateSlots() void AnnotationManagerImpl::onSelectionChanged() { - if( mxView.is() && mrBase.GetDrawView() ) try + if( !(mxView.is() && mrBase.GetDrawView()) ) + return; + + try { Reference< XAnnotationAccess > xPage( mxView->getCurrentPage(), UNO_QUERY ); @@ -938,7 +941,10 @@ IMPL_LINK_NOARG(AnnotationManagerImpl, UpdateTagsHdl, void*, void) void AnnotationManagerImpl::CreateTags() { - if( mxCurrentPage.is() && mpDoc ) try + if( !(mxCurrentPage.is() && mpDoc) ) + return; + + try { int nIndex = 1; maFont = Application::GetSettings().GetStyleSettings().GetAppFont(); diff --git a/sd/source/ui/annotations/annotationtag.cxx b/sd/source/ui/annotations/annotationtag.cxx index fe32441114af..f0a0c196fcca 100644 --- a/sd/source/ui/annotations/annotationtag.cxx +++ b/sd/source/ui/annotations/annotationtag.cxx @@ -178,62 +178,62 @@ void AnnotationHdl::CreateB2dIAObject() // first throw away old one GetRidOfIAObject(); - if( mxAnnotation.is() ) - { - const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); + if( !mxAnnotation.is() ) + return; + + const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); - const Point aTagPos( GetPos() ); - basegfx::B2DPoint aPosition( aTagPos.X(), aTagPos.Y() ); + const Point aTagPos( GetPos() ); + basegfx::B2DPoint aPosition( aTagPos.X(), aTagPos.Y() ); - const bool bFocused = IsFocusHdl() && pHdlList && (pHdlList->GetFocusHdl() == this); + const bool bFocused = IsFocusHdl() && pHdlList && (pHdlList->GetFocusHdl() == this); + + BitmapEx aBitmapEx( mxTag->CreateAnnotationBitmap(mxTag->isSelected()) ); + BitmapEx aBitmapEx2; + if( bFocused ) + aBitmapEx2 = mxTag->CreateAnnotationBitmap(!mxTag->isSelected() ); + + if(!pHdlList) + return; - BitmapEx aBitmapEx( mxTag->CreateAnnotationBitmap(mxTag->isSelected()) ); - BitmapEx aBitmapEx2; - if( bFocused ) - aBitmapEx2 = mxTag->CreateAnnotationBitmap(!mxTag->isSelected() ); + SdrMarkView* pView = pHdlList->GetView(); - if(pHdlList) + if(!(pView && !pView->areMarkHandlesHidden())) + return; + + SdrPageView* pPageView = pView->GetSdrPageView(); + + if(!pPageView) + return; + + for(sal_uInt32 b = 0; b < pPageView->PageWindowCount(); b++) + { + // const SdrPageViewWinRec& rPageViewWinRec = rPageViewWinList[b]; + const SdrPageWindow& rPageWindow = *pPageView->GetPageWindow(b); + + SdrPaintWindow& rPaintWindow = rPageWindow.GetPaintWindow(); + const rtl::Reference< sdr::overlay::OverlayManager >& xManager = rPageWindow.GetOverlayManager(); + if(rPaintWindow.OutputToWindow() && xManager.is() ) { - SdrMarkView* pView = pHdlList->GetView(); + std::unique_ptr<sdr::overlay::OverlayObject> pOverlayObject; - if(pView && !pView->areMarkHandlesHidden()) + // animate focused handles + if(bFocused) { - SdrPageView* pPageView = pView->GetSdrPageView(); + const sal_uInt64 nBlinkTime = rStyleSettings.GetCursorBlinkTime(); - if(pPageView) - { - for(sal_uInt32 b = 0; b < pPageView->PageWindowCount(); b++) - { - // const SdrPageViewWinRec& rPageViewWinRec = rPageViewWinList[b]; - const SdrPageWindow& rPageWindow = *pPageView->GetPageWindow(b); - - SdrPaintWindow& rPaintWindow = rPageWindow.GetPaintWindow(); - const rtl::Reference< sdr::overlay::OverlayManager >& xManager = rPageWindow.GetOverlayManager(); - if(rPaintWindow.OutputToWindow() && xManager.is() ) - { - std::unique_ptr<sdr::overlay::OverlayObject> pOverlayObject; - - // animate focused handles - if(bFocused) - { - const sal_uInt64 nBlinkTime = rStyleSettings.GetCursorBlinkTime(); - - pOverlayObject.reset(new sdr::overlay::OverlayAnimatedBitmapEx(aPosition, aBitmapEx, aBitmapEx2, nBlinkTime, 0, 0, 0, 0 )); - } - else - { - pOverlayObject.reset(new sdr::overlay::OverlayBitmapEx( aPosition, aBitmapEx, 0, 0 )); - } - - // OVERLAYMANAGER - insertNewlyCreatedOverlayObjectForSdrHdl( - std::move(pOverlayObject), - rPageWindow.GetObjectContact(), - *xManager); - } - } - } + pOverlayObject.reset(new sdr::overlay::OverlayAnimatedBitmapEx(aPosition, aBitmapEx, aBitmapEx2, nBlinkTime, 0, 0, 0, 0 )); + } + else + { + pOverlayObject.reset(new sdr::overlay::OverlayBitmapEx( aPosition, aBitmapEx, 0, 0 )); } + + // OVERLAYMANAGER + insertNewlyCreatedOverlayObjectForSdrHdl( + std::move(pOverlayObject), + rPageWindow.GetObjectContact(), + *xManager); } } } @@ -366,21 +366,21 @@ bool AnnotationTag::Command( const CommandEvent& rCEvt ) void AnnotationTag::Move( int nDX, int nDY ) { - if( mxAnnotation.is() ) - { - if( mrManager.GetDoc()->IsUndoEnabled() ) - mrManager.GetDoc()->BegUndo( SdResId( STR_ANNOTATION_UNDO_MOVE ) ); + if( !mxAnnotation.is() ) + return; - RealPoint2D aPosition( mxAnnotation->getPosition() ); - aPosition.X += static_cast<double>(nDX) / 100.0; - aPosition.Y += static_cast<double>(nDY) / 100.0; - mxAnnotation->setPosition( aPosition ); + if( mrManager.GetDoc()->IsUndoEnabled() ) + mrManager.GetDoc()->BegUndo( SdResId( STR_ANNOTATION_UNDO_MOVE ) ); - if( mrManager.GetDoc()->IsUndoEnabled() ) - mrManager.GetDoc()->EndUndo(); + RealPoint2D aPosition( mxAnnotation->getPosition() ); + aPosition.X += static_cast<double>(nDX) / 100.0; + aPosition.Y += static_cast<double>(nDY) / 100.0; + mxAnnotation->setPosition( aPosition ); - mrView.updateHandles(); - } + if( mrManager.GetDoc()->IsUndoEnabled() ) + mrManager.GetDoc()->EndUndo(); + + mrView.updateHandles(); } bool AnnotationTag::OnMove( const KeyEvent& rKEvt ) @@ -451,19 +451,19 @@ bool AnnotationTag::getContext( SdrViewContext& /*rContext*/ ) void AnnotationTag::addCustomHandles( SdrHdlList& rHandlerList ) { - if( mxAnnotation.is() ) - { - SmartTagReference xThis( this ); - std::unique_ptr<AnnotationHdl> pHdl(new AnnotationHdl( xThis, mxAnnotation, Point() )); - pHdl->SetObjHdlNum( SMART_TAG_HDL_NUM ); - pHdl->SetPageView( mrView.GetSdrPageView() ); + if( !mxAnnotation.is() ) + return; - RealPoint2D aPosition( mxAnnotation->getPosition() ); - Point aBasePos( static_cast<long>(aPosition.X * 100.0), static_cast<long>(aPosition.Y * 100.0) ); - pHdl->SetPos( aBasePos ); + SmartTagReference xThis( this ); + std::unique_ptr<AnnotationHdl> pHdl(new AnnotationHdl( xThis, mxAnnotation, Point() )); + pHdl->SetObjHdlNum( SMART_TAG_HDL_NUM ); + pHdl->SetPageView( mrView.GetSdrPageView() ); - rHandlerList.AddHdl( std::move(pHdl) ); - } + RealPoint2D aPosition( mxAnnotation->getPosition() ); + Point aBasePos( static_cast<long>(aPosition.X * 100.0), static_cast<long>(aPosition.Y * 100.0) ); + pHdl->SetPos( aBasePos ); + + rHandlerList.AddHdl( std::move(pHdl) ); } void AnnotationTag::disposing() @@ -611,61 +611,61 @@ IMPL_LINK(AnnotationTag, WindowEventHandler, VclWindowEvent&, rEvent, void) { vcl::Window* pWindow = rEvent.GetWindow(); - if( pWindow ) + if( !pWindow ) + return; + + if( pWindow == mpAnnotationWindow.get() ) { - if( pWindow == mpAnnotationWindow.get() ) + if( rEvent.GetId() == VclEventId::WindowDeactivate ) { - if( rEvent.GetId() == VclEventId::WindowDeactivate ) + // tdf#99388 and tdf#99712 if PopupMenu is active, suppress + // deletion of the AnnotationWindow which is triggered by + // it losing focus + if (!mrManager.getPopupMenuActive()) { - // tdf#99388 and tdf#99712 if PopupMenu is active, suppress - // deletion of the AnnotationWindow which is triggered by - // it losing focus - if (!mrManager.getPopupMenuActive()) - { - if( mnClosePopupEvent ) - Application::RemoveUserEvent( mnClosePopupEvent ); + if( mnClosePopupEvent ) + Application::RemoveUserEvent( mnClosePopupEvent ); - mnClosePopupEvent = Application::PostUserEvent( LINK( this, AnnotationTag, ClosePopupHdl ) ); - } + mnClosePopupEvent = Application::PostUserEvent( LINK( this, AnnotationTag, ClosePopupHdl ) ); } } - else if( pWindow == mpListenWindow ) + } + else if( pWindow == mpListenWindow ) + { + switch( rEvent.GetId() ) { - switch( rEvent.GetId() ) + case VclEventId::WindowMouseButtonUp: { - case VclEventId::WindowMouseButtonUp: - { - // if we stop pressing the button without a mouse move we open the popup - mpListenWindow->RemoveEventListener( LINK(this, AnnotationTag, WindowEventHandler)); - mpListenWindow = nullptr; - if( mpAnnotationWindow.get() == nullptr ) - OpenPopup(false); - } - break; - case VclEventId::WindowMouseMove: - { - // if we move the mouse after a button down we want to start dragging - mpListenWindow->RemoveEventListener( LINK(this, AnnotationTag, WindowEventHandler)); - mpListenWindow = nullptr; + // if we stop pressing the button without a mouse move we open the popup + mpListenWindow->RemoveEventListener( LINK(this, AnnotationTag, WindowEventHandler)); + mpListenWindow = nullptr; + if( mpAnnotationWindow.get() == nullptr ) + OpenPopup(false); + } + break; + case VclEventId::WindowMouseMove: + { + // if we move the mouse after a button down we want to start dragging + mpListenWindow->RemoveEventListener( LINK(this, AnnotationTag, WindowEventHandler)); + mpListenWindow = nullptr; - SdrHdl* pHdl = mrView.PickHandle(maMouseDownPos); - if( pHdl ) - { - mrView.BrkAction(); - const sal_uInt16 nDrgLog = static_cast<sal_uInt16>(pWindow->PixelToLogic(Size(DRGPIX,0)).Width()); + SdrHdl* pHdl = mrView.PickHandle(maMouseDownPos); + if( pHdl ) + { + mrView.BrkAction(); + const sal_uInt16 nDrgLog = static_cast<sal_uInt16>(pWindow->PixelToLogic(Size(DRGPIX,0)).Width()); - rtl::Reference< AnnotationTag > xTag( this ); + rtl::Reference< AnnotationTag > xTag( this ); - SdrDragMethod* pDragMethod = new AnnotationDragMove( mrView, xTag ); - mrView.BegDragObj(maMouseDownPos, nullptr, pHdl, nDrgLog, pDragMethod ); - } + SdrDragMethod* pDragMethod = new AnnotationDragMove( mrView, xTag ); + mrView.BegDragObj(maMouseDownPos, nullptr, pHdl, nDrgLog, pDragMethod ); } - break; - case VclEventId::ObjectDying: - mpListenWindow = nullptr; - break; - default: break; } + break; + case VclEventId::ObjectDying: + mpListenWindow = nullptr; + break; + default: break; } } } diff --git a/sd/source/ui/annotations/annotationwindow.cxx b/sd/source/ui/annotations/annotationwindow.cxx index 621ea1d45502..76a37f8017e9 100644 --- a/sd/source/ui/annotations/annotationwindow.cxx +++ b/sd/source/ui/annotations/annotationwindow.cxx @@ -505,41 +505,41 @@ TextApiObject* getTextApiObject( const Reference< XAnnotation >& xAnnotation ) void AnnotationWindow::setAnnotation( const Reference< XAnnotation >& xAnnotation ) { - if( (xAnnotation != mxAnnotation) && xAnnotation.is() ) - { - mxAnnotation = xAnnotation; ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits