summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/dialogs/colorpicker.cxx7
-rw-r--r--include/svx/PaletteManager.hxx2
-rw-r--r--svx/source/tbxctrls/PaletteManager.cxx11
3 files changed, 11 insertions, 9 deletions
diff --git a/cui/source/dialogs/colorpicker.cxx b/cui/source/dialogs/colorpicker.cxx
index 87f50b534c26..71b0d0970fc3 100644
--- a/cui/source/dialogs/colorpicker.cxx
+++ b/cui/source/dialogs/colorpicker.cxx
@@ -1345,12 +1345,13 @@ void SAL_CALL ColorPicker::setDialogTitle( const OUString& )
void SAL_CALL ColorPicker::startExecuteModal( const css::uno::Reference< css::ui::dialogs::XDialogClosedListener >& xListener )
{
std::shared_ptr<ColorPickerDialog> xDlg = std::make_shared<ColorPickerDialog>(Application::GetFrameWeld(mxParent), mnColor, mnMode);
- weld::DialogController::runAsync(xDlg, [this, xDlg, xListener] (sal_Int32 nResult) {
+ rtl::Reference<ColorPicker> xThis(this);
+ weld::DialogController::runAsync(xDlg, [xThis, xDlg, xListener] (sal_Int32 nResult) {
if (nResult)
- mnColor = xDlg->GetColor();
+ xThis->mnColor = xDlg->GetColor();
sal_Int16 nRet = static_cast<sal_Int16>(nResult);
- css::ui::dialogs::DialogClosedEvent aEvent( *this, nRet );
+ css::ui::dialogs::DialogClosedEvent aEvent( *xThis, nRet );
xListener->dialogClosed( aEvent );
});
}
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index f2711b2e022a..81f30ea7de76 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -33,7 +33,7 @@ namespace svx { class ToolboxButtonColorUpdaterBase; }
namespace weld { class Window; }
namespace model { class ColorSet; }
-class SVXCORE_DLLPUBLIC PaletteManager
+class SVXCORE_DLLPUBLIC PaletteManager : public std::enable_shared_from_this<PaletteManager>
{
const sal_uInt16 mnMaxRecentColors;
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx
index 234002006a5e..a98149ff30bb 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -405,15 +405,16 @@ void PaletteManager::PopupColorPicker(weld::Window* pParent, const OUString& aCo
m_pColorDlg = std::make_unique<SvColorDialog>();
m_pColorDlg->SetColor(rInitialColor);
m_pColorDlg->SetMode(svtools::ColorPickerMode::Modify);
- m_pColorDlg->ExecuteAsync(pParent, [this, aCommandCopy] (sal_Int32 nResult) {
+ std::shared_ptr<PaletteManager> xSelf(shared_from_this());
+ m_pColorDlg->ExecuteAsync(pParent, [xSelf, aCommandCopy] (sal_Int32 nResult) {
if (nResult == RET_OK)
{
- Color aLastColor = m_pColorDlg->GetColor();
+ Color aLastColor = xSelf->m_pColorDlg->GetColor();
OUString sColorName = "#" + aLastColor.AsRGBHexString().toAsciiUpperCase();
NamedColor aNamedColor(aLastColor, sColorName);
- SetSplitButtonColor(aNamedColor);
- AddRecentColor(aLastColor, sColorName);
- maColorSelectFunction(aCommandCopy, aNamedColor);
+ xSelf->SetSplitButtonColor(aNamedColor);
+ xSelf->AddRecentColor(aLastColor, sColorName);
+ xSelf->maColorSelectFunction(aCommandCopy, aNamedColor);
}
});
}