sd/inc/CustomAnimationPreset.hxx | 6 +++- sd/source/core/CustomAnimationPreset.cxx | 33 ++++++++++++++---------- sd/source/ui/animations/CustomAnimationPane.cxx | 27 +++++-------------- sd/source/ui/animations/CustomAnimationPane.hxx | 18 +------------ sd/source/ui/view/drviews1.cxx | 3 ++ sd/source/ui/view/drviewse.cxx | 6 ++++ 6 files changed, 43 insertions(+), 50 deletions(-)
New commits: commit faf3b70e8ba12e787e5fff797abb3eb7eba272d5 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> AuthorDate: Wed Dec 12 10:46:13 2018 -0500 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Wed Aug 7 09:11:12 2019 +0200 sd: LOK: publish statechange on entering master view Reviewed-on: https://gerrit.libreoffice.org/69617 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/73498 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit ae2720ab206c2ff4a677e7fad147a3037f07a9be) Change-Id: Ib736800544b9669e3708da0c01370af22cdf3e97 Reviewed-on: https://gerrit.libreoffice.org/77038 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx index a0f5b7ffae52..cf8f73d21819 100644 --- a/sd/source/ui/view/drviews1.cxx +++ b/sd/source/ui/view/drviews1.cxx @@ -438,6 +438,9 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive) GetViewFrame()->SetChildWindow( AnimationChildWindow::GetChildWindowId(), false ); + if (comphelper::LibreOfficeKit::isActive()) + GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, + ".uno:SlideMasterPage=true"); if (!mpActualPage) { // as long as there is no mpActualPage, take first diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx index 30f395c9f5cc..520e29bfb47a 100644 --- a/sd/source/ui/view/drviewse.cxx +++ b/sd/source/ui/view/drviewse.cxx @@ -29,6 +29,7 @@ #include <LibreOfficeKit/LibreOfficeKitEnums.h> #include <comphelper/lok.hxx> +#include <LibreOfficeKit/LibreOfficeKitEnums.h> #include <undo/undomanager.hxx> #include <vcl/waitobj.hxx> #include <svl/aeitem.hxx> @@ -1057,6 +1058,11 @@ void DrawViewShell::FuSupport(SfxRequest& rReq) case SID_CLOSE_MASTER_VIEW: { + // Notify of disabling master view, which is enabled in DrawViewShell::ChangeEditMode. + if (comphelper::LibreOfficeKit::isActive()) + GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, + ".uno:SlideMasterPage=false"); + Broadcast ( ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_START)); commit 1102bb5563b8a2febfa14ad92c106781ef81b6e3 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> AuthorDate: Mon Jan 28 10:03:39 2019 -0500 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Wed Aug 7 09:11:05 2019 +0200 sd: LOK: support per-user localization of CustomAnimationPreset This only fixes the caching in CustomAnimationPreset and CustomAnimationPane. Other cached labels will be done separately. Reviewed-on: https://gerrit.libreoffice.org/68263 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit b44679e47211a27f4fe22d05762d9d48c8f88935) Reviewed-on: https://gerrit.libreoffice.org/76241 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit 3b55741586883d4fbb7f3e4c5368b5382c3ce5f8) Change-Id: Iaf511168d26b3a5567ca53556e242d3c071d2623 Reviewed-on: https://gerrit.libreoffice.org/77036 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sd/inc/CustomAnimationPreset.hxx b/sd/inc/CustomAnimationPreset.hxx index eeeeac55ad77..57669734014b 100644 --- a/sd/inc/CustomAnimationPreset.hxx +++ b/sd/inc/CustomAnimationPreset.hxx @@ -88,6 +88,9 @@ public: SAL_DLLPRIVATE CustomAnimationPresets(); SAL_DLLPRIVATE ~CustomAnimationPresets(); + /** This method gets presets instance, which is localized + * for the current user's locale. + */ static const CustomAnimationPresets& getCustomAnimationPresets(); SAL_DLLPRIVATE css::uno::Reference< css::animations::XAnimationNode > getRandomPreset( sal_Int16 nPresetClass ) const; @@ -125,7 +128,8 @@ private: PresetCategoryList maMotionPathsPresets; PresetCategoryList maMiscPresets; - SAL_DLLPRIVATE static CustomAnimationPresets* mpCustomAnimationPresets; + //! Maps per-language the animation presets. + SAL_DLLPRIVATE static std::map<OUString, CustomAnimationPresets*> mpCustomAnimationPresetsMap; }; diff --git a/sd/source/core/CustomAnimationPreset.cxx b/sd/source/core/CustomAnimationPreset.cxx index 804ef7b9ddf2..5b4bb999d613 100644 --- a/sd/source/core/CustomAnimationPreset.cxx +++ b/sd/source/core/CustomAnimationPreset.cxx @@ -38,7 +38,9 @@ #include <comphelper/processfactory.hxx> #include <comphelper/propertysequence.hxx> #include <comphelper/random.hxx> +#include <comphelper/lok.hxx> #include <unotools/pathoptions.hxx> +#include <unotools/syslocaleoptions.hxx> #include <tools/stream.hxx> #include <tools/debug.hxx> @@ -530,22 +532,27 @@ void CustomAnimationPresets::changePresetSubType( const CustomAnimationEffectPtr } } -CustomAnimationPresets* CustomAnimationPresets::mpCustomAnimationPresets = nullptr; +std::map<OUString, CustomAnimationPresets*> CustomAnimationPresets::mpCustomAnimationPresetsMap; const CustomAnimationPresets& CustomAnimationPresets::getCustomAnimationPresets() { - if( !mpCustomAnimationPresets ) - { - SolarMutexGuard aGuard; - - if( !mpCustomAnimationPresets ) - { - mpCustomAnimationPresets = new sd::CustomAnimationPresets(); - mpCustomAnimationPresets->importResources(); - } - } - - return *mpCustomAnimationPresets; + // Support localization per-view. Currently not useful for Desktop + // but very much critical for LOK. The cache now is per-language. + const OUString aLang = comphelper::LibreOfficeKit::isActive() + ? comphelper::LibreOfficeKit::getLanguageTag().getLanguage() + : SvtSysLocaleOptions().GetLanguageTag().getLanguage(); + + SolarMutexGuard aGuard; + const auto it = mpCustomAnimationPresetsMap.find(aLang); + if (it != mpCustomAnimationPresetsMap.end()) + return *it->second; + + // Note: we are invoked recursively(!), so we must set the instance pointer + // in the cache map before we importResources, lest we get in infinite loop. + sd::CustomAnimationPresets* pCustomAnimationPresets = new sd::CustomAnimationPresets(); + mpCustomAnimationPresetsMap[aLang] = pCustomAnimationPresets; + pCustomAnimationPresets->importResources(); + return *pCustomAnimationPresets; } Reference< XAnimationNode > CustomAnimationPresets::getRandomPreset( sal_Int16 nPresetClass ) const diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx index 99675714021b..76794375426b 100644 --- a/sd/source/ui/animations/CustomAnimationPane.cxx +++ b/sd/source/ui/animations/CustomAnimationPane.cxx @@ -128,7 +128,6 @@ CustomAnimationPane::CustomAnimationPane( Window* pParent, ViewShellBase& rBase, const css::uno::Reference<css::frame::XFrame>& rxFrame ) : PanelLayout( pParent, "CustomAnimationsPanel", "modules/simpress/ui/customanimationspanel.ui", rxFrame ), mrBase( rBase ), - mpCustomAnimationPresets(nullptr), mnPropertyType( nPropertyTypeNone ), mnCurvePathPos( LISTBOX_ENTRY_NOTFOUND ), mnPolygonPathPos( LISTBOX_ENTRY_NOTFOUND ), @@ -144,7 +143,6 @@ CustomAnimationPane::CustomAnimationPane( Window* pParent, ViewShellBase& rBase, bool ) : PanelLayout( pParent, "CustomAnimationsPanel", "modules/simpress/ui/customanimationspanelhorizontal.ui", rxFrame ), mrBase( rBase ), - mpCustomAnimationPresets(nullptr), mnPropertyType( nPropertyTypeNone ), mnCurvePathPos( LISTBOX_ENTRY_NOTFOUND ), mnPolygonPathPos( LISTBOX_ENTRY_NOTFOUND ), @@ -556,7 +554,7 @@ void CustomAnimationPane::updateControls() { CustomAnimationEffectPtr pEffect = maListSelection.front(); - OUString aUIName( getPresets().getUINameForPresetId( pEffect->getPresetId() ) ); + OUString aUIName( CustomAnimationPresets::getCustomAnimationPresets().getUINameForPresetId( pEffect->getPresetId() ) ); OUString aTemp( maStrModify ); @@ -566,7 +564,7 @@ void CustomAnimationPane::updateControls() mpFTEffect->SetText( aTemp ); } - CustomAnimationPresetPtr pDescriptor = getPresets().getEffectDescriptor( pEffect->getPresetId() ); + CustomAnimationPresetPtr pDescriptor = CustomAnimationPresets::getCustomAnimationPresets().getEffectDescriptor( pEffect->getPresetId() ); if( pDescriptor.get() ) { PropertySubControl* pSubControl = nullptr; @@ -1031,7 +1029,7 @@ bool CustomAnimationPane::setProperty1Value( sal_Int32 nType, const CustomAnimat rValue >>= aPresetSubType; if( aPresetSubType != pEffect->getPresetSubType() ) { - getPresets().changePresetSubType( pEffect, aPresetSubType ); + CustomAnimationPresets::getCustomAnimationPresets().changePresetSubType( pEffect, aPresetSubType ); bEffectChanged = true; } } @@ -1128,13 +1126,9 @@ std::unique_ptr<STLPropertySet> CustomAnimationPane::createSelectionSet() sal_Int32 nMaxParaDepth = 0; // get options from selected effects - EffectSequence::iterator aIter( maListSelection.begin() ); - const EffectSequence::iterator aEnd( maListSelection.end() ); - const CustomAnimationPresets& rPresets (getPresets()); - while( aIter != aEnd ) + const CustomAnimationPresets& rPresets (CustomAnimationPresets::getCustomAnimationPresets()); + for( CustomAnimationEffectPtr& pEffect : maListSelection ) { - CustomAnimationEffectPtr pEffect = (*aIter++); - EffectSequenceHelper* pEffectSequence = pEffect->getEffectSequence(); if( !pEffectSequence ) pEffectSequence = mpMainSequence.get(); @@ -2218,7 +2212,7 @@ sal_uInt32 CustomAnimationPane::fillAnimationLB( bool bHasText ) { PresetCategoryList rCategoryList; sal_uInt16 nPosition = mpLBCategory->GetSelectedEntryPos(); - const CustomAnimationPresets& rPresets (getPresets()); + const CustomAnimationPresets& rPresets (CustomAnimationPresets::getCustomAnimationPresets()); switch(nPosition) { case 0:rCategoryList = rPresets.getEntrancePresets();break; @@ -2311,7 +2305,7 @@ IMPL_LINK_NOARG(CustomAnimationPane, lateInitCallback, Timer *, void) { // Call getPresets() to initiate the (expensive) construction of the // presets list. - getPresets(); + CustomAnimationPresets::getCustomAnimationPresets(); // update selection and control states onSelectionChanged(); @@ -2470,13 +2464,6 @@ void CustomAnimationPane::preview( const Reference< XAnimationNode >& xAnimation SlideShow::StartPreview( mrBase, mxCurrentPage, xRoot ); } -const CustomAnimationPresets& CustomAnimationPane::getPresets() -{ - if (mpCustomAnimationPresets == nullptr) - mpCustomAnimationPresets = &CustomAnimationPresets::getCustomAnimationPresets(); - return *mpCustomAnimationPresets; -} - // ICustomAnimationListController void CustomAnimationPane::onSelect() { diff --git a/sd/source/ui/animations/CustomAnimationPane.hxx b/sd/source/ui/animations/CustomAnimationPane.hxx index 596d2b53bde2..7e653346739b 100644 --- a/sd/source/ui/animations/CustomAnimationPane.hxx +++ b/sd/source/ui/animations/CustomAnimationPane.hxx @@ -33,13 +33,6 @@ #include <vector> -class PushButton; -class FixedLine; -class FixedText; -class ListBox; -class ComboBox; -class CheckBox; - enum class PathKind { NONE, CURVE, POLYGON, FREEFORM }; namespace com { namespace sun { namespace star { namespace animations { @@ -113,7 +106,7 @@ private: void changeSelection( STLPropertySet const * pResultSet, STLPropertySet const * pOldSet ); static css::uno::Any getProperty1Value( sal_Int32 nType, const CustomAnimationEffectPtr& pEffect ); - bool setProperty1Value( sal_Int32 nType, const CustomAnimationEffectPtr& pEffect, const css::uno::Any& rValue ); + static bool setProperty1Value( sal_Int32 nType, const CustomAnimationEffectPtr& pEffect, const css::uno::Any& rValue ); void UpdateLook(); sal_uInt32 fillAnimationLB( bool bHasText ); PathKind getCreatePathKind() const; @@ -134,8 +127,6 @@ private: private: ViewShellBase& mrBase; - const CustomAnimationPresets* mpCustomAnimationPresets; - // UI Elements VclPtr<FixedText> mpFTAnimation; VclPtr<CustomAnimationList> mpCustomAnimationList; @@ -179,17 +170,12 @@ private: css::uno::Reference< css::drawing::XDrawPage > mxCurrentPage; css::uno::Reference< css::drawing::XDrawView > mxView; - /** The mpCustomAnimationPresets is initialized either on demand or + /** The CustomAnimationPresets is initialized either on demand or after a short time after the construction of a new object of this class. This timer is responsible for the later. */ Timer maLateInitTimer; - /** This method initializes the mpCustomAnimationPresets on demand and - returns a reference to the list. - */ - const CustomAnimationPresets& getPresets(); - MotionPathTagVector maMotionPathTags; ScopeLock maSelectionLock; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits