22 #include <string_view>
24 #include <com/sun/star/accessibility/AccessibleRelationType.hpp>
25 #include <com/sun/star/awt/XWindow.hpp>
26 #include <com/sun/star/awt/XWindowPeer.hpp>
28 #include <officecfg/Office/Common.hxx>
40 #include <strings.hrc>
76 #include <bitmaps.hlst>
77 #include <calendar.hxx>
112 : m_pYieldMutex(
std::move(pMutex))
145 auto& rCache = pSVData->maGDIData.maScaleCache;
148 return rKeyValuePair.first.mpBitmap ==
this;
239 , m_pBuilder(pBuilder)
240 , m_bTakeOwnership(bTakeOwnership)
241 , m_bEventListener(false)
242 , m_bKeyEventListener(false)
243 , m_bMouseEventListener(false)
467 dynamic_cast<const SalInstanceWidget&>(rRelative).getWidget()));
513 return rLabel.replaceFirst(
"~",
"");
593 TransformEvent(*pMouseEvent,
m_xWidget, rWinEvent.GetWindow()));
609 TransformEvent(*pMouseEvent,
m_xWidget, rWinEvent.GetWindow()));
625 TransformEvent(*pMouseEvent,
m_xWidget, rWinEvent.GetWindow()));
651 HandleEventListener(rEvent);
656 return HandleKeyEventListener(rEvent);
661 HandleMouseEventListener(rEvent);
666 return m_aMnemonicActivateHdl.Call(*
this);
671 Image createImage(
const OUString& rImage)
673 if (rImage.isEmpty())
675 if (rImage.lastIndexOf(
'.') != rImage.getLength() - 4)
677 assert((rImage ==
"dialog-warning" || rImage ==
"dialog-error"
678 || rImage ==
"dialog-information")
679 &&
"unknown stock image");
680 if (rImage ==
"dialog-warning")
682 else if (rImage ==
"dialog-error")
684 else if (rImage ==
"dialog-information")
695 sal_uInt16 insert_to_menu(sal_uInt16 nLastId,
PopupMenu* pMenu,
int pos, std::u16string_view rId,
696 const OUString& rStr,
const OUString* pIconName,
699 const sal_uInt16 nNewid = nLastId + 1;
702 if (eCheckRadioFalse == TRISTATE_TRUE)
704 else if (eCheckRadioFalse == TRISTATE_FALSE)
715 else if (pImageSurface)
717 pMenu->
SetItemImage(nNewid, createImage(*pImageSurface));
725 , m_bTakeOwnership(bTakeOwnership)
799 signal_activate(m_xMenu->GetCurItemIdent());
814 , m_xToolBox(pToolBox)
885 pPopup->EndExecute();
905 auto aPopup =
m_aMenus.find(nItemId);
986 const css::uno::Reference<css::graphic::XGraphic>& rIcon)
995 createImage(*pDevice));
1001 const css::uno::Reference<css::graphic::XGraphic>& rIcon)
1063 sal_uInt16 nItemId = m_xToolBox->GetCurItemId();
1064 signal_clicked(m_xToolBox->GetItemCommand(nItemId).toUtf8());
1069 sal_uInt16 nItemId = m_xToolBox->GetCurItemId();
1070 set_menu_item_active(m_xToolBox->GetItemCommand(nItemId).toUtf8(),
true);
1077 for (
auto& rFloat : m_aFloats)
1079 if (rEvent.GetWindow() == rFloat.second)
1081 sal_uInt16 nItemId = rFloat.first;
1082 signal_toggle_menu(m_xToolBox->GetItemCommand(nItemId).toUtf8());
1094 std::shared_ptr<VclSizeGroup> m_xGroup;
1097 SalInstanceSizeGroup()
1122 if ((WindowType::PUSHBUTTON == eType) || (WindowType::OKBUTTON == eType)
1123 || (WindowType::CANCELBUTTON == eType) || (WindowType::HELPBUTTON == eType)
1124 || (WindowType::IMAGEBUTTON == eType) || (WindowType::MENUBUTTON == eType)
1125 || (WindowType::MOREBUTTON == eType))
1136 bool bTakeOwnership)
1147 assert(!pNewParent || pNewVclParent);
1162 xPage->set_expand(
true);
1164 return css::uno::Reference<css::awt::XWindow>(xPage->GetComponentInterface(),
1165 css::uno::UNO_QUERY);
1173 return std::make_unique<SalInstanceContainer>(pParent,
m_pBuilder,
false);
1183 xOutput->SetOutputSizePixel(aSize);
1184 xOutput->DrawOutDev(
Point(), aSize, rPos, aSize, rOutput);
1198 xOutput.disposeAndClear();
1205 DoRecursivePaint(pChild, rPos + pChild->
GetPosPixel(), rOutput);
1230 , m_xBox(pContainer)
1251 rTopLeft.
getY() + aCurrentPos.Y());
1254 aCurrentTopLeft +
basegfx::B2IPoint(aCurrentSize.Width(), aCurrentSize.Height()));
1256 if (!aCurrentRange.isEmpty())
1258 rControlDataCollection.emplace_back(rCurrent.
GetHelpId(), aCurrentRange);
1264 if (
nullptr != pChild)
1266 CollectChildren(*pChild, aCurrentTopLeft, rControlDataCollection);
1289 bool bTakeOwnership)
1291 , m_xWindow(pWindow)
1311 css::uno::UNO_QUERY);
1319 pSysWin->setOptimalLayoutSize();
1324 pDockWin->setOptimalLayoutSize();
1327 assert(
false &&
"must be system or docking window");
1351 auto nX = (aParentGeometry.Width() - aGeometry.Width()) / 2;
1352 auto nY = (aParentGeometry.Height() - aGeometry.Height()) / 2;
1414 CollectChildren(*
m_xWindow, aTopLeft, aRet);
1427 typedef std::set<VclPtr<vcl::Window>>
winset;
1431 void hideUnless(
const vcl::Window* pTop,
const winset& rVisibleWidgets,
1439 if (rVisibleWidgets.find(pChild) == rVisibleWidgets.end())
1441 rWasVisibleWidgets.emplace_back(pChild);
1446 hideUnless(pChild, rVisibleWidgets, rWasVisibleWidgets);
1453 bool bTakeOwnership)
1456 , m_nOldEditWidthReq(0)
1457 , m_nOldBorderWidth(0)
1459 const bool bScreenshotMode(officecfg::Office::Common::Misc::ScreenshotMode::get());
1460 if (bScreenshotMode)
1467 const std::function<
void(sal_Int32)>& rEndDialogFn)
1479 const std::function<
void(sal_Int32)>& rEndDialogFn)
1481 assert(rxSelf.get() ==
this);
1486 aCtx.maEndDialogFn = rEndDialogFn;
1508 winset aVisibleWidgets;
1511 pCandidate && (pCandidate != pContentArea && pCandidate->
IsVisible());
1514 aVisibleWidgets.insert(pCandidate);
1519 pCandidate && (pCandidate != pContentArea && pCandidate->
IsVisible());
1522 if (aVisibleWidgets.insert(pCandidate).second)
1535 pActionArea->Hide();
1547 m_aHiddenWidgets.
clear();
1553 pActionArea->Show();
1587 xButton->
set_id(
"close");
1590 xButton->
set_id(
"cancel");
1627 const Point aMenuPos(rCEvt.GetMousePosPixel());
1629 sal_uInt16 nLocalID(1);
1631 aMenu->InsertItem(nLocalID,
VclResId(SV_BUTTONTEXT_SCREENSHOT));
1632 aMenu->SetHelpText(nLocalID,
VclResId(SV_HELPTEXT_SCREENSHOT));
1633 aMenu->SetHelpId(nLocalID,
"InteractiveScreenshotMode");
1634 aMenu->EnableItem(nLocalID);
1636 const sal_uInt16
nId(aMenu->Execute(
m_xDialog, aMenuPos));
1667 bool bTakeOwnership)
1669 , m_xMessageDialog(pDialog)
1704 std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
1705 std::vector<VclPtr<TabPage>> m_aAddedPages;
1706 std::vector<int> m_aIds;
1707 std::vector<VclPtr<VclGrid>> m_aAddedGrids;
1708 Idle m_aUpdateRoadmapIdle;
1710 int find_page(std::string_view rIdent)
const
1712 for (
size_t i = 0;
i < m_aAddedPages.size(); ++
i)
1714 if (m_aAddedPages[i]->get_id().toUtf8() == rIdent)
1720 int find_id(
int nId)
const
1722 for (
size_t i = 0;
i < m_aIds.size(); ++
i)
1724 if (nId == m_aIds[i])
1735 bool bTakeOwnership)
1737 , m_xWizard(pDialog)
1747 virtual int get_n_pages()
const override {
return m_aAddedPages.size(); }
1751 return m_aAddedPages[nPage]->get_id().toUtf8();
1772 if (aPageSize.Width() > aFinalSize.
Width())
1773 aFinalSize.
setWidth(aPageSize.Width());
1774 if (aPageSize.Height() > aFinalSize.
Height())
1775 aFinalSize.
setHeight(aPageSize.Height());
1786 int nIndex = find_page(rIdent);
1792 virtual void set_page_index(
const OString& rIdent,
int nNewIndex)
override
1794 int nOldIndex = find_page(rIdent);
1796 if (nOldIndex == -1)
1799 if (nOldIndex == nNewIndex)
1804 auto entry = std::move(m_aAddedPages[nOldIndex]);
1805 m_aAddedPages.erase(m_aAddedPages.begin() + nOldIndex);
1806 m_aAddedPages.insert(m_aAddedPages.begin() + nNewIndex, std::move(entry));
1808 int nId = m_aIds[nOldIndex];
1809 m_aIds.erase(m_aIds.begin() + nOldIndex);
1810 m_aIds.insert(m_aIds.begin() + nNewIndex, nId);
1812 m_aUpdateRoadmapIdle.
Start();
1821 xPage->set_id(OUString::fromUtf8(rIdent));
1823 xGrid->set_hexpand(
true);
1824 xGrid->set_vexpand(
true);
1827 m_aIds.push_back(m_aAddedPages.size());
1828 m_xWizard->
SetPage(m_aIds.back(), xPage);
1829 m_aAddedPages.push_back(xPage);
1830 m_aAddedGrids.push_back(xGrid);
1832 m_aUpdateRoadmapIdle.
Start();
1835 return m_aPages.back().get();
1838 virtual OUString
get_page_title(
const OString& rIdent)
const override
1840 int nIndex = find_page(rIdent);
1843 return m_aAddedPages[nIndex]->GetText();
1846 virtual void set_page_title(
const OString& rIdent,
const OUString& rTitle)
override
1848 int nIndex = find_page(rIdent);
1851 if (m_aAddedPages[nIndex]->GetText() != rTitle)
1854 m_aAddedPages[nIndex]->SetText(rTitle);
1855 m_aUpdateRoadmapIdle.
Start();
1862 int nIndex = find_page(rIdent);
1865 if (m_aAddedPages[nIndex]->IsEnabled() != bSensitive)
1868 m_aAddedPages[nIndex]->Enable(bSensitive);
1869 m_aUpdateRoadmapIdle.
Start();
1881 virtual ~SalInstanceAssistant()
override
1883 for (
auto& rGrid : m_aAddedGrids)
1884 rGrid.disposeAndClear();
1885 for (
auto& rPage : m_aAddedPages)
1886 rPage.disposeAndClear();
1893 if (notify_events_disabled())
1896 int nPageIndex(find_id(nCurItemId));
1897 if (!signal_jump_page(get_page_ident(nPageIndex)) && nCurItemId != m_xWizard->
GetCurLevel())
1903 disable_notify_events();
1908 for (
size_t i = 0; i < m_aAddedPages.size(); ++i)
1910 const OUString& rLabel = m_aAddedPages[i]->GetText();
1911 bool bSensitive = m_aAddedPages[i]->IsEnabled();
1912 if (rLabel.isEmpty())
1921 enable_notify_events();
1938 virtual void set_label(
const OUString& rText)
override { m_xFrame->
set_label(rText); }
1968 bool m_bUserManagedScrolling;
1975 bool bTakeOwnership,
bool bUserManagedScrolling)
1977 , m_xScrolledWindow(pScrolledWindow)
1978 , m_bUserManagedScrolling(bUserManagedScrolling)
1982 rVertScrollBar.
SetScrollHdl(
LINK(
this, SalInstanceScrolledWindow, VscrollHdl));
1985 rHorzScrollBar.
SetScrollHdl(
LINK(
this, SalInstanceScrolledWindow, HscrollHdl));
1990 int page_increment,
int page_size)
override
2011 if (!m_bUserManagedScrolling)
2012 m_aOrigHScrollHdl.
Call(&rHorzScrollBar);
2058 m_xScrolledWindow->SetStyle(nWinBits);
2059 m_xScrolledWindow->queue_resize();
2064 WinBits nWinBits = m_xScrolledWindow->GetStyle();
2065 if (nWinBits & WB_AUTOHSCROLL)
2067 else if (nWinBits & WB_HSCROLL)
2078 int page_increment,
int page_size)
override
2099 if (!m_bUserManagedScrolling)
2100 m_aOrigVScrollHdl.
Call(&rVertScrollBar);
2158 m_xScrolledWindow->SetStyle(nWinBits);
2159 m_xScrolledWindow->queue_resize();
2164 WinBits nWinBits = m_xScrolledWindow->GetStyle();
2165 if (nWinBits & WB_AUTOVSCROLL)
2167 else if (nWinBits & WB_VSCROLL)
2177 virtual ~SalInstanceScrolledWindow()
override
2187 signal_vadjustment_changed();
2188 if (!m_bUserManagedScrolling)
2189 m_aOrigVScrollHdl.
Call(pScrollBar);
2194 signal_hadjustment_changed();
2195 if (!m_bUserManagedScrolling)
2200 bool bTakeOwnership)
2202 , m_xNotebook(pNotebook)
2235 if (nPageIndex == -1)
2240 if (m_aPages.size() < nPageIndex + 1U)
2241 m_aPages.resize(nPageIndex + 1U);
2242 if (!m_aPages[nPageIndex])
2243 m_aPages[nPageIndex] = std::make_shared<SalInstanceContainer>(pChild,
m_pBuilder,
false);
2244 return m_aPages[nPageIndex].get();
2265 if (nPageIndex < m_aPages.size())
2266 m_aPages.erase(m_aPages.begin() + nPageIndex);
2268 auto iter = m_aAddedPages.find(rIdent);
2269 if (iter != m_aAddedPages.end())
2271 iter->second.second.disposeAndClear();
2272 iter->second.first.disposeAndClear();
2273 m_aAddedPages.erase(iter);
2281 sal_uInt16 nNewPageId = nLastPageId + 1;
2293 m_aAddedPages.try_emplace(rIdent, xPage, xGrid);
2297 unsigned int nPageIndex =
static_cast<unsigned int>(nPos);
2298 if (nPageIndex < m_aPages.size())
2299 m_aPages.insert(m_aPages.begin() + nPageIndex,
nullptr);
2317 for (
auto& rItem : m_aAddedPages)
2319 rItem.second.second.disposeAndClear();
2320 rItem.second.first.disposeAndClear();
2328 return !m_aLeavePageHdl.IsSet() || m_aLeavePageHdl.Call(get_current_page_ident());
2333 m_aEnterPageHdl.Call(get_current_page_ident());
2342 mutable std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
2349 bool bTakeOwnership)
2351 , m_xNotebook(pNotebook)
2355 LINK(
this, SalInstanceVerticalNotebook, DeactivatePageHdl));
2372 sal_uInt16 nPageIndex = m_xNotebook->
GetPagePos(rIdent);
2381 if (nPageIndex == -1)
2383 auto pChild = m_xNotebook->
GetPage(rIdent);
2384 if (m_aPages.size() < nPageIndex + 1U)
2385 m_aPages.resize(nPageIndex + 1U);
2386 if (!m_aPages[nPageIndex])
2388 return m_aPages[nPageIndex].get();
2401 virtual void remove_page(
const OString& rIdent)
override
2403 sal_uInt16 nPageIndex = m_xNotebook->
GetPagePos(rIdent);
2407 if (nPageIndex < m_aPages.size())
2408 m_aPages.erase(m_aPages.begin() + nPageIndex);
2411 virtual void insert_page(
const OString& rIdent,
const OUString& rLabel,
int nPos)
override
2414 xGrid->set_hexpand(
true);
2415 xGrid->set_vexpand(
true);
2420 unsigned int nPageIndex =
static_cast<unsigned int>(nPos);
2421 if (nPageIndex < m_aPages.size())
2422 m_aPages.insert(m_aPages.begin() + nPageIndex,
nullptr);
2428 virtual void set_tab_label_text(
const OString& rIdent,
const OUString& rText)
override
2438 virtual ~SalInstanceVerticalNotebook()
override
2448 return !m_aLeavePageHdl.IsSet() || m_aLeavePageHdl.Call(get_current_page_ident());
2453 m_aEnterPageHdl.Call(get_current_page_ident());
2457 bool bTakeOwnership)
2459 , m_xButton(pButton)
2460 , m_aOldClickHdl(pButton->GetClickHdl())
2521 if (!m_aClickHdl.IsSet())
2523 pButton->SetClickHdl(m_aOldClickHdl);
2537 weld::Button* SalInstanceAssistant::weld_widget_for_response(
int nResponse)
2542 else if (nResponse ==
RET_NO)
2544 else if (nResponse ==
RET_OK)
2561 sal_uInt16 m_nLastId;
2569 , m_xMenuButton(pButton)
2573 m_xMenuButton->
SetSelectHdl(
LINK(
this, SalInstanceMenuButton, MenuSelectHdl));
2582 virtual void set_active(
bool active)
override
2601 virtual void insert_item(
int pos,
const OUString& rId,
const OUString& rStr,
2603 TriState eCheckRadioFalse)
override
2605 m_nLastId = insert_to_menu(m_nLastId, m_xMenuButton->
GetPopupMenu(), pos, rId, rStr,
2606 pIconName, pImageSurface, eCheckRadioFalse);
2621 virtual void remove_item(
const OString& rId)
override
2627 virtual void clear()
override
2633 virtual void set_item_active(
const OString& rIdent,
bool bActive)
override
2639 virtual void set_item_label(
const OString& rIdent,
const OUString& rText)
override
2645 virtual OUString
get_item_label(
const OString& rIdent)
const override
2657 virtual void set_item_help_id(
const OString& rIdent,
const OString& rHelpId)
override
2675 virtual ~SalInstanceMenuButton()
override
2690 if (notify_events_disabled())
2697 class SalInstanceMenuToggleButton :
public SalInstanceMenuButton,
2705 bool bTakeOwnership)
2706 : SalInstanceMenuButton(pButton, pBuilder, bTakeOwnership)
2707 , m_xMenuToggleButton(pButton)
2713 virtual void set_active(
bool active)
override
2715 disable_notify_events();
2717 enable_notify_events();
2732 DECL_LINK(ClickHdl, FixedHyperlink&,
void);
2736 bool bTakeOwnership)
2738 , m_xButton(pButton)
2740 m_aOrigClickHdl = m_xButton->GetClickHdl();
2741 m_xButton->SetClickHdl(
LINK(
this, SalInstanceLinkButton, ClickHdl));
2744 virtual void set_label(
const OUString& rText)
override { m_xButton->SetText(rText); }
2746 virtual OUString
get_label()
const override {
return m_xButton->GetText(); }
2748 virtual void set_uri(
const OUString& rUri)
override { m_xButton->SetURL(rUri); }
2750 virtual OUString
get_uri()
const override {
return m_xButton->GetURL(); }
2752 virtual ~SalInstanceLinkButton()
override { m_xButton->SetClickHdl(m_aOrigClickHdl); }
2756 IMPL_LINK(SalInstanceLinkButton, ClickHdl, FixedHyperlink&, rButton,
void)
2758 bool bConsumed = signal_activate_link();
2760 m_aOrigClickHdl.
Call(rButton);
2774 bool bTakeOwnership)
2776 , m_xRadioButton(pButton)
2778 m_xRadioButton->
SetToggleHdl(
LINK(
this, SalInstanceRadioButton, ToggleHdl));
2781 virtual void set_active(
bool active)
override
2784 m_xRadioButton->
Check(active);
2799 virtual void set_image(
const css::uno::Reference<css::graphic::XGraphic>& rImage)
override
2817 virtual ~SalInstanceRadioButton()
override
2826 if (notify_events_disabled())
2843 , m_xToggleButton(pButton)
2849 assert(!m_aToggleHdl.IsSet());
2854 virtual void set_active(
bool active)
override
2857 m_xToggleButton->
Check(active);
2866 m_xToggleButton->
SetState(inconsistent ? TRISTATE_INDET : TRISTATE_FALSE);
2875 virtual ~SalInstanceToggleButton()
override
2877 if (m_aToggleHdl.IsSet())
2879 LINK(
this, SalInstanceToggleButton, ToggleListener));
2886 if (notify_events_disabled())
2893 bool bTakeOwnership)
2895 , m_xCheckButton(pButton)
2930 if (notify_events_disabled())
2932 m_xCheckButton->EnableTriState(
false);
2955 virtual void set_range(
int min,
int max)
override
2989 SalInstanceSpinner(Throbber* pThrobber,
SalInstanceBuilder* pBuilder,
bool bTakeOwnership)
2991 , m_xThrobber(pThrobber)
2995 virtual void start()
override { m_xThrobber->start(); }
2997 virtual void stop()
override { m_xThrobber->stop(); }
3007 bool bTakeOwnership)
3009 , m_xProgressBar(pProgressBar)
3013 virtual void set_percentage(
int value)
override { m_xProgressBar->SetValue(value); }
3015 virtual OUString
get_text()
const override {
return m_xProgressBar->GetText(); }
3017 virtual void set_text(
const OUString& rText)
override { m_xProgressBar->SetText(rText); }
3040 m_xImage->
SetImage(createImage(*pDevice));
3045 virtual void set_image(
const css::uno::Reference<css::graphic::XGraphic>& rImage)
override
3062 , m_xCalendar(pCalendar)
3072 virtual ~SalInstanceCalendar()
override
3082 if (notify_events_disabled())
3089 if (notify_events_disabled())
3096 , m_rInsertTextHdl(rInsertTextHdl)
3104 OUString sText(rText);
3114 , m_aTextFilter(m_aInsertTextHdl)
3148 rStartPos = rSelection.
Min();
3149 rEndPos = rSelection.
Max();
3150 return rSelection.
Len();
3278 if (notify_events_disabled())
3282 signal_cursor_position();
3295 class UpdateGuardIfHidden
3300 bool m_bOrigEnableInvalidate;
3304 : m_rTreeView(rTreeView)
3306 , m_bOrigUpdate(!m_rTreeView.IsVisible() && m_rTreeView.IsUpdateMode())
3308 , m_bOrigEnableInvalidate(!m_rTreeView.IsVisible()
3309 && m_rTreeView.GetModel()->IsEnableInvalidate())
3313 if (m_bOrigEnableInvalidate)
3317 ~UpdateGuardIfHidden()
3319 if (m_bOrigEnableInvalidate)
3373 auto xCell = std::make_unique<SvLBoxString>(rStr);
3375 xCell->SetCustomRender();
3376 pEntry->
AddItem(std::move(xCell));
3380 const OUString* pId,
const OUString* pIconName,
3391 m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
3395 pUserData =
nullptr;
3404 if (pIconName || pImageSurface)
3406 Image aImage(pIconName ? createImage(*pIconName) : createImage(*pImageSurface));
3407 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage,
false));
3412 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy,
false));
3422 pVclRetIter->
iter = pEntry;
3425 if (bChildrenOnDemand)
3463 pEntry->
ReplaceItem(std::make_unique<SvLBoxButton>(pData), 0);
3467 assert(dynamic_cast<SvLBoxButton*>(&rItem));
3486 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3491 assert(dynamic_cast<SvLBoxButton*>(&rItem));
3523 for (
int i = pEntry->
ItemCount(); i < col; ++i)
3526 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3529 pEntry->
AddItem(std::make_unique<SvLBoxButton>(pData));
3542 assert(dynamic_cast<SvLBoxString*>(&rItem));
3543 return static_cast<SvLBoxString&
>(rItem).IsEmphasized();
3551 for (
size_t i = 0; i < rWidths.size(); ++i)
3552 pHeaderBar->SetItemSize(pHeaderBar->GetItemId(i), rWidths[i]);
3557 bool bTakeOwnership)
3560 , m_aCheckButtonData(pTreeView, false)
3561 , m_aRadioButtonData(pTreeView, true)
3562 , m_bTogglesAsRadio(false)
3583 pHeaderBar->SetItemSize(pHeaderBar->GetItemId(pHeaderBar->GetItemCount() - 1),
3616 std::vector<tools::Long> aWidths;
3618 if (aWidths.size() > 2)
3620 std::vector<int> aColWidths;
3621 for (
size_t i = 1; i < aWidths.size() - 1; ++i)
3622 aColWidths.push_back(aWidths[i] - aWidths[i - 1]);
3643 std::vector<tools::Long> aTabPositions;
3644 aTabPositions.push_back(0);
3645 for (
size_t i = 0; i < rWidths.size(); ++i)
3646 aTabPositions.push_back(aTabPositions[i] + rWidths[i]);
3655 size_t nTabCount = rEditables.size();
3656 for (
size_t i = 0; i < nTabCount; ++i)
3669 return pHeaderBar->GetItemSize(pHeaderBar->GetItemId(nColumn));
3683 return pHeaderBar->GetItemText(pHeaderBar->GetItemId(nColumn));
3693 return pHeaderBar->SetItemText(pHeaderBar->GetItemId(nColumn), rTitle);
3717 pHeaderBox->GetParent()->Show();
3724 pHeaderBox->GetParent()->Hide();
3729 const OUString* pId,
const OUString* pIconName,
3733 do_insert(pParent, pos, pStr, pId, pIconName, pImageSurface, bChildrenOnDemand, pRet,
false);
3738 OUString sSep(
VclResId(STR_SEPARATOR));
3739 do_insert(
nullptr, pos, &sSep,
nullptr,
nullptr,
nullptr,
false,
nullptr,
true);
3743 int nSourceCount,
const std::function<
void(
weld::TreeIter&,
int nSourceIndex)>& func,
3744 const std::vector<int>* pFixedWidths)
3756 size_t nExtraCols = bHasAutoCheckButton ? 2 : 1;
3759 for (
int i = 0; i < nSourceCount; ++i)
3762 if (bHasAutoCheckButton)
3764 aVclIter.
iter->
AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy,
false));
3771 size_t nFixedWidths = std::min(pFixedWidths->size(), aVclIter.
iter->
ItemCount());
3772 for (
size_t j = 0; j < nFixedWidths; ++j)
3776 pViewDataItem->
mnWidth = (*pFixedWidths)[j];
3819 const OUString* pId =
static_cast<const OUString*
>(pEntry->GetUserData());
3830 int min = std::min(pos1, pos2);
3831 int max = std::max(pos1, pos2);
3835 pModel->
Move(pEntry1, pEntry2);
3860 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
3863 if (pos == -1 || (pos == 0 &&
n_children() == 0))
3898 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
3915 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
3930 std::vector<int> aRows;
3947 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3952 assert(dynamic_cast<SvLBoxString*>(&rItem));
3973 for (
int i = pEntry->
ItemCount(); i < col; ++i)
3976 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3986 assert(dynamic_cast<SvLBoxString*>(&rItem));
4008 for (sal_uInt16 nCur = 0; nCur < nCount; ++nCur)
4013 rItem.
Enable(bSensitive);
4025 rItem.
Enable(bSensitive);
4090 assert(dynamic_cast<SvLBoxString*>(&rItem));
4126 assert(dynamic_cast<SvLBoxString*>(&rItem));
4171 for (
int i = pEntry->
ItemCount(); i < col; ++i)
4174 if (static_cast<size_t>(col) == pEntry->
ItemCount())
4176 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(rImage, rImage,
false));
4184 assert(dynamic_cast<SvLBoxContextBmp*>(&rItem));
4199 const css::uno::Reference<css::graphic::XGraphic>& rImage,
4217 const css::uno::Reference<css::graphic::XGraphic>& rImage,
4233 return pEntry ?
static_cast<const OUString*
>(pEntry->
GetUserData()) :
nullptr;
4246 m_aUserData.emplace_back(std::make_unique<OUString>(rId));
4278 if (
const OUString* pStr = static_cast<const OUString*>(pEntry->GetUserData()))
4284 std::unique_ptr<weld::TreeIter>
4287 return std::unique_ptr<weld::TreeIter>(
4303 pVclIter->
iter = pEntry;
4304 return pEntry !=
nullptr;
4312 pVclIter->
iter = pEntry;
4313 return pEntry !=
nullptr;
4328 return rVclIter.
iter !=
nullptr;
4335 return rVclIter.
iter !=
nullptr;
4342 return rVclIter.
iter !=
nullptr;
4349 return rVclIter.
iter !=
nullptr;
4358 return rVclIter.
iter !=
nullptr;
4367 return rVclIter.
iter !=
nullptr;
4374 bool bRet = rVclIter.
iter !=
nullptr;
4387 return rVclIter.
iter !=
nullptr;
4401 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4412 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4441 rVclIter.
iter = restore;
4460 bool bChildrenOnDemand)
4468 if (bChildrenOnDemand && !pPlaceHolder)
4474 else if (!bChildrenOnDemand && pPlaceHolder)
4510 const OUString* pStr =
static_cast<const OUString*
>(rVclIter.
iter->
GetUserData());
4538 while (aVclIter.iter)
4551 while (aVclIter.iter)
4564 while (aVclIter.iter)
4586 pSelected = pNextSelected;
4610 if (nAbsPosA < nAbsPosB)
4612 if (nAbsPosA > nAbsPosB)
4618 int nIndexInNewParent)
4668 assert(col >= 0 &&
"cannot sort on expander column");
4675 sal_uInt16 nTextId = pHeaderBar->
GetItemId(col);
4691 assert(col >= 0 &&
"cannot sort on expander column");
4696 sal_uInt16 nTextId = pHeaderBar->GetItemId(col);
4735 if (pTarget && pResult)
4738 rSalIter.
iter = pTarget;
4741 return pTarget !=
nullptr;