diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2021-11-24 13:11:18 +0100 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2021-11-25 13:22:20 +0100 |
commit | ceddcf25c2ffbec97b2ae99d7628eed20c796717 (patch) | |
tree | 5750f5e07d89d12a53de43c663cb8487a909b416 /sd | |
parent | 68738ca6d632ed57ea25bc8909959bad0d171872 (diff) |
jsdialog: sidebar: enable animation panel effects
- enable subcontrol .ui for jsdialogs in annimation panel
- optimize to not recreate widget on every sidebar refresh
- don't sent close message for whole sidebar when called from
subcontrol
This fixes widgets in annimation panel like: Direction listbox,
or other replacements for selecting color, font etc. for font effect
Change-Id: I5683ca9cefe384ed0d2a34d46936ddf4a9b45bce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125757
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mert Tumer <mert.tumer@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/animations/CustomAnimationDialog.cxx | 4 | ||||
-rw-r--r-- | sd/source/ui/animations/CustomAnimationPane.cxx | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx b/sd/source/ui/animations/CustomAnimationDialog.cxx index b3b7b8591453..face9e1b9a71 100644 --- a/sd/source/ui/animations/CustomAnimationDialog.cxx +++ b/sd/source/ui/animations/CustomAnimationDialog.cxx @@ -45,6 +45,7 @@ #include <svtools/ctrlbox.hxx> #include <svtools/ctrltool.hxx> #include <sfx2/objsh.hxx> +#include <sfx2/viewsh.hxx> #include <tools/debug.hxx> #include <tools/urlobj.hxx> #include <tools/diagnose_ex.h> @@ -85,7 +86,8 @@ using ::com::sun::star::beans::XPropertySet; namespace sd { SdPropertySubControl::SdPropertySubControl(weld::Container* pParent) - : mxBuilder(Application::CreateBuilder(pParent, "modules/simpress/ui/customanimationfragment.ui")) + : mxBuilder(Application::CreateBuilder(pParent, "modules/simpress/ui/customanimationfragment.ui", + false, reinterpret_cast<sal_uInt64>(SfxViewShell::Current()))) , mxContainer(mxBuilder->weld_container("EffectFragment")) , mpParent(pParent) { diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx index e1a705846478..67fe4590916f 100644 --- a/sd/source/ui/animations/CustomAnimationPane.cxx +++ b/sd/source/ui/animations/CustomAnimationPane.cxx @@ -551,6 +551,9 @@ void CustomAnimationPane::updateControls() if (!mxLBSubControl || nOldPropertyType != nNewPropertyType) { + // for LOK destroy old widgets first + mxLBSubControl.reset(nullptr); + // then create new control, to keep correct pointers for actions mxLBSubControl = SdPropertySubControl::create(nNewPropertyType, mxFTProperty.get(), mxPlaceholderBox.get(), GetFrameWeld(), aValue, pEffect->getPresetId(), LINK(this, CustomAnimationPane, implPropertyHdl)); } else @@ -661,7 +664,16 @@ void CustomAnimationPane::updateControls() else { // use an empty direction box to fill the space - mxLBSubControl = SdPropertySubControl::create(nPropertyTypeDirection, mxFTProperty.get(), mxPlaceholderBox.get(), GetFrameWeld(), uno::Any(), OUString(), LINK(this, CustomAnimationPane, implPropertyHdl)); + if (!mxLBSubControl || (nOldPropertyType != nPropertyTypeDirection && nOldPropertyType != nPropertyTypeNone)) + { + // for LOK destroy old widgets first + mxLBSubControl.reset(nullptr); + // then create new control, to keep correct pointers for actions + mxLBSubControl = SdPropertySubControl::create(nPropertyTypeDirection, mxFTProperty.get(), mxPlaceholderBox.get(), GetFrameWeld(), uno::Any(), OUString(), LINK(this, CustomAnimationPane, implPropertyHdl)); + } + else + mxLBSubControl->setValue(uno::Any(), OUString()); + mxPlaceholderBox->set_sensitive(false); mxFTProperty->set_sensitive(false); mxFTStartDelay->set_sensitive(false); |