diff options
-rw-r--r-- | cui/source/dialogs/colorpicker.cxx | 7 | ||||
-rw-r--r-- | include/svx/PaletteManager.hxx | 2 | ||||
-rw-r--r-- | svx/source/tbxctrls/PaletteManager.cxx | 11 |
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); } }); } |