include/vcl/builder.hxx | 13 ++++++++++++- vcl/source/outdev/text.cxx | 1 - vcl/source/window/builder.cxx | 23 ++++++++++++++++------- 3 files changed, 28 insertions(+), 9 deletions(-)
New commits: commit 83cefb5ceb4428d61a5b9fae80d1e673131e9bfe Author: Caolán McNamara <caol...@redhat.com> Date: Fri Jun 8 11:08:27 2018 +0100 support comboboxtext id values Change-Id: Ibebdaab5b073a55cb646687890bc16d5f55c0341 Reviewed-on: https://gerrit.libreoffice.org/55460 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx index 71819bf8b2da..0c1ea3b56b14 100644 --- a/include/vcl/builder.hxx +++ b/include/vcl/builder.hxx @@ -49,6 +49,17 @@ class VclExpander; class VclMultiLineEdit; namespace xmlreader { class XmlReader; } +struct ComboBoxTextItem +{ + OUString m_sItem; + OString m_sId; + ComboBoxTextItem(const OUString& rItem, const OString& rId) + : m_sItem(rItem) + , m_sId(rId) + { + } +}; + class VCL_DLLPUBLIC VclBuilder { public: @@ -361,7 +372,7 @@ private: void handleRow(xmlreader::XmlReader &reader, const OString &rID); void handleTabChild(vcl::Window *pParent, xmlreader::XmlReader &reader); void handleMenu(xmlreader::XmlReader &reader, const OString &rID); - std::vector<OUString> handleItems(xmlreader::XmlReader &reader) const; + std::vector<ComboBoxTextItem> handleItems(xmlreader::XmlReader &reader) const; void handleSizeGroup(xmlreader::XmlReader &reader); diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 1d115dc56397..211dda947df8 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -713,7 +713,6 @@ void OutputDevice::SetTextFillColor() void OutputDevice::SetTextFillColor( const Color& rColor ) { - Color aColor( rColor ); bool bTransFill = ImplIsColorTransparent( aColor ); diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 8ba726cfdfed..677bd646b6c9 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -2639,11 +2639,11 @@ void VclBuilder::handleAtkObject(xmlreader::XmlReader &reader, vcl::Window *pWin } } -std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) const +std::vector<ComboBoxTextItem> VclBuilder::handleItems(xmlreader::XmlReader &reader) const { int nLevel = 1; - std::vector<OUString> aItems; + std::vector<ComboBoxTextItem> aItems; sal_Int32 nItemIndex = 0; while(true) @@ -2663,7 +2663,7 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons if (name.equals("item")) { bool bTranslated = false; - OString sContext; + OString sContext, sId; while (reader.nextAttribute(&nsId, &name)) { @@ -2676,6 +2676,11 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons name = reader.getAttributeValue(false); sContext = OString(name.begin, name.length); } + else if (name.equals("id")) + { + name = reader.getAttributeValue(false); + sId = OString(name.begin, name.length); + } } reader.nextItem( @@ -2695,7 +2700,7 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons if (m_pStringReplace) sFinalValue = (*m_pStringReplace)(sFinalValue); - aItems.push_back(sFinalValue); + aItems.emplace_back(sFinalValue, sId); ++nItemIndex; } } @@ -3021,7 +3026,7 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, PopupMenu *pSubMenu, const /// Insert items to a ComboBox or a ListBox. /// They have no common ancestor that would have 'InsertEntry()', so use a template. -template<typename T> bool insertItems(vcl::Window *pWindow, VclBuilder::stringmap &rMap, const std::vector<OUString> &rItems) +template<typename T> bool insertItems(vcl::Window *pWindow, VclBuilder::stringmap &rMap, const std::vector<ComboBoxTextItem> &rItems) { T *pContainer = dynamic_cast<T*>(pWindow); if (!pContainer) @@ -3029,7 +3034,11 @@ template<typename T> bool insertItems(vcl::Window *pWindow, VclBuilder::stringma sal_uInt16 nActiveId = extractActive(rMap); for (auto const& item : rItems) - pContainer->InsertEntry(item); + { + sal_Int32 nPos = pContainer->InsertEntry(item.m_sItem); + if (!item.m_sId.isEmpty()) + pContainer->SetEntryData(nPos, new OUString(OUString::fromUtf8(item.m_sId))); + } if (nActiveId < rItems.size()) pContainer->SelectEntryPos(nActiveId); @@ -3090,7 +3099,7 @@ VclPtr<vcl::Window> VclBuilder::handleObject(vcl::Window *pParent, xmlreader::Xm stringmap aProperties, aPangoAttributes; stringmap aAtkAttributes; - std::vector<OUString> aItems; + std::vector<ComboBoxTextItem> aItems; if (!sCustomProperty.isEmpty()) aProperties[OString("customproperty")] = sCustomProperty; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits