include/vcl/builder.hxx | 7 +- vcl/source/window/builder.cxx | 143 +++++++++++++++++++++--------------------- 2 files changed, 77 insertions(+), 73 deletions(-)
New commits: commit f2ca1c058b3400db54bd440dd00daf81c9bab04a Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Mon Aug 12 12:35:42 2024 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Aug 13 07:17:05 2024 +0200 tdf#130857 VclBuilder: Rename ParserState -> VclParserState This is in preparation of reintroducing `ParserState` in the base class, `BuilderBase`, with the plan to move things not specific to `vcl::Window`s there in the longer run, for reuse for subclasses not using `vcl::Window`, like the WIP `QtInstanceBuilder` from Omkar's pending WIP Gerrit change [1]. [1] https://gerrit.libreoffice.org/c/core/+/161831 Change-Id: I54758554b0093d3eefcd6f1f13f3479bdd07a0ae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171785 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx index 86d4f7037846..38af7c5f8305 100644 --- a/include/vcl/builder.hxx +++ b/include/vcl/builder.hxx @@ -253,7 +253,7 @@ private: }; - struct ParserState + struct VclParserState { std::locale m_aResLocale; @@ -293,7 +293,7 @@ private: sal_uInt16 m_nLastMenuItemId; - ParserState(); + VclParserState(); }; OUString m_sID; @@ -302,7 +302,7 @@ private: bool m_bToplevelHasDeferredInit; bool m_bToplevelHasDeferredProperties; bool m_bToplevelParentFound; - std::unique_ptr<ParserState> m_pParserState; + std::unique_ptr<VclParserState> m_pVclParserState; vcl::Window *get_by_name(std::u16string_view sID); void delete_by_name(const OUString& sID); diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index c2b0d8d408f4..6b13c1889fca 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -461,7 +461,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr , m_sHelpRoot(sUIFile) , m_pParent(pParent) , m_bToplevelParentFound(false) - , m_pParserState(new ParserState) + , m_pVclParserState(new VclParserState) , m_xFrame(std::move(xFrame)) { m_bToplevelHasDeferredInit = pParent && @@ -489,7 +489,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set Mnemonic widgets when everything has been imported - for (auto const& mnemonicWidget : m_pParserState->m_aMnemonicWidgetMaps) + for (auto const& mnemonicWidget : m_pVclParserState->m_aMnemonicWidgetMaps) { FixedText *pOne = get<FixedText>(mnemonicWidget.m_sID); vcl::Window *pOther = get(mnemonicWidget.m_sValue); @@ -500,7 +500,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set a11y relations and role when everything has been imported - for (auto const& elemAtk : m_pParserState->m_aAtkInfo) + for (auto const& elemAtk : m_pVclParserState->m_aAtkInfo) { vcl::Window *pSource = elemAtk.first; const stringmap &rMap = elemAtk.second; @@ -532,7 +532,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set radiobutton groups when everything has been imported - for (auto const& elem : m_pParserState->m_aGroupMaps) + for (auto const& elem : m_pVclParserState->m_aGroupMaps) { RadioButton *pOne = get<RadioButton>(elem.m_sID); RadioButton *pOther = get<RadioButton>(elem.m_sValue); @@ -553,7 +553,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr o3tl::sorted_vector<OUString> models; #endif //Set ComboBox models when everything has been imported - for (auto const& elem : m_pParserState->m_aModelMaps) + for (auto const& elem : m_pVclParserState->m_aModelMaps) { assert(models.insert(elem.m_sValue).second && "a liststore or treestore is used in duplicate widgets"); vcl::Window* pTarget = get(elem.m_sID); @@ -572,7 +572,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set TextView buffers when everything has been imported - for (auto const& elem : m_pParserState->m_aTextBufferMaps) + for (auto const& elem : m_pVclParserState->m_aTextBufferMaps) { VclMultiLineEdit *pTarget = get<VclMultiLineEdit>(elem.m_sID); const TextBuffer *pBuffer = get_buffer_by_name(elem.m_sValue); @@ -582,7 +582,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set SpinButton adjustments when everything has been imported - for (auto const& elem : m_pParserState->m_aNumericFormatterAdjustmentMaps) + for (auto const& elem : m_pVclParserState->m_aNumericFormatterAdjustmentMaps) { NumericFormatter *pTarget = dynamic_cast<NumericFormatter*>(get(elem.m_sID)); const Adjustment *pAdjustment = get_adjustment_by_name(elem.m_sValue); @@ -592,7 +592,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr mungeAdjustment(*pTarget, *pAdjustment); } - for (auto const& elem : m_pParserState->m_aFormattedFormatterAdjustmentMaps) + for (auto const& elem : m_pVclParserState->m_aFormattedFormatterAdjustmentMaps) { FormattedField *pTarget = dynamic_cast<FormattedField*>(get(elem.m_sID)); const Adjustment *pAdjustment = get_adjustment_by_name(elem.m_sValue); @@ -603,7 +603,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set ScrollBar adjustments when everything has been imported - for (auto const& elem : m_pParserState->m_aScrollAdjustmentMaps) + for (auto const& elem : m_pVclParserState->m_aScrollAdjustmentMaps) { ScrollBar *pTarget = get<ScrollBar>(elem.m_sID); const Adjustment *pAdjustment = get_adjustment_by_name(elem.m_sValue); @@ -613,7 +613,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set Scale(Slider) adjustments - for (auto const& elem : m_pParserState->m_aSliderAdjustmentMaps) + for (auto const& elem : m_pVclParserState->m_aSliderAdjustmentMaps) { Slider* pTarget = dynamic_cast<Slider*>(get(elem.m_sID)); const Adjustment* pAdjustment = get_adjustment_by_name(elem.m_sValue); @@ -625,7 +625,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set size-groups when all widgets have been imported - for (auto const& sizeGroup : m_pParserState->m_aSizeGroups) + for (auto const& sizeGroup : m_pVclParserState->m_aSizeGroups) { std::shared_ptr<VclSizeGroup> xGroup(std::make_shared<VclSizeGroup>()); @@ -641,7 +641,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr //Set button images when everything has been imported std::set<OUString> aImagesToBeRemoved; - for (auto const& elem : m_pParserState->m_aButtonImageWidgetMaps) + for (auto const& elem : m_pVclParserState->m_aButtonImageWidgetMaps) { PushButton *pTargetButton = nullptr; RadioButton *pTargetRadio = nullptr; @@ -696,8 +696,8 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr else pTargetRadio->SetModeRadioImage(pImage->GetImage()); - auto aFind = m_pParserState->m_aImageSizeMap.find(elem.m_sValue); - if (aFind != m_pParserState->m_aImageSizeMap.end()) + auto aFind = m_pVclParserState->m_aImageSizeMap.find(elem.m_sValue); + if (aFind != m_pVclParserState->m_aImageSizeMap.end()) { switch (aFind->second) { @@ -720,7 +720,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr SAL_WARN("vcl.builder", "unsupported image size " << aFind->second); break; } - m_pParserState->m_aImageSizeMap.erase(aFind); + m_pVclParserState->m_aImageSizeMap.erase(aFind); } } @@ -732,7 +732,7 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } //Set button menus when everything has been imported - for (auto const& elem : m_pParserState->m_aButtonMenuMaps) + for (auto const& elem : m_pVclParserState->m_aButtonMenuMaps) { MenuButton *pTarget = get<MenuButton>(elem.m_sID); PopupMenu *pMenu = get_menu(elem.m_sValue); @@ -745,13 +745,13 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr //Remove ScrollWindow parent widgets whose children in vcl implement scrolling //internally. - for (auto const& elem : m_pParserState->m_aRedundantParentWidgets) + for (auto const& elem : m_pVclParserState->m_aRedundantParentWidgets) { delete_by_window(elem.first); } //fdo#67378 merge the label into the disclosure button - for (auto const& elem : m_pParserState->m_aExpanderWidgets) + for (auto const& elem : m_pVclParserState->m_aExpanderWidgets) { vcl::Window *pChild = elem->get_child(); vcl::Window* pLabel = elem->GetWindow(GetWindowType::LastChild); @@ -766,11 +766,11 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const OUStr } // create message dialog message area now - for (auto const& elem : m_pParserState->m_aMessageDialogs) + for (auto const& elem : m_pVclParserState->m_aMessageDialogs) elem->create_message_area(); //drop maps, etc. that we don't need again - m_pParserState.reset(); + m_pVclParserState.reset(); SAL_WARN_IF(!m_sID.isEmpty() && (!m_bToplevelParentFound && !get_by_name(m_sID)), "vcl.builder", "Requested top level widget \"" << m_sID << "\" not found in " << sUIFile); @@ -1270,7 +1270,7 @@ void VclBuilder::extractGroup(const OUString &id, stringmap &rMap) sal_Int32 nDelim = sID.indexOf(':'); if (nDelim != -1) sID = sID.copy(0, nDelim); - m_pParserState->m_aGroupMaps.emplace_back(id, sID); + m_pVclParserState->m_aGroupMaps.emplace_back(id, sID); rMap.erase(aFind); } } @@ -1278,13 +1278,13 @@ void VclBuilder::extractGroup(const OUString &id, stringmap &rMap) void VclBuilder::connectNumericFormatterAdjustment(const OUString &id, const OUString &rAdjustment) { if (!rAdjustment.isEmpty()) - m_pParserState->m_aNumericFormatterAdjustmentMaps.emplace_back(id, rAdjustment); + m_pVclParserState->m_aNumericFormatterAdjustmentMaps.emplace_back(id, rAdjustment); } void VclBuilder::connectFormattedFormatterAdjustment(const OUString &id, const OUString &rAdjustment) { if (!rAdjustment.isEmpty()) - m_pParserState->m_aFormattedFormatterAdjustmentMaps.emplace_back(id, rAdjustment); + m_pVclParserState->m_aFormattedFormatterAdjustmentMaps.emplace_back(id, rAdjustment); } bool VclBuilder::extractAdjustmentToMap(const OUString& id, VclBuilder::stringmap& rMap, std::vector<WidgetAdjustmentMap>& rAdjustmentMap) @@ -1356,7 +1356,7 @@ void VclBuilder::extractModel(const OUString &id, stringmap &rMap) VclBuilder::stringmap::iterator aFind = rMap.find(u"model"_ustr); if (aFind != rMap.end()) { - m_pParserState->m_aModelMaps.emplace_back(id, aFind->second, + m_pVclParserState->m_aModelMaps.emplace_back(id, aFind->second, extractActive(rMap)); rMap.erase(aFind); } @@ -1367,7 +1367,7 @@ void VclBuilder::extractBuffer(const OUString &id, stringmap &rMap) VclBuilder::stringmap::iterator aFind = rMap.find(u"buffer"_ustr); if (aFind != rMap.end()) { - m_pParserState->m_aTextBufferMaps.emplace_back(id, aFind->second); + m_pVclParserState->m_aTextBufferMaps.emplace_back(id, aFind->second); rMap.erase(aFind); } } @@ -1386,7 +1386,7 @@ void VclBuilder::extractButtonImage(const OUString &id, stringmap &rMap, bool bR VclBuilder::stringmap::iterator aFind = rMap.find(u"image"_ustr); if (aFind != rMap.end()) { - m_pParserState->m_aButtonImageWidgetMaps.emplace_back(id, aFind->second, bRadio); + m_pVclParserState->m_aButtonImageWidgetMaps.emplace_back(id, aFind->second, bRadio); rMap.erase(aFind); } } @@ -1400,7 +1400,7 @@ void VclBuilder::extractMnemonicWidget(const OUString &rLabelID, stringmap &rMap sal_Int32 nDelim = sID.indexOf(':'); if (nDelim != -1) sID = sID.copy(0, nDelim); - m_pParserState->m_aMnemonicWidgetMaps.emplace_back(rLabelID, sID); + m_pVclParserState->m_aMnemonicWidgetMaps.emplace_back(rLabelID, sID); rMap.erase(aFind); } } @@ -1431,7 +1431,7 @@ void VclBuilder::cleanupWidgetOwnScrolling(vcl::Window *pScrollParent, vcl::Wind sal_Int32 nHeightReq = pScrollParent->get_height_request(); rMap[u"height-request"_ustr] = OUString::number(nHeightReq); - m_pParserState->m_aRedundantParentWidgets[pScrollParent] = pWindow; + m_pVclParserState->m_aRedundantParentWidgets[pScrollParent] = pWindow; } #ifndef DISABLE_DYNLOADING @@ -1683,7 +1683,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString if (extractResizable(rMap)) nBits |= WB_SIZEABLE; VclPtr<MessageDialog> xDialog(VclPtr<MessageDialog>::Create(pParent, nBits)); - m_pParserState->m_aMessageDialogs.push_back(xDialog); + m_pVclParserState->m_aMessageDialogs.push_back(xDialog); xWindow = xDialog; #if defined _WIN32 xWindow->set_border_width(3); @@ -1733,7 +1733,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString else if (name == "GtkExpander") { VclPtrInstance<VclExpander> pExpander(pParent); - m_pParserState->m_aExpanderWidgets.push_back(pExpander); + m_pVclParserState->m_aExpanderWidgets.push_back(pExpander); xWindow = pExpander; } else if (name == "GtkButton" || (!isLegacy() && name == "GtkToggleButton")) @@ -1746,7 +1746,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString { assert(isLegacy() && "use GtkMenuButton"); xButton = extractStockAndBuildMenuButton(pParent, rMap); - m_pParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); + m_pVclParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); } xButton->SetImageAlign(ImageAlign::Left); //default to left setupFromActionName(xButton, rMap, m_xFrame); @@ -1758,7 +1758,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString OUString sMenu = extractPopupMenu(rMap); if (!sMenu.isEmpty()) - m_pParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); + m_pVclParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); OUString sType = extractWidgetName(rMap); if (sType.isEmpty()) @@ -1785,7 +1785,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString OUString sMenu = BuilderUtils::extractCustomProperty(rMap); assert(sMenu.getLength() && "not implemented yet"); xButton = extractStockAndBuildMenuToggleButton(pParent, rMap); - m_pParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); + m_pVclParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); xButton->SetImageAlign(ImageAlign::Left); //default to left setupFromActionName(xButton, rMap, m_xFrame); xWindow = xButton; @@ -1863,7 +1863,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString xWindow = VclPtr<ManagedMenuButton>::Create(pParent, WB_CLIPCHILDREN|WB_CENTER|WB_VCENTER|WB_FLATBUTTON); OUString sMenu = BuilderUtils::extractCustomProperty(rMap); if (!sMenu.isEmpty()) - m_pParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); + m_pVclParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); setupFromActionName(static_cast<Button*>(xWindow.get()), rMap, m_xFrame); } else if (name == "sfxlo-PriorityMergedHBox") @@ -2019,7 +2019,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString OUString sIconName = extractIconName(rMap); if (!sIconName.isEmpty()) xFixedImage->SetImage(FixedImage::loadThemeImage(sIconName)); - m_pParserState->m_aImageSizeMap[id] = getImageSize(rMap); + m_pVclParserState->m_aImageSizeMap[id] = getImageSize(rMap); xWindow = xFixedImage; //such parentless GtkImages are temps used to set icons on buttons //default them to hidden to stop e.g. insert->index entry flicking temp @@ -2036,19 +2036,19 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString } else if (name == "GtkScrollbar") { - extractAdjustmentToMap(id, rMap, m_pParserState->m_aScrollAdjustmentMaps); + extractAdjustmentToMap(id, rMap, m_pVclParserState->m_aScrollAdjustmentMaps); bVertical = extractOrientation(rMap); xWindow = VclPtr<ScrollBar>::Create(pParent, bVertical ? WB_VERT : WB_HORZ); } else if (name == "GtkProgressBar") { - extractAdjustmentToMap(id, rMap, m_pParserState->m_aScrollAdjustmentMaps); + extractAdjustmentToMap(id, rMap, m_pVclParserState->m_aScrollAdjustmentMaps); bVertical = extractOrientation(rMap); xWindow = VclPtr<ProgressBar>::Create(pParent, bVertical ? WB_VERT : WB_HORZ, ProgressBar::BarStyle::Progress); } else if (name == "GtkLevelBar") { - extractAdjustmentToMap(id, rMap, m_pParserState->m_aScrollAdjustmentMaps); + extractAdjustmentToMap(id, rMap, m_pVclParserState->m_aScrollAdjustmentMaps); bVertical = extractOrientation(rMap); xWindow = VclPtr<ProgressBar>::Create(pParent, bVertical ? WB_VERT : WB_HORZ, ProgressBar::BarStyle::Level); } @@ -2100,7 +2100,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString } else if (name == "GtkScale") { - extractAdjustmentToMap(id, rMap, m_pParserState->m_aSliderAdjustmentMaps); + extractAdjustmentToMap(id, rMap, m_pVclParserState->m_aSliderAdjustmentMaps); bool bDrawValue = extractDrawValue(rMap); if (bDrawValue) { @@ -2165,7 +2165,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString if (!extractVisible(rMap)) pToolBox->HideItem(nItemId); - m_pParserState->m_nLastToolbarId = nItemId; + m_pVclParserState->m_nLastToolbarId = nItemId; return nullptr; // no widget to be created } @@ -2207,7 +2207,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString { OUString sMenu = BuilderUtils::extractCustomProperty(rMap); if (!sMenu.isEmpty()) - m_pParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); + m_pVclParserState->m_aButtonMenuMaps.emplace_back(id, sMenu); setupFromActionName(static_cast<Button*>(xWindow.get()), rMap, m_xFrame); } } @@ -2235,8 +2235,8 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString Size aSize(xWindow->GetSizePixel()); aSize.setHeight(xWindow->get_preferred_size().Height()); xWindow->SetSizePixel(aSize); - pToolBox->SetItemWindow(m_pParserState->m_nLastToolbarId, xWindow); - pToolBox->SetItemExpand(m_pParserState->m_nLastToolbarId, true); + pToolBox->SetItemWindow(m_pVclParserState->m_nLastToolbarId, xWindow); + pToolBox->SetItemExpand(m_pVclParserState->m_nLastToolbarId, true); } } return xWindow; @@ -2554,7 +2554,7 @@ VclPtr<vcl::Window> VclBuilder::insertObject(vcl::Window *pParent, const OUStrin for (auto const& [ rKey, rValue ] : rPango) pCurrentChild->set_font_attribute(rKey, rValue); - m_pParserState->m_aAtkInfo[pCurrentChild] = rAtk; + m_pVclParserState->m_aAtkInfo[pCurrentChild] = rAtk; } rProps.clear(); @@ -3014,7 +3014,7 @@ void VclBuilder::handleRow(xmlreader::XmlReader &reader, const OUString &rID) OUString sFinalValue; if (bTranslated) { - sFinalValue = Translate::get(TranslateId{sContext.getStr(), sValue.getStr()}, m_pParserState->m_aResLocale); + sFinalValue = Translate::get(TranslateId{sContext.getStr(), sValue.getStr()}, m_pVclParserState->m_aResLocale); } else sFinalValue = OUString::fromUtf8(sValue); @@ -3035,7 +3035,7 @@ void VclBuilder::handleRow(xmlreader::XmlReader &reader, const OUString &rID) break; } - m_pParserState->m_aModels[rID].m_aEntries.push_back(aRow); + m_pVclParserState->m_aModels[rID].m_aEntries.push_back(aRow); } void VclBuilder::handleListStore(xmlreader::XmlReader &reader, const OUString &rID, std::u16string_view rClass) @@ -3124,7 +3124,7 @@ void VclBuilder::applyAtkProperties(vcl::Window *pWindow, const stringmap& rProp { ToolBox* pToolBox = dynamic_cast<ToolBox*>(pWindow); assert(pToolBox); - pToolBox->SetAccessibleName(m_pParserState->m_nLastToolbarId, rValue); + pToolBox->SetAccessibleName(m_pVclParserState->m_nLastToolbarId, rValue); } } else if (pWindow && rKey.match("AtkObject::")) @@ -3185,7 +3185,7 @@ std::vector<ComboBoxTextItem> VclBuilder::handleItems(xmlreader::XmlReader &read OUString sFinalValue; if (bTranslated) { - sFinalValue = Translate::get(TranslateId{sContext.getStr(), sValue.getStr()}, m_pParserState->m_aResLocale); + sFinalValue = Translate::get(TranslateId{sContext.getStr(), sValue.getStr()}, m_pVclParserState->m_aResLocale); } else sFinalValue = OUString::fromUtf8(sValue); @@ -3383,8 +3383,8 @@ void VclBuilder::handleMenuObject(Menu *pParent, xmlreader::XmlReader &reader) void VclBuilder::handleSizeGroup(xmlreader::XmlReader &reader) { - m_pParserState->m_aSizeGroups.emplace_back(); - SizeGroup &rSizeGroup = m_pParserState->m_aSizeGroups.back(); + m_pVclParserState->m_aSizeGroups.emplace_back(); + SizeGroup &rSizeGroup = m_pVclParserState->m_aSizeGroups.back(); int nLevel = 1; @@ -3484,12 +3484,12 @@ void VclBuilder::insertMenuObject(Menu *pParent, PopupMenu *pSubMenu, const OUSt stringmap &rProps, stringmap &rAtkProps, accelmap &rAccels) { sal_uInt16 nOldCount = pParent->GetItemCount(); - sal_uInt16 nNewId = ++m_pParserState->m_nLastMenuItemId; + sal_uInt16 nNewId = ++m_pVclParserState->m_nLastMenuItemId; if(rClass == "NotebookBarAddonsMenuMergePoint") { NotebookBarAddonsMerger::MergeNotebookBarMenuAddons(pParent, nNewId, rID, *m_pNotebookBarAddonsItem); - m_pParserState->m_nLastMenuItemId = pParent->GetItemCount(); + m_pVclParserState->m_nLastMenuItemId = pParent->GetItemCount(); } else if (rClass == "GtkMenuItem") { @@ -3727,12 +3727,12 @@ VclPtr<vcl::Window> VclBuilder::handleObject(vcl::Window *pParent, stringmap *pA if (sClass == "GtkAdjustment") { - m_pParserState->m_aAdjustments[sID] = aProperties; + m_pVclParserState->m_aAdjustments[sID] = aProperties; return nullptr; } else if (sClass == "GtkTextBuffer") { - m_pParserState->m_aTextBuffers[sID] = aProperties; + m_pVclParserState->m_aTextBuffers[sID] = aProperties; return nullptr; } @@ -3756,7 +3756,7 @@ void VclBuilder::handleInterfaceDomain(xmlreader::XmlReader& rReader) { xmlreader::Span name = rReader.getAttributeValue(false); const OString sPrefixName(name.begin, name.length); - m_pParserState->m_aResLocale = Translate::Create(sPrefixName); + m_pVclParserState->m_aResLocale = Translate::Create(sPrefixName); } void VclBuilder::handlePacking(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader) @@ -3809,8 +3809,8 @@ void VclBuilder::applyPackingProperty(vcl::Window *pCurrent, if (pCurrent->GetType() == WindowType::SCROLLWINDOW) { - auto aFind = m_pParserState->m_aRedundantParentWidgets.find(VclPtr<vcl::Window>(pCurrent)); - if (aFind != m_pParserState->m_aRedundantParentWidgets.end()) + auto aFind = m_pVclParserState->m_aRedundantParentWidgets.find(VclPtr<vcl::Window>(pCurrent)); + if (aFind != m_pVclParserState->m_aRedundantParentWidgets.end()) { pCurrent = aFind->second; assert(pCurrent); @@ -3832,7 +3832,7 @@ void VclBuilder::applyPackingProperty(vcl::Window *pCurrent, { bool bTrue = (!sValue.isEmpty() && (sValue[0] == 't' || sValue[0] == 'T' || sValue[0] == '1')); if (pToolBoxParent) - pToolBoxParent->SetItemExpand(m_pParserState->m_nLastToolbarId, bTrue); + pToolBoxParent->SetItemExpand(m_pVclParserState->m_nLastToolbarId, bTrue); else pCurrent->set_expand(bTrue); continue; @@ -3998,7 +3998,7 @@ void VclBuilder::collectProperty(xmlreader::XmlReader &reader, stringmap &rMap) OUString sFinalValue; if (bTranslated) { - sFinalValue = Translate::get(TranslateId{sContext.getStr(), sValue.getStr()}, m_pParserState->m_aResLocale); + sFinalValue = Translate::get(TranslateId{sContext.getStr(), sValue.getStr()}, m_pVclParserState->m_aResLocale); } else sFinalValue = OUString::fromUtf8(sValue); @@ -4211,24 +4211,24 @@ void VclBuilder::set_window_packing_position(const vcl::Window *pWindow, sal_Int const VclBuilder::ListStore *VclBuilder::get_model_by_name(const OUString& sID) const { - const auto aI = m_pParserState->m_aModels.find(sID); - if (aI != m_pParserState->m_aModels.end()) + const auto aI = m_pVclParserState->m_aModels.find(sID); + if (aI != m_pVclParserState->m_aModels.end()) return &(aI->second); return nullptr; } const VclBuilder::TextBuffer *VclBuilder::get_buffer_by_name(const OUString& sID) const { - const auto aI = m_pParserState->m_aTextBuffers.find(sID); - if (aI != m_pParserState->m_aTextBuffers.end()) + const auto aI = m_pVclParserState->m_aTextBuffers.find(sID); + if (aI != m_pVclParserState->m_aTextBuffers.end()) return &(aI->second); return nullptr; } const VclBuilder::Adjustment *VclBuilder::get_adjustment_by_name(const OUString& sID) const { - const auto aI = m_pParserState->m_aAdjustments.find(sID); - if (aI != m_pParserState->m_aAdjustments.end()) + const auto aI = m_pVclParserState->m_aAdjustments.find(sID); + if (aI != m_pVclParserState->m_aAdjustments.end()) return &(aI->second); return nullptr; } @@ -4432,7 +4432,7 @@ void VclBuilder::mungeTextBuffer(VclMultiLineEdit &rTarget, const TextBuffer &rT } } -VclBuilder::ParserState::ParserState() +VclBuilder::VclParserState::VclParserState() : m_nLastToolbarId(0) , m_nLastMenuItemId(0) {} commit 5fff519d2be5a16be2d7bb22b1f6b6b609132014 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Mon Aug 12 12:20:39 2024 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Aug 13 07:16:57 2024 +0200 tdf#130857 VclBuilder: Extract helper for interface domain Extract a helper method `VclBuilder::handleInterfaceDomain` that handles the "domain" attribute for the "interface" node that specifies the translation domain. This is more or less extracted from Omkar's WIP Gerrit change <https://gerrit.libreoffice.org/c/core/+/163103/9>. Co-authored-by: OmkarAcharekar <omkarachareka...@gmail.com> Change-Id: I30ae1362b4d25ca478d2872cd695006a133d73f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171764 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx index 52f43870f52c..86d4f7037846 100644 --- a/include/vcl/builder.hxx +++ b/include/vcl/builder.hxx @@ -355,6 +355,7 @@ private: // if bToolbarItem=true, pParent is the ToolBox that the item belongs to, since there's no widget for the item itself VclPtr<vcl::Window> handleObject(vcl::Window *pParent, stringmap *pAtkProps, xmlreader::XmlReader &reader, bool bToolbarItem); + void handleInterfaceDomain(xmlreader::XmlReader& rReader); void handlePacking(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader); void applyPackingProperty(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader); void collectProperty(xmlreader::XmlReader &reader, stringmap &rVec) const; diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 0b5b6979f80f..c2b0d8d408f4 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -2869,11 +2869,7 @@ void VclBuilder::handleChild(vcl::Window *pParent, stringmap* pAtkProps, xmlread while (reader.nextAttribute(&nsId, &name)) { if (name == "domain") - { - name = reader.getAttributeValue(false); - sType = OString(name.begin, name.length); - m_pParserState->m_aResLocale = Translate::Create(sType); - } + handleInterfaceDomain(reader); } ++nLevel; } @@ -3756,6 +3752,13 @@ VclPtr<vcl::Window> VclBuilder::handleObject(vcl::Window *pParent, stringmap *pA return pCurrentChild; } +void VclBuilder::handleInterfaceDomain(xmlreader::XmlReader& rReader) +{ + xmlreader::Span name = rReader.getAttributeValue(false); + const OString sPrefixName(name.begin, name.length); + m_pParserState->m_aResLocale = Translate::Create(sPrefixName); +} + void VclBuilder::handlePacking(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader) { xmlreader::Span name;