diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-03-04 17:31:24 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-03-11 10:00:31 +0100 |
commit | ccb2b0078f07194befa61f1e3fd88e53ff236871 (patch) | |
tree | 0bfe058721741581eb3ef6489737fdbd902f8d04 /vcl/source | |
parent | 96d0cf0d7bccfea0b9d867cf00a17c7a2409aa87 (diff) |
weld SvxMenuConfigPage/SvxToolbarConfigPage
Change-Id: I166ac6c0be8461ea38db711796d1e14fc5b78998
Reviewed-on: https://gerrit.libreoffice.org/68889
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 154 | ||||
-rw-r--r-- | vcl/source/treelist/treelistbox.cxx | 2 | ||||
-rw-r--r-- | vcl/source/uitest/uiobject.cxx | 2 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 52 |
4 files changed, 127 insertions, 83 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 392ecb04ba81..3a9d59a8bdb2 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -32,6 +32,7 @@ #include <salmenu.hxx> #include <svdata.hxx> #include <messagedialog.hxx> +#include <treeglue.hxx> #include <unotools/accessiblerelationsethelper.hxx> #include <utility> #include <tools/helpers.hxx> @@ -477,6 +478,11 @@ public: m_xWidget->SetQuickHelpText(rTip); } + virtual OUString get_tooltip_text() const override + { + return m_xWidget->GetQuickHelpText(); + } + virtual void connect_focus_in(const Link<Widget&, void>& rLink) override { ensure_event_listener(); @@ -1539,6 +1545,12 @@ public: pMenu->EnableItem(rIdent, bSensitive); } + virtual void remove_item(const OString& rId) override + { + PopupMenu* pMenu = m_xMenuButton->GetPopupMenu(); + pMenu->RemoveItem(pMenu->GetItemPos(pMenu->GetItemId(rId))); + } + virtual void set_item_active(const OString& rIdent, bool bActive) override { PopupMenu* pMenu = m_xMenuButton->GetPopupMenu(); @@ -2187,6 +2199,7 @@ private: DECL_LINK(EndDragHdl, HeaderBar*, void); DECL_LINK(HeaderBarClickedHdl, HeaderBar*, void); DECL_LINK(ToggleHdl, SvLBoxButtonData*, void); + DECL_LINK(ModelChangedHdl, SvTreeListBox*, void); DECL_LINK(VisibleRangeChangedHdl, SvTreeListBox*, void); DECL_LINK(CompareHdl, const SvSortData&, sal_Int32); public: @@ -2203,13 +2216,21 @@ public: m_xTreeView->SetExpandingHdl(LINK(this, SalInstanceTreeView, ExpandingHdl)); const long aTabPositions[] = { 0 }; m_xTreeView->SetTabs(SAL_N_ELEMENTS(aTabPositions), aTabPositions); - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); - if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + + if (pHeaderBox) { - //make the last entry fill available space - pHeaderBar->SetItemSize(pHeaderBar->GetItemId(pHeaderBar->GetItemCount() - 1 ), HEADERBAR_FULLSIZE); - pHeaderBar->SetEndDragHdl(LINK(this, SalInstanceTreeView, EndDragHdl)); - pHeaderBar->SetSelectHdl(LINK(this, SalInstanceTreeView, HeaderBarClickedHdl)); + if (HeaderBar* pHeaderBar = pHeaderBox->GetHeaderBar()) + { + //make the last entry fill available space + pHeaderBar->SetItemSize(pHeaderBar->GetItemId(pHeaderBar->GetItemCount() - 1 ), HEADERBAR_FULLSIZE); + pHeaderBar->SetEndDragHdl(LINK(this, SalInstanceTreeView, EndDragHdl)); + pHeaderBar->SetSelectHdl(LINK(this, SalInstanceTreeView, HeaderBarClickedHdl)); + } + } + else + { + static_cast<LclTabListBox&>(*m_xTreeView).SetModelChangedHdl(LINK(this, SalInstanceTreeView, ModelChangedHdl)); } m_aCheckButtonData.SetLink(LINK(this, SalInstanceTreeView, ToggleHdl)); m_aRadioButtonData.SetLink(LINK(this, SalInstanceTreeView, ToggleHdl)); @@ -2222,7 +2243,7 @@ public: for (size_t i = 0; i < rWidths.size(); ++i) aTabPositions.push_back(aTabPositions[i] + rWidths[i]); m_xTreeView->SetTabs(aTabPositions.size(), aTabPositions.data(), MapUnit::MapPixel); - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { for (size_t i = 0; i < rWidths.size(); ++i) @@ -2243,7 +2264,7 @@ public: virtual OUString get_column_title(int nColumn) const override { - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { return pHeaderBar->GetItemText(pHeaderBar->GetItemId(nColumn)); @@ -2253,7 +2274,7 @@ public: virtual void set_column_title(int nColumn, const OUString& rTitle) override { - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { return pHeaderBar->SetItemText(pHeaderBar->GetItemId(nColumn), rTitle); @@ -2262,7 +2283,7 @@ public: virtual void show() override { - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { pHeaderBar->Show(); @@ -2272,7 +2293,7 @@ public: virtual void hide() override { - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { pHeaderBar->Hide(); @@ -2280,11 +2301,12 @@ public: SalInstanceContainer::hide(); } - virtual void insert(weld::TreeIter* pParent, int pos, const OUString* pStr, const OUString* pId, + virtual void insert(const weld::TreeIter* pParent, int pos, const OUString* pStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface, const OUString* pExpanderName, bool bChildrenOnDemand, weld::TreeIter* pRet) override { - SalInstanceTreeIter* pVclIter = static_cast<SalInstanceTreeIter*>(pParent); + disable_notify_events(); + const SalInstanceTreeIter* pVclIter = static_cast<const SalInstanceTreeIter*>(pParent); SvTreeListEntry* iter = pVclIter ? pVclIter->iter : nullptr; auto nInsertPos = pos == -1 ? TREELIST_APPEND : pos; void* pUserData; @@ -2329,6 +2351,7 @@ public: { m_xTreeView->InsertEntry("<dummy>", pEntry, false, 0, nullptr); } + enable_notify_events(); } virtual void set_font_color(int pos, const Color& rColor) const override @@ -2375,10 +2398,20 @@ public: pModel->Move(pEntry, nullptr, 0); } + virtual void swap(int pos1, int pos2) override + { + SvTreeList* pModel = m_xTreeView->GetModel(); + SvTreeListEntry* pEntry1 = pModel->GetEntry(nullptr, pos1); + SvTreeListEntry* pEntry2 = pModel->GetEntry(nullptr, pos2); + pModel->Move(pEntry1, pEntry2); + } + virtual void clear() override { + disable_notify_events(); m_xTreeView->Clear(); m_aUserData.clear(); + enable_notify_events(); } virtual int n_children() const override @@ -2579,9 +2612,14 @@ public: m_xTreeView->ModelHasEntryInvalidated(pEntry); } - virtual void set_image(int pos, const OUString& rImage, int col) override + void set_image(SvTreeListEntry* pEntry, const Image& rImage, int col) { - SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos); + if (col == -1) + { + m_xTreeView->SetExpandedEntryBmp(pEntry, rImage); + m_xTreeView->SetCollapsedEntryBmp(pEntry, rImage); + return; + } ++col; //skip dummy/expander column @@ -2589,10 +2627,9 @@ public: for (int i = pEntry->ItemCount(); i < col ; ++i) pEntry->AddItem(std::make_unique<SvLBoxString>("")); - Image aImage(createImage(rImage)); if (static_cast<size_t>(col) == pEntry->ItemCount()) { - pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage, false)); + pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(rImage, rImage, false)); SvViewDataEntry* pViewData = m_xTreeView->GetViewDataEntry(pEntry); m_xTreeView->InitViewData(pViewData, pEntry); } @@ -2601,12 +2638,39 @@ public: assert(col >= 0 && static_cast<size_t>(col) < pEntry->ItemCount()); SvLBoxItem& rItem = pEntry->GetItem(col); assert(dynamic_cast<SvLBoxContextBmp*>(&rItem)); - static_cast<SvLBoxContextBmp&>(rItem).SetBitmap1(aImage); - static_cast<SvLBoxContextBmp&>(rItem).SetBitmap2(aImage); + static_cast<SvLBoxContextBmp&>(rItem).SetBitmap1(rImage); + static_cast<SvLBoxContextBmp&>(rItem).SetBitmap2(rImage); } + m_xTreeView->SetEntryHeight(pEntry); m_xTreeView->ModelHasEntryInvalidated(pEntry); + } + virtual void set_image(int pos, const OUString& rImage, int col) override + { + set_image(m_xTreeView->GetEntry(nullptr, pos), createImage(rImage), col); + } + + virtual void set_image(int pos, const css::uno::Reference<css::graphic::XGraphic>& rImage, int col) override + { + set_image(m_xTreeView->GetEntry(nullptr, pos), Image(rImage), col); + } + + virtual void set_image(int pos, VirtualDevice& rImage, int col) override + { + set_image(m_xTreeView->GetEntry(nullptr, pos), createImage(rImage), col); + } + + virtual void set_image(const weld::TreeIter& rIter, const css::uno::Reference<css::graphic::XGraphic>& rImage, int col) override + { + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); + set_image(rVclIter.iter, Image(rImage), col); + } + + virtual void set_image(const weld::TreeIter& rIter, const OUString& rImage, int col) override + { + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); + set_image(rVclIter.iter, createImage(rImage), col); } const OUString* getEntryData(int index) const @@ -2780,16 +2844,16 @@ public: return m_xTreeView->IsExpanded(rVclIter.iter); } - virtual void expand_row(weld::TreeIter& rIter) override + virtual void expand_row(const weld::TreeIter& rIter) override { - SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter); + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); if (!m_xTreeView->IsExpanded(rVclIter.iter) && signal_expanding(rIter)) m_xTreeView->Expand(rVclIter.iter); } - virtual void collapse_row(weld::TreeIter& rIter) override + virtual void collapse_row(const weld::TreeIter& rIter) override { - SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter); + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); if (m_xTreeView->IsExpanded(rVclIter.iter)) m_xTreeView->Collapse(rVclIter.iter); } @@ -2804,9 +2868,9 @@ public: return SvTabListBox::GetEntryText(rVclIter.iter, col); } - virtual void set_text(weld::TreeIter& rIter, const OUString& rText, int col) override + virtual void set_text(const weld::TreeIter& rIter, const OUString& rText, int col) override { - SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter); + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); set_text(rVclIter.iter, rText, col); } @@ -2819,18 +2883,10 @@ public: return OUString(); } - virtual void set_id(weld::TreeIter& rIter, const OUString& rId) override - { - SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter); - set_id(rVclIter.iter, rId); - } - - virtual void set_expander_image(const weld::TreeIter& rIter, const OUString& rImage) override + virtual void set_id(const weld::TreeIter& rIter, const OUString& rId) override { const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); - Image aImage(createImage(rImage)); - m_xTreeView->SetExpandedEntryBmp(rVclIter.iter, aImage); - m_xTreeView->SetCollapsedEntryBmp(rVclIter.iter, aImage); + set_id(rVclIter.iter, rId); } virtual void set_selection_mode(SelectionMode eMode) override @@ -2906,7 +2962,7 @@ public: if (col == -1) col = 0; - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { sal_uInt16 nTextId = pHeaderBar->GetItemId(col); @@ -2929,7 +2985,7 @@ public: if (col == -1) col = 0; - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { sal_uInt16 nTextId = pHeaderBar->GetItemId(col); @@ -2964,11 +3020,18 @@ public: virtual ~SalInstanceTreeView() override { - SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); - if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) + LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + if (pHeaderBox) { - pHeaderBar->SetSelectHdl(Link<HeaderBar*, void>()); - pHeaderBar->SetEndDragHdl(Link<HeaderBar*, void>()); + if (HeaderBar* pHeaderBar = pHeaderBox->GetHeaderBar()) + { + pHeaderBar->SetSelectHdl(Link<HeaderBar*, void>()); + pHeaderBar->SetEndDragHdl(Link<HeaderBar*, void>()); + } + } + else + { + static_cast<LclTabListBox&>(*m_xTreeView).SetModelChangedHdl(Link<SvTreeListBox*, void>()); } m_xTreeView->SetExpandingHdl(Link<SvTreeListBox*, bool>()); m_xTreeView->SetDoubleClickHdl(Link<SvTreeListBox*, bool>()); @@ -3018,9 +3081,18 @@ IMPL_LINK(SalInstanceTreeView, CompareHdl, const SvSortData&, rSortData, sal_Int IMPL_LINK_NOARG(SalInstanceTreeView, VisibleRangeChangedHdl, SvTreeListBox*, void) { + if (notify_events_disabled()) + return; signal_visible_range_changed(); } +IMPL_LINK_NOARG(SalInstanceTreeView, ModelChangedHdl, SvTreeListBox*, void) +{ + if (notify_events_disabled()) + return; + signal_model_changed(); +} + IMPL_LINK(SalInstanceTreeView, ToggleHdl, SvLBoxButtonData*, pData, void) { SvTreeListEntry* pEntry = pData->GetActEntry(); diff --git a/vcl/source/treelist/treelistbox.cxx b/vcl/source/treelist/treelistbox.cxx index 586b9073c2cb..f24ef9089694 100644 --- a/vcl/source/treelist/treelistbox.cxx +++ b/vcl/source/treelist/treelistbox.cxx @@ -3658,7 +3658,7 @@ bool SvTreeListBox::set_property(const OString &rKey, const OUString &rValue) else if (rKey == "reorderable") { if (toBool(rValue)) - SetDragDropMode(DragDropMode::CTRL_MOVE); + SetDragDropMode(DragDropMode::CTRL_MOVE | DragDropMode::ENABLE_TOP); } else return Control::set_property(rKey, rValue); diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx index 37b9636f2906..b8932913cf53 100644 --- a/vcl/source/uitest/uiobject.cxx +++ b/vcl/source/uitest/uiobject.cxx @@ -679,7 +679,7 @@ void EditUIObject::execute(const OUString& rAction, else if (rAction == "CLEAR") { mxEdit->SetText(""); - mxEdit->UpdateData(); + mxEdit->Modify(); bHandled = true; } else diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 5969211017fd..9e1e0748d5ef 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -59,6 +59,7 @@ #include <desktop/crashreport.hxx> #include <salinst.hxx> #include <strings.hrc> +#include <treeglue.hxx> #include <tools/svlibrary.h> #include <tools/diagnose_ex.h> @@ -1595,42 +1596,6 @@ void VclBuilder::preload() extern "C" VclBuilder::customMakeWidget lo_get_custom_widget_func(const char* name); #endif -namespace -{ - //the default NotifyStartDrag is weird to me, and defaults to enabling all - //possibilities when drag starts, while restricting it to some subset of - //the configured drag drop mode would make more sense to me, but I'm not - //going to change the baseclass - - class LclHeaderTabListBox : public SvHeaderTabListBox - { - public: - LclHeaderTabListBox(vcl::Window* pParent, WinBits nWinStyle) - : SvHeaderTabListBox(pParent, nWinStyle) - { - } - - virtual DragDropMode NotifyStartDrag(TransferDataContainer&, SvTreeListEntry*) override - { - return GetDragDropMode(); - } - }; - - class LclTabListBox : public SvTabListBox - { - public: - LclTabListBox(vcl::Window* pParent, WinBits nWinStyle) - : SvTabListBox(pParent, nWinStyle) - { - } - - virtual DragDropMode NotifyStartDrag(TransferDataContainer&, SvTreeListEntry*) override - { - return GetDragDropMode(); - } - }; -} - VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &name, const OString &id, stringmap &rMap) { @@ -1973,7 +1938,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString & // everything over to SvHeaderTabListBox/SvTabListBox //c) remove the users of makeSvTabListBox and makeSvTreeListBox extractModel(id, rMap); - WinBits nWinStyle = WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK; + WinBits nWinStyle = WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_HIDESELECTION; if (m_bLegacy) { OUString sBorder = BuilderUtils::extractCustomProperty(rMap); @@ -2022,6 +1987,8 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString & xWindow = xBox; xBox->SetNoAutoCurEntry(true); xBox->SetQuickSearch(true); + xBox->SetSpaceBetweenEntries(3); + xBox->SetEntryHeight(16); xBox->SetHighlightRange(); // select over the whole width } if (pRealParent != pParent) @@ -2124,11 +2091,16 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString & extractBuffer(id, rMap); WinBits nWinStyle = WB_CLIPCHILDREN|WB_LEFT|WB_NOHIDESELECTION; - OUString sBorder = BuilderUtils::extractCustomProperty(rMap); - if (!sBorder.isEmpty()) - nWinStyle |= WB_BORDER; + if (m_bLegacy) + { + OUString sBorder = BuilderUtils::extractCustomProperty(rMap); + if (!sBorder.isEmpty()) + nWinStyle |= WB_BORDER; + } //VclMultiLineEdit manages its own scrolling, vcl::Window *pRealParent = prepareWidgetOwnScrolling(pParent, nWinStyle); + if (pRealParent != pParent) + nWinStyle |= WB_BORDER; xWindow = VclPtr<VclMultiLineEdit>::Create(pRealParent, nWinStyle); if (pRealParent != pParent) cleanupWidgetOwnScrolling(pParent, xWindow, rMap); |