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>
29 #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;
247 , m_bTakeOwnership(bTakeOwnership)
248 , m_bEventListener(false)
249 , m_bKeyEventListener(false)
250 , m_bMouseEventListener(false)
474 dynamic_cast<const SalInstanceWidget&>(rRelative).getWidget()));
530 return rLabel.replaceFirst(
"~",
"");
615 TransformEvent(*pMouseEvent,
m_xWidget, rWinEvent.GetWindow()));
631 TransformEvent(*pMouseEvent,
m_xWidget, rWinEvent.GetWindow()));
647 TransformEvent(*pMouseEvent,
m_xWidget, rWinEvent.GetWindow()));
673 HandleEventListener(rEvent);
678 return HandleKeyEventListener(rEvent);
683 HandleMouseEventListener(rEvent);
688 return m_aMnemonicActivateHdl.Call(*
this);
693 Image createImage(
const OUString& rImage)
695 if (rImage.isEmpty())
697 if (rImage.lastIndexOf(
'.') != rImage.getLength() - 4)
699 assert((rImage ==
"dialog-warning" || rImage ==
"dialog-error"
700 || rImage ==
"dialog-information")
701 &&
"unknown stock image");
702 if (rImage ==
"dialog-warning")
704 else if (rImage ==
"dialog-error")
706 else if (rImage ==
"dialog-information")
717 sal_uInt16 insert_to_menu(sal_uInt16 nLastId,
PopupMenu* pMenu,
int pos, std::u16string_view rId,
718 const OUString& rStr,
const OUString* pIconName,
720 const css::uno::Reference<css::graphic::XGraphic>& rImage,
723 const sal_uInt16 nNewid = nLastId + 1;
726 if (eCheckRadioFalse == TRISTATE_TRUE)
728 else if (eCheckRadioFalse == TRISTATE_FALSE)
739 else if (pImageSurface)
741 pMenu->
SetItemImage(nNewid, createImage(*pImageSurface));
753 , m_bTakeOwnership(bTakeOwnership)
798 const css::uno::Reference<css::graphic::XGraphic>& rImage,
828 signal_activate(m_xMenu->GetCurItemIdent());
843 , m_xToolBox(pToolBox)
914 pPopup->EndExecute();
934 auto aPopup =
m_aMenus.find(nItemId);
1022 const css::uno::Reference<css::graphic::XGraphic>& rIcon)
1031 createImage(*pDevice));
1037 const css::uno::Reference<css::graphic::XGraphic>& rIcon)
1100 signal_clicked(m_xToolBox->GetItemCommand(nItemId).toUtf8());
1106 set_menu_item_active(m_xToolBox->GetItemCommand(nItemId).toUtf8(),
true);
1113 for (
auto& rFloat : m_aFloats)
1115 if (rEvent.GetWindow() == rFloat.second)
1118 signal_toggle_menu(m_xToolBox->GetItemCommand(nItemId).toUtf8());
1130 std::shared_ptr<VclSizeGroup> m_xGroup;
1133 SalInstanceSizeGroup()
1158 if ((WindowType::PUSHBUTTON == eType) || (WindowType::OKBUTTON == eType)
1159 || (WindowType::CANCELBUTTON == eType) || (WindowType::HELPBUTTON == eType)
1160 || (WindowType::IMAGEBUTTON == eType) || (WindowType::MENUBUTTON == eType)
1161 || (WindowType::MOREBUTTON == eType))
1189 bool bTakeOwnership)
1200 assert(!pNewParent || pNewVclParent);
1212 pFirstChild->ImplControlFocus();
1224 xPage->set_expand(
true);
1226 return css::uno::Reference<css::awt::XWindow>(xPage->GetComponentInterface(),
1227 css::uno::UNO_QUERY);
1235 return std::make_unique<SalInstanceContainer>(pParent,
m_pBuilder,
false);
1270 xOutput->
DrawOutDev(
Point(), aTempLogicSize, rRenderLogicPos, aRenderLogicSize, rOutput);
1282 rOutput.
DrawOutDev(rRenderLogicPos, aRenderLogicSize,
Point(), aTempLogicSize, *xOutput);
1297 rRenderLogicPos +
Point(aRelLogicOffset.Width(), aRelLogicOffset.Height()),
1305 bool bChangeSize = aOrigSize != rSizePixel;
1325 , m_xBox(pContainer)
1346 rTopLeft.
getY() + aCurrentPos.Y());
1349 aCurrentTopLeft +
basegfx::B2IPoint(aCurrentSize.Width(), aCurrentSize.Height()));
1351 if (!aCurrentRange.isEmpty())
1353 rControlDataCollection.emplace_back(rCurrent.
GetHelpId(), aCurrentRange);
1359 if (
nullptr != pChild)
1361 CollectChildren(*pChild, aCurrentTopLeft, rControlDataCollection);
1384 bool bTakeOwnership)
1386 , m_xWindow(pWindow)
1398 css::uno::UNO_QUERY);
1406 pSysWin->setOptimalLayoutSize();
1411 pDockWin->setOptimalLayoutSize();
1414 assert(
false &&
"must be system or docking window");
1438 auto nX = (aParentGeometry.Width() - aGeometry.Width()) / 2;
1439 auto nY = (aParentGeometry.Height() - aGeometry.Height()) / 2;
1484 CollectChildren(*
m_xWindow, aTopLeft, aRet);
1497 typedef std::set<VclPtr<vcl::Window>>
winset;
1501 void hideUnless(
const vcl::Window* pTop,
const winset& rVisibleWidgets,
1509 if (rVisibleWidgets.find(pChild) == rVisibleWidgets.end())
1511 rWasVisibleWidgets.emplace_back(pChild);
1516 hideUnless(pChild, rVisibleWidgets, rWasVisibleWidgets);
1523 bool bTakeOwnership)
1526 , m_nOldEditWidthReq(0)
1527 , m_nOldBorderWidth(0)
1529 const bool bScreenshotMode(officecfg::Office::Common::Misc::ScreenshotMode::get());
1530 if (bScreenshotMode)
1537 const std::function<
void(sal_Int32)>& rEndDialogFn)
1549 const std::function<
void(sal_Int32)>& rEndDialogFn)
1551 assert(rxSelf.get() ==
this);
1556 aCtx.maEndDialogFn = rEndDialogFn;
1578 winset aVisibleWidgets;
1581 pCandidate && (pCandidate != pContentArea && pCandidate->
IsVisible());
1584 aVisibleWidgets.insert(pCandidate);
1589 pCandidate && (pCandidate != pContentArea && pCandidate->
IsVisible());
1592 if (aVisibleWidgets.insert(pCandidate).second)
1605 pActionArea->Hide();
1617 m_aHiddenWidgets.
clear();
1623 pActionArea->Show();
1657 xButton->
set_id(
"close");
1660 xButton->
set_id(
"cancel");
1697 const Point aMenuPos(rCEvt.GetMousePosPixel());
1699 sal_uInt16 nLocalID(1);
1701 aMenu->InsertItem(nLocalID,
VclResId(SV_BUTTONTEXT_SCREENSHOT));
1702 aMenu->SetHelpText(nLocalID,
VclResId(SV_HELPTEXT_SCREENSHOT));
1703 aMenu->SetHelpId(nLocalID,
"InteractiveScreenshotMode");
1704 aMenu->EnableItem(nLocalID);
1706 const sal_uInt16
nId(aMenu->Execute(
m_xDialog, aMenuPos));
1737 bool bTakeOwnership)
1739 , m_xMessageDialog(pDialog)
1774 std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
1775 std::vector<VclPtr<TabPage>> m_aAddedPages;
1776 std::vector<int> m_aIds;
1777 std::vector<VclPtr<VclGrid>> m_aAddedGrids;
1778 Idle m_aUpdateRoadmapIdle;
1780 int find_page(std::string_view rIdent)
const
1782 for (
size_t i = 0;
i < m_aAddedPages.size(); ++
i)
1784 if (m_aAddedPages[i]->get_id().toUtf8() == rIdent)
1790 int find_id(
int nId)
const
1792 for (
size_t i = 0;
i < m_aIds.size(); ++
i)
1794 if (nId == m_aIds[i])
1805 bool bTakeOwnership)
1807 , m_xWizard(pDialog)
1817 virtual int get_n_pages()
const override {
return m_aAddedPages.size(); }
1821 return m_aAddedPages[nPage]->get_id().toUtf8();
1842 if (aPageSize.Width() > aFinalSize.
Width())
1843 aFinalSize.
setWidth(aPageSize.Width());
1844 if (aPageSize.Height() > aFinalSize.
Height())
1845 aFinalSize.
setHeight(aPageSize.Height());
1856 int nIndex = find_page(rIdent);
1862 virtual void set_page_index(
const OString& rIdent,
int nNewIndex)
override
1864 int nOldIndex = find_page(rIdent);
1866 if (nOldIndex == -1)
1869 if (nOldIndex == nNewIndex)
1874 auto entry = std::move(m_aAddedPages[nOldIndex]);
1875 m_aAddedPages.erase(m_aAddedPages.begin() + nOldIndex);
1876 m_aAddedPages.insert(m_aAddedPages.begin() + nNewIndex, std::move(entry));
1878 int nId = m_aIds[nOldIndex];
1879 m_aIds.erase(m_aIds.begin() + nOldIndex);
1880 m_aIds.insert(m_aIds.begin() + nNewIndex, nId);
1882 m_aUpdateRoadmapIdle.
Start();
1891 xPage->set_id(OUString::fromUtf8(rIdent));
1893 xGrid->set_hexpand(
true);
1894 xGrid->set_vexpand(
true);
1897 m_aIds.push_back(m_aAddedPages.size());
1898 m_xWizard->
SetPage(m_aIds.back(), xPage);
1899 m_aAddedPages.push_back(xPage);
1900 m_aAddedGrids.push_back(xGrid);
1902 m_aUpdateRoadmapIdle.
Start();
1905 return m_aPages.back().get();
1908 virtual OUString
get_page_title(
const OString& rIdent)
const override
1910 int nIndex = find_page(rIdent);
1913 return m_aAddedPages[nIndex]->GetText();
1916 virtual void set_page_title(
const OString& rIdent,
const OUString& rTitle)
override
1918 int nIndex = find_page(rIdent);
1921 if (m_aAddedPages[nIndex]->GetText() != rTitle)
1924 m_aAddedPages[nIndex]->SetText(rTitle);
1925 m_aUpdateRoadmapIdle.
Start();
1932 int nIndex = find_page(rIdent);
1935 if (m_aAddedPages[nIndex]->IsEnabled() != bSensitive)
1938 m_aAddedPages[nIndex]->Enable(bSensitive);
1939 m_aUpdateRoadmapIdle.
Start();
1951 virtual ~SalInstanceAssistant()
override
1953 for (
auto& rGrid : m_aAddedGrids)
1954 rGrid.disposeAndClear();
1955 for (
auto& rPage : m_aAddedPages)
1956 rPage.disposeAndClear();
1963 if (notify_events_disabled())
1966 int nPageIndex(find_id(nCurItemId));
1967 if (!signal_jump_page(get_page_ident(nPageIndex)) && nCurItemId != m_xWizard->
GetCurLevel())
1973 disable_notify_events();
1978 for (
size_t i = 0; i < m_aAddedPages.size(); ++i)
1980 const OUString& rLabel = m_aAddedPages[i]->GetText();
1981 bool bSensitive = m_aAddedPages[i]->IsEnabled();
1982 if (rLabel.isEmpty())
1991 enable_notify_events();
2008 virtual void set_label(
const OUString& rText)
override { m_xFrame->
set_label(rText); }
2038 bool m_bUserManagedScrolling;
2044 const Color& rBackgroundColor,
const Color& rShadowColor,
2045 const Color& rFaceColor)
2060 bool bTakeOwnership,
bool bUserManagedScrolling)
2062 , m_xScrolledWindow(pScrolledWindow)
2063 , m_bUserManagedScrolling(bUserManagedScrolling)
2067 rVertScrollBar.
SetScrollHdl(
LINK(
this, SalInstanceScrolledWindow, VscrollHdl));
2070 rHorzScrollBar.
SetScrollHdl(
LINK(
this, SalInstanceScrolledWindow, HscrollHdl));
2075 int page_increment,
int page_size)
override
2096 if (!m_bUserManagedScrolling)
2097 m_aOrigHScrollHdl.
Call(&rHorzScrollBar);
2143 m_xScrolledWindow->SetStyle(nWinBits);
2144 m_xScrolledWindow->queue_resize();
2149 WinBits nWinBits = m_xScrolledWindow->GetStyle();
2150 if (nWinBits & WB_AUTOHSCROLL)
2152 else if (nWinBits & WB_HSCROLL)
2158 int page_increment,
int page_size)
override
2179 if (!m_bUserManagedScrolling)
2180 m_aOrigVScrollHdl.
Call(&rVertScrollBar);
2238 m_xScrolledWindow->SetStyle(nWinBits);
2239 m_xScrolledWindow->queue_resize();
2244 WinBits nWinBits = m_xScrolledWindow->GetStyle();
2245 if (nWinBits & WB_AUTOVSCROLL)
2247 else if (nWinBits & WB_VSCROLL)
2266 const Color& rFaceColor)
override
2276 virtual ~SalInstanceScrolledWindow()
override
2286 signal_vadjustment_changed();
2287 if (!m_bUserManagedScrolling)
2288 m_aOrigVScrollHdl.
Call(pScrollBar);
2293 signal_hadjustment_changed();
2294 if (!m_bUserManagedScrolling)
2299 bool bTakeOwnership)
2301 , m_xNotebook(pNotebook)
2334 if (nPageIndex == -1)
2339 if (m_aPages.size() < nPageIndex + 1
U)
2340 m_aPages.resize(nPageIndex + 1
U);
2341 if (!m_aPages[nPageIndex])
2342 m_aPages[nPageIndex] = std::make_shared<SalInstanceContainer>(pChild,
m_pBuilder,
false);
2343 return m_aPages[nPageIndex].get();
2364 if (nPageIndex < m_aPages.size())
2365 m_aPages.erase(m_aPages.begin() + nPageIndex);
2367 auto iter = m_aAddedPages.find(rIdent);
2368 if (iter != m_aAddedPages.end())
2370 iter->second.second.disposeAndClear();
2371 iter->second.first.disposeAndClear();
2372 m_aAddedPages.erase(iter);
2380 sal_uInt16 nNewPageId = nLastPageId + 1;
2392 m_aAddedPages.try_emplace(rIdent, xPage, xGrid);
2396 unsigned int nPageIndex =
static_cast<unsigned int>(nPos);
2397 if (nPageIndex < m_aPages.size())
2398 m_aPages.insert(m_aPages.begin() + nPageIndex,
nullptr);
2416 for (
auto& rItem : m_aAddedPages)
2418 rItem.second.second.disposeAndClear();
2419 rItem.second.first.disposeAndClear();
2427 return !m_aLeavePageHdl.IsSet() || m_aLeavePageHdl.Call(get_current_page_ident());
2432 m_aEnterPageHdl.Call(get_current_page_ident());
2441 mutable std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
2448 bool bTakeOwnership)
2450 , m_xNotebook(pNotebook)
2454 LINK(
this, SalInstanceVerticalNotebook, DeactivatePageHdl));
2471 sal_uInt16 nPageIndex = m_xNotebook->
GetPagePos(rIdent);
2480 if (nPageIndex == -1)
2482 auto pChild = m_xNotebook->
GetPage(rIdent);
2483 if (m_aPages.size() < nPageIndex + 1
U)
2484 m_aPages.resize(nPageIndex + 1U);
2485 if (!m_aPages[nPageIndex])
2487 return m_aPages[nPageIndex].get();
2500 virtual void remove_page(
const OString& rIdent)
override
2502 sal_uInt16 nPageIndex = m_xNotebook->
GetPagePos(rIdent);
2506 if (nPageIndex < m_aPages.size())
2507 m_aPages.erase(m_aPages.begin() + nPageIndex);
2510 virtual void insert_page(
const OString& rIdent,
const OUString& rLabel,
int nPos)
override
2513 xGrid->set_hexpand(
true);
2514 xGrid->set_vexpand(
true);
2519 unsigned int nPageIndex =
static_cast<unsigned int>(nPos);
2520 if (nPageIndex < m_aPages.size())
2521 m_aPages.insert(m_aPages.begin() + nPageIndex,
nullptr);
2527 virtual void set_tab_label_text(
const OString& rIdent,
const OUString& rText)
override
2537 virtual ~SalInstanceVerticalNotebook()
override
2547 return !m_aLeavePageHdl.IsSet() || m_aLeavePageHdl.Call(get_current_page_ident());
2552 m_aEnterPageHdl.Call(get_current_page_ident());
2556 bool bTakeOwnership)
2558 , m_xButton(pButton)
2559 , m_aOldClickHdl(pButton->GetClickHdl())
2620 if (!m_aClickHdl.IsSet())
2622 pButton->SetClickHdl(m_aOldClickHdl);
2636 weld::Button* SalInstanceAssistant::weld_widget_for_response(
int nResponse)
2641 else if (nResponse ==
RET_NO)
2643 else if (nResponse ==
RET_OK)
2660 sal_uInt16 m_nLastId;
2668 , m_xMenuButton(pButton)
2672 m_xMenuButton->
SetSelectHdl(
LINK(
this, SalInstanceMenuButton, MenuSelectHdl));
2681 virtual void set_active(
bool active)
override
2700 virtual void insert_item(
int pos,
const OUString& rId,
const OUString& rStr,
2702 TriState eCheckRadioFalse)
override
2704 m_nLastId = insert_to_menu(m_nLastId, m_xMenuButton->
GetPopupMenu(), pos, rId, rStr,
2705 pIconName, pImageSurface,
nullptr, eCheckRadioFalse);
2720 virtual void remove_item(
const OString& rId)
override
2726 virtual void clear()
override
2732 virtual void set_item_active(
const OString& rIdent,
bool bActive)
override
2738 virtual void set_item_label(
const OString& rIdent,
const OUString& rText)
override
2744 virtual OUString
get_item_label(
const OString& rIdent)
const override
2756 virtual void set_item_help_id(
const OString& rIdent,
const OString& rHelpId)
override
2774 virtual ~SalInstanceMenuButton()
override
2789 if (notify_events_disabled())
2796 class SalInstanceMenuToggleButton :
public SalInstanceMenuButton,
2804 bool bTakeOwnership)
2805 : SalInstanceMenuButton(pButton, pBuilder, bTakeOwnership)
2806 , m_xMenuToggleButton(pButton)
2812 virtual void set_active(
bool active)
override
2814 disable_notify_events();
2816 enable_notify_events();
2831 DECL_LINK(ClickHdl, FixedHyperlink&,
void);
2835 bool bTakeOwnership)
2837 , m_xButton(pButton)
2839 m_aOrigClickHdl = m_xButton->GetClickHdl();
2840 m_xButton->SetClickHdl(
LINK(
this, SalInstanceLinkButton, ClickHdl));
2843 virtual void set_label(
const OUString& rText)
override { m_xButton->SetText(rText); }
2845 virtual OUString
get_label()
const override {
return m_xButton->GetText(); }
2847 virtual void set_uri(
const OUString& rUri)
override { m_xButton->SetURL(rUri); }
2849 virtual OUString
get_uri()
const override {
return m_xButton->GetURL(); }
2851 virtual ~SalInstanceLinkButton()
override { m_xButton->SetClickHdl(m_aOrigClickHdl); }
2855 IMPL_LINK(SalInstanceLinkButton, ClickHdl, FixedHyperlink&, rButton,
void)
2857 bool bConsumed = signal_activate_link();
2859 m_aOrigClickHdl.
Call(rButton);
2863 bool bTakeOwnership)
2865 , m_xRadioButton(pButton)
2913 if (notify_events_disabled())
2930 , m_xToggleButton(pButton)
2936 assert(!m_aToggleHdl.IsSet());
2941 virtual void set_active(
bool active)
override
2944 m_xToggleButton->
Check(active);
2953 m_xToggleButton->
SetState(inconsistent ? TRISTATE_INDET : TRISTATE_FALSE);
2962 virtual ~SalInstanceToggleButton()
override
2964 if (m_aToggleHdl.IsSet())
2966 LINK(
this, SalInstanceToggleButton, ToggleListener));
2973 if (notify_events_disabled())
2980 bool bTakeOwnership)
2982 , m_xCheckButton(pButton)
3017 if (notify_events_disabled())
3019 m_xCheckButton->EnableTriState(
false);
3042 virtual void set_range(
int min,
int max)
override
3076 SalInstanceSpinner(Throbber* pThrobber,
SalInstanceBuilder* pBuilder,
bool bTakeOwnership)
3078 , m_xThrobber(pThrobber)
3082 virtual void start()
override { m_xThrobber->start(); }
3084 virtual void stop()
override { m_xThrobber->stop(); }
3094 bool bTakeOwnership)
3096 , m_xProgressBar(pProgressBar)
3100 virtual void set_percentage(
int value)
override { m_xProgressBar->SetValue(value); }
3102 virtual OUString
get_text()
const override {
return m_xProgressBar->GetText(); }
3104 virtual void set_text(
const OUString& rText)
override { m_xProgressBar->SetText(rText); }
3127 m_xImage->
SetImage(createImage(*pDevice));
3132 virtual void set_image(
const css::uno::Reference<css::graphic::XGraphic>& rImage)
override
3149 , m_xCalendar(pCalendar)
3159 virtual ~SalInstanceCalendar()
override
3169 if (notify_events_disabled())
3176 if (notify_events_disabled())
3183 , m_rInsertTextHdl(rInsertTextHdl)
3191 OUString sText(rText);
3201 , m_aTextFilter(m_aInsertTextHdl)
3235 rStartPos = rSelection.
Min();
3236 rEndPos = rSelection.
Max();
3237 return rSelection.
Len();
3365 if (notify_events_disabled())
3369 signal_cursor_position();
3382 class UpdateGuardIfHidden
3387 bool m_bOrigEnableInvalidate;
3391 : m_rTreeView(rTreeView)
3393 , m_bOrigUpdate(!m_rTreeView.IsVisible() && m_rTreeView.IsUpdateMode())
3395 , m_bOrigEnableInvalidate(!m_rTreeView.IsVisible()
3396 && m_rTreeView.GetModel()->IsEnableInvalidate())
3400 if (m_bOrigEnableInvalidate)
3404 ~UpdateGuardIfHidden()
3406 if (m_bOrigEnableInvalidate)
3460 auto xCell = std::make_unique<SvLBoxString>(rStr);
3462 xCell->SetCustomRender();
3463 pEntry->
AddItem(std::move(xCell));
3467 const OUString* pId,
const OUString* pIconName,
3478 m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
3482 pUserData =
nullptr;
3491 if (pIconName || pImageSurface)
3493 Image aImage(pIconName ? createImage(*pIconName) : createImage(*pImageSurface));
3494 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage,
false));
3499 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy,
false));
3509 pVclRetIter->
iter = pEntry;
3512 if (bChildrenOnDemand)
3550 pEntry->
ReplaceItem(std::make_unique<SvLBoxButton>(pData), 0);
3554 assert(dynamic_cast<SvLBoxButton*>(&rItem));
3573 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3578 assert(dynamic_cast<SvLBoxButton*>(&rItem));
3610 for (
int i = pEntry->
ItemCount(); i < col; ++i)
3613 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3616 pEntry->
AddItem(std::make_unique<SvLBoxButton>(pData));
3629 assert(dynamic_cast<SvLBoxString*>(&rItem));
3630 return static_cast<SvLBoxString&
>(rItem).IsEmphasized();
3638 for (
size_t i = 0; i < rWidths.size(); ++i)
3639 pHeaderBar->SetItemSize(pHeaderBar->GetItemId(i), rWidths[i]);
3644 bool bTakeOwnership)
3647 , m_aCheckButtonData(pTreeView, false)
3648 , m_aRadioButtonData(pTreeView, true)
3649 , m_bTogglesAsRadio(false)
3670 pHeaderBar->SetItemSize(pHeaderBar->GetItemId(pHeaderBar->GetItemCount() - 1),
3703 std::vector<tools::Long> aWidths;
3705 if (aWidths.size() > 2)
3707 std::vector<int> aColWidths;
3708 for (
size_t i = 1; i < aWidths.size() - 1; ++i)
3709 aColWidths.push_back(aWidths[i] - aWidths[i - 1]);
3730 std::vector<tools::Long> aTabPositions;
3731 aTabPositions.push_back(0);
3732 for (
size_t i = 0; i < rWidths.size(); ++i)
3733 aTabPositions.push_back(aTabPositions[i] + rWidths[i]);
3742 size_t nTabCount = rEditables.size();
3743 for (
size_t i = 0; i < nTabCount; ++i)
3756 return pHeaderBar->GetItemSize(pHeaderBar->GetItemId(nColumn));
3770 return pHeaderBar->GetItemText(pHeaderBar->GetItemId(nColumn));
3780 return pHeaderBar->SetItemText(pHeaderBar->GetItemId(nColumn), rTitle);
3804 pHeaderBox->GetParent()->Show();
3811 pHeaderBox->GetParent()->Hide();
3816 const OUString* pId,
const OUString* pIconName,
3820 do_insert(pParent, pos, pStr, pId, pIconName, pImageSurface, bChildrenOnDemand, pRet,
false);
3825 OUString sSep(
VclResId(STR_SEPARATOR));
3826 do_insert(
nullptr, pos, &sSep,
nullptr,
nullptr,
nullptr,
false,
nullptr,
true);
3830 int nSourceCount,
const std::function<
void(
weld::TreeIter&,
int nSourceIndex)>& func,
3831 const std::vector<int>* pFixedWidths)
3843 size_t nExtraCols = bHasAutoCheckButton ? 2 : 1;
3846 for (
int i = 0; i < nSourceCount; ++i)
3849 if (bHasAutoCheckButton)
3851 aVclIter.
iter->
AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy,
false));
3858 size_t nFixedWidths = std::min(pFixedWidths->size(), aVclIter.
iter->
ItemCount());
3859 for (
size_t j = 0; j < nFixedWidths; ++j)
3863 pViewDataItem->
mnWidth = (*pFixedWidths)[j];
3906 const OUString* pId =
static_cast<const OUString*
>(pEntry->GetUserData());
3917 int min = std::min(pos1, pos2);
3918 int max = std::max(pos1, pos2);
3922 pModel->
Move(pEntry1, pEntry2);
3947 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
3950 if (pos == -1 || (pos == 0 &&
n_children() == 0))
3955 assert(pEntry &&
"bad pos?");
3986 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4003 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4018 std::vector<int> aRows;
4035 if (static_cast<size_t>(col) == pEntry->
ItemCount())
4040 assert(dynamic_cast<SvLBoxString*>(&rItem));
4061 for (
int i = pEntry->
ItemCount(); i < col; ++i)
4064 if (static_cast<size_t>(col) == pEntry->
ItemCount())
4074 assert(dynamic_cast<SvLBoxString*>(&rItem));
4096 for (sal_uInt16 nCur = 0; nCur < nCount; ++nCur)
4101 rItem.
Enable(bSensitive);
4113 rItem.
Enable(bSensitive);
4182 assert(dynamic_cast<SvLBoxString*>(&rItem));
4218 assert(dynamic_cast<SvLBoxString*>(&rItem));
4263 for (
int i = pEntry->
ItemCount(); i < col; ++i)
4266 if (static_cast<size_t>(col) == pEntry->
ItemCount())
4268 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(rImage, rImage,
false));
4276 assert(dynamic_cast<SvLBoxContextBmp*>(&rItem));
4291 const css::uno::Reference<css::graphic::XGraphic>& rImage,
4309 const css::uno::Reference<css::graphic::XGraphic>& rImage,
4325 return pEntry ?
static_cast<const OUString*
>(pEntry->
GetUserData()) :
nullptr;
4338 m_aUserData.emplace_back(std::make_unique<OUString>(rId));
4370 if (
const OUString* pStr = static_cast<const OUString*>(pEntry->GetUserData()))
4376 std::unique_ptr<weld::TreeIter>
4379 return std::unique_ptr<weld::TreeIter>(
4395 pVclIter->
iter = pEntry;
4396 return pEntry !=
nullptr;
4404 pVclIter->
iter = pEntry;
4405 return pEntry !=
nullptr;
4420 return rVclIter.
iter !=
nullptr;
4427 return rVclIter.
iter !=
nullptr;
4434 return rVclIter.
iter !=
nullptr;
4441 return rVclIter.
iter !=
nullptr;
4450 return rVclIter.
iter !=
nullptr;
4459 return rVclIter.
iter !=
nullptr;
4466 bool bRet = rVclIter.
iter !=
nullptr;
4479 return rVclIter.
iter !=
nullptr;
4493 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4504 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4548 bool bChildrenOnDemand)
4556 if (bChildrenOnDemand && !pPlaceHolder)
4562 else if (!bChildrenOnDemand && pPlaceHolder)
4598 const OUString* pStr =
static_cast<const OUString*
>(rVclIter.
iter->
GetUserData());
4626 while (aVclIter.iter)
4639 while (aVclIter.iter)
4652 while (aVclIter.iter)
4674 pSelected = pNextSelected;
4698 if (nAbsPosA < nAbsPosB)
4700 if (nAbsPosA > nAbsPosB)
4706 int nIndexInNewParent)