summaryrefslogtreecommitdiff
path: root/vcl/source/window
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-12-11 14:03:18 +0000
committerCaolán McNamara <caolanm@redhat.com>2012-12-11 14:04:51 +0000
commita930214c40389b82ee1060ed65669dc772ed36ea (patch)
treed1c6c3a68ae2e3b2a78cac29127c897adce96943 /vcl/source/window
parent7ba2c823cac8998dfc0c2e19470f5edee70e63f0 (diff)
support 'active' property in ListBox
Change-Id: Ib1219e8e7031febd4f9cc599cb19426f974eac9c
Diffstat (limited to 'vcl/source/window')
-rw-r--r--vcl/source/window/builder.cxx26
1 files changed, 21 insertions, 5 deletions
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 39c5e0a2bed7..2bba9f4d2085 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -162,7 +162,7 @@ VclBuilder::VclBuilder(Window *pParent, OUString sUIDir, OUString sUIFile, OStri
const ListStore *pStore = get_model_by_name(aI->m_sValue);
SAL_WARN_IF(!pTarget || !pStore, "vcl", "missing elements of combobox/liststore");
if (pTarget && pStore)
- mungeModel(*pTarget, *pStore);
+ mungeModel(*pTarget, *pStore, aI->m_nActiveId);
}
//Set TextView buffers when everything has been imported
@@ -575,12 +575,28 @@ bool VclBuilder::extractScrollAdjustment(const OString &id, stringmap &rMap)
return false;
}
+namespace
+{
+ sal_Int32 extractActive(VclBuilder::stringmap &rMap)
+ {
+ sal_Int32 nActiveId = 0;
+ VclBuilder::stringmap::iterator aFind = rMap.find(OString("active"));
+ if (aFind != rMap.end())
+ {
+ nActiveId = aFind->second.toInt32();
+ rMap.erase(aFind);
+ }
+ return nActiveId;
+ }
+}
+
bool VclBuilder::extractModel(const OString &id, stringmap &rMap)
{
VclBuilder::stringmap::iterator aFind = rMap.find(OString("model"));
if (aFind != rMap.end())
{
- m_pParserState->m_aModelMaps.push_back(ComboBoxModelMap(id, aFind->second));
+ m_pParserState->m_aModelMaps.push_back(ComboBoxModelMap(id, aFind->second,
+ extractActive(rMap)));
rMap.erase(aFind);
return true;
}
@@ -1994,7 +2010,7 @@ const VclBuilder::Adjustment *VclBuilder::get_adjustment_by_name(OString sID) co
return NULL;
}
-void VclBuilder::mungeModel(ListBox &rTarget, const ListStore &rStore)
+void VclBuilder::mungeModel(ListBox &rTarget, const ListStore &rStore, sal_uInt16 nActiveId)
{
for (std::vector<ListStore::row>::const_iterator aI = rStore.m_aEntries.begin(), aEnd = rStore.m_aEntries.end();
aI != aEnd; ++aI)
@@ -2007,8 +2023,8 @@ void VclBuilder::mungeModel(ListBox &rTarget, const ListStore &rStore)
rTarget.SetEntryData(nEntry, (void*)nValue);
}
}
- if (!rStore.m_aEntries.empty())
- rTarget.SelectEntryPos(0);
+ if (nActiveId < rStore.m_aEntries.size())
+ rTarget.SelectEntryPos(nActiveId);
}
void VclBuilder::mungeSpinAdjustment(NumericFormatter &rTarget, const Adjustment &rAdjustment)