summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-12-20 11:21:27 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-12-23 12:34:22 +0100
commit15be0847190fee716689938e70fcb4ade208d97f (patch)
treef54a1aa30a74e57805e4dfa540ad8c3e5c51e5ca /svx
parent25e3408d23fcdcda5ea952cc2c7067a6cc9216aa (diff)
tdf#156820 Fix crash in custom color picker
which requires (*) keeping ColorPicker alive during the runAsync in ColorPicker::startExecuteModal (*) keeping the PaletteManager alive during the ExecuteAsync in PaletteManager::PopupCOlorPicker Noting that MattK debugged the cause of this. Change-Id: I07efe8e6514f8882b1347c79c6150578c234bb9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161054 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> (cherry picked from commit 78ccae0d42d168f845ddbd7cb694d80dfb04f84d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161161 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> (cherry picked from commit 97a81fffc1c2ab77749c462b61b3eed860b09d77) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161164
Diffstat (limited to 'svx')
-rw-r--r--svx/source/tbxctrls/PaletteManager.cxx11
1 files changed, 6 insertions, 5 deletions
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx
index 1a48c403feb2..cc53c3ab74c8 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);
}
});
}