From 53e3446dd29cb74642800124a372d696f19a6828 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 15 Apr 2020 11:02:16 +0100 Subject: Resolves: tdf#122491 ClassificationDialog::run() is not called when using DialogController::runAsync so the custom override isn't called so the special setup and save-on-ok aren't called. move the setup into the ctor seeing as the dialog is only run once after ctoring and add a OK handling that does the on-ok setting save and have setupValues call readIn on "m_aInitialValues" because that gets called after the ctor Change-Id: I8183fc4b0f5de2844562c971c86d655f2d4920ff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92288 Reviewed-by: Michael Stahl Tested-by: Jenkins --- svx/source/dialog/ClassificationDialog.cxx | 44 ++++++++++++++---------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'svx') diff --git a/svx/source/dialog/ClassificationDialog.cxx b/svx/source/dialog/ClassificationDialog.cxx index c81fa7a2dc29..89579cd7110b 100644 --- a/svx/source/dialog/ClassificationDialog.cxx +++ b/svx/source/dialog/ClassificationDialog.cxx @@ -178,6 +178,7 @@ ClassificationDialog::ClassificationDialog(weld::Window* pParent, const bool bPe , m_xEditWindow(new ClassificationEditView) , m_xEditWindowWeld(new weld::CustomWeld(*m_xBuilder, "classificationEditWindow", *m_xEditWindow)) { + m_xOkButton->connect_clicked(LINK(this, ClassificationDialog, OkHdl)); m_xSignButton->connect_clicked(LINK(this, ClassificationDialog, ButtonClicked)); m_xSignButton->set_visible(m_bPerParagraph); @@ -242,25 +243,9 @@ ClassificationDialog::ClassificationDialog(weld::Window* pParent, const bool bPe m_nAsyncExpandEvent = nullptr; m_xEditWindow->SetModifyHdl(LINK(this, ClassificationDialog, EditWindowModifiedHdl)); -} - -//do it async so gtk has a chance to shrink it to best size, otherwise its larger than min -IMPL_LINK_NOARG(ClassificationDialog, OnAsyncExpandHdl, void*, void) -{ - m_nAsyncExpandEvent = nullptr; - m_xIntellectualPropertyExpander->set_expanded(true); -} - -ClassificationDialog::~ClassificationDialog() -{ - if (m_nAsyncExpandEvent) - Application::RemoveUserEvent(m_nAsyncExpandEvent); -} -short ClassificationDialog::run() -{ readRecentlyUsed(); - readIn(m_aInitialValues); + toggleWidgetsDependingOnCategory(); int nNumber = 1; if (m_aRecentlyUsedValuesCollection.empty()) @@ -278,13 +263,19 @@ short ClassificationDialog::run() m_xRecentlyUsedListBox->append_text(rDescription); } } +} - short nResult = GenericDialogController::run(); - if (nResult == RET_OK) - { - writeRecentlyUsed(); - } - return nResult; +//do it async so gtk has a chance to shrink it to best size, otherwise its larger than min +IMPL_LINK_NOARG(ClassificationDialog, OnAsyncExpandHdl, void*, void) +{ + m_nAsyncExpandEvent = nullptr; + m_xIntellectualPropertyExpander->set_expanded(true); +} + +ClassificationDialog::~ClassificationDialog() +{ + if (m_nAsyncExpandEvent) + Application::RemoveUserEvent(m_nAsyncExpandEvent); } void ClassificationDialog::insertCategoryField(sal_Int32 nID) @@ -304,6 +295,7 @@ void ClassificationDialog::insertField(ClassificationType eType, OUString const void ClassificationDialog::setupValues(std::vector const & rInput) { m_aInitialValues = rInput; + readIn(m_aInitialValues); } void ClassificationDialog::readRecentlyUsed() @@ -673,6 +665,12 @@ IMPL_LINK(ClassificationDialog, ButtonClicked, weld::Button&, rButton, void) } } +IMPL_LINK_NOARG(ClassificationDialog, OkHdl, weld::Button&, void) +{ + writeRecentlyUsed(); + m_xDialog->response(RET_OK); +} + IMPL_LINK_NOARG(ClassificationDialog, SelectToolboxHdl, weld::ToggleButton&, void) { m_xEditWindow->InvertSelectionWeight(); -- cgit