diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-03-01 14:58:46 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-03-01 15:41:02 +0100 |
commit | e0e6d8a5827ce1cbc73caeab10c2e7ba9e66035b (patch) | |
tree | 3a738e328796c50191f996142604853687d504a4 | |
parent | a03958af8d04889bb6206f620185c87fc1fb27d1 (diff) |
sfx2 classification: select current toolbar listbox entry when state changes
With this, if .uno:ClassificationApply is invoked from e.g. a macro, the
toolbar listbox is updated to reflect the classification of the
document. Previously the listbox wasn't updated.
Change-Id: I45a7c6ee2f3b06e048fa119264c615e78bc46b37
-rw-r--r-- | sfx2/source/view/classificationcontroller.cxx | 17 | ||||
-rw-r--r-- | sw/sdi/_basesh.sdi | 1 | ||||
-rw-r--r-- | sw/source/uibase/app/docst.cxx | 4 |
3 files changed, 15 insertions, 7 deletions
diff --git a/sfx2/source/view/classificationcontroller.cxx b/sfx2/source/view/classificationcontroller.cxx index b05431c7ce4d..fa54a9b86fbe 100644 --- a/sfx2/source/view/classificationcontroller.cxx +++ b/sfx2/source/view/classificationcontroller.cxx @@ -122,7 +122,7 @@ IMPL_LINK_NOARG_TYPED(ClassificationCategoriesController, SelectHdl, ListBox&, v void ClassificationCategoriesController::statusChanged(const frame::FeatureStateEvent& /*rEvent*/) throw (uno::RuntimeException, std::exception) { - if (!m_pCategories || m_pCategories->GetEntryCount() > 0) + if (!m_pCategories) return; SfxObjectShell* pObjectShell = SfxObjectShell::Current(); @@ -130,12 +130,15 @@ void ClassificationCategoriesController::statusChanged(const frame::FeatureState return; SfxClassificationHelper aHelper(*pObjectShell); - std::vector<OUString> aNames = aHelper.GetBACNames(); - for (const OUString& rName : aNames) - m_pCategories->InsertEntry(rName); - // Normally VclBuilder::makeObject() does this. - m_pCategories->EnableAutoSize(true); - m_pCategories->SetSizePixel(m_pCategories->GetOptimalSize()); + if (m_pCategories->GetEntryCount() == 0) + { + std::vector<OUString> aNames = aHelper.GetBACNames(); + for (const OUString& rName : aNames) + m_pCategories->InsertEntry(rName); + // Normally VclBuilder::makeObject() does this. + m_pCategories->EnableAutoSize(true); + m_pCategories->SetSizePixel(m_pCategories->GetOptimalSize()); + } // Restore state based on the doc. model. const OUString& rCategoryName = aHelper.GetBACName(); diff --git a/sw/sdi/_basesh.sdi b/sw/sdi/_basesh.sdi index 22a5c133ad68..87de4941bc8e 100644 --- a/sw/sdi/_basesh.sdi +++ b/sw/sdi/_basesh.sdi @@ -364,6 +364,7 @@ interface BaseTextSelection SID_CLASSIFICATION_APPLY [ ExecMethod = Execute ; + StateMethod = StateStyle ; ] //OS: Selection.Escape gibt es zusaetzlich zu Window.Escape diff --git a/sw/source/uibase/app/docst.cxx b/sw/source/uibase/app/docst.cxx index cdd704ef0b27..c6680785c650 100644 --- a/sw/source/uibase/app/docst.cxx +++ b/sw/source/uibase/app/docst.cxx @@ -256,6 +256,10 @@ void SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh) } break; + case SID_CLASSIFICATION_APPLY: + // Just trigger ClassificationCategoriesController::statusChanged(). + rSet.InvalidateItem(nWhich); + break; default: OSL_FAIL("Invalid SlotId"); } |