summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-06-08 11:08:27 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-06-08 21:34:10 +0200
commit83cefb5ceb4428d61a5b9fae80d1e673131e9bfe (patch)
tree35ca37888414e6c0bb4b11440034b506afa0b38e
parentcf7b97d1328ec2f2c8254abb9ce67d63d9c54c80 (diff)
support comboboxtext id values
Change-Id: Ibebdaab5b073a55cb646687890bc16d5f55c0341 Reviewed-on: https://gerrit.libreoffice.org/55460 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--include/vcl/builder.hxx13
-rw-r--r--vcl/source/outdev/text.cxx1
-rw-r--r--vcl/source/window/builder.cxx23
3 files changed, 28 insertions, 9 deletions
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;