23 #include <string_view>
25 #include <com/sun/star/accessibility/AccessibleRelationType.hpp>
26 #include <com/sun/star/awt/XWindow.hpp>
27 #include <com/sun/star/awt/XWindowPeer.hpp>
31 #include <officecfg/Office/Common.hxx>
42 #include <strings.hrc>
79 #include <bitmaps.hlst>
80 #include <calendar.hxx>
118 OUStringBuffer
aBuffer(4 * 5 + 5);
120 aBuffer << nWidth <<
"x";
124 aBuffer << nHeight <<
"@(";
128 aBuffer << nX <<
",";
132 aBuffer << nY <<
")";
135 return aBuffer.makeStringAndClear();
139 : m_pYieldMutex(
std::move(pMutex))
192 auto& rCache = pSVData->maGDIData.maScaleCache;
195 return rKeyValuePair.first.mpBitmap ==
this;
296 , m_bTakeOwnership(bTakeOwnership)
297 , m_bEventListener(
false)
298 , m_bKeyEventListener(
false)
299 , m_bMouseEventListener(
false)
439 pOldLabel->SetAccessibleRelationLabelFor(
nullptr);
512 dynamic_cast<const SalInstanceWidget&>(rRelative).getWidget()));
578 return rLabel.replaceFirst(
"~",
"");
606 if (m_bOrigControlBackground)
614 constexpr
int FlashesWanted = 1;
616 if (m_nFlashCount % 2 == 0)
621 if (m_nFlashCount == FlashesWanted * 2)
626 m_aFlashTimer.
Start();
634 , m_aFlashTimer(
"SalFlashAttention")
635 , m_bOrigControlBackground(
false)
645 if (m_bOrigControlBackground)
647 m_aFlashTimer.
Start();
666 css::uno::Reference<css::datatransfer::clipboard::XClipboard>
795 HandleEventListener(rEvent);
800 return HandleKeyEventListener(rEvent);
805 HandleMouseEventListener(rEvent);
810 return m_aMnemonicActivateHdl.Call(*
this);
815 Image createImage(
const OUString& rImage)
817 if (rImage.isEmpty())
819 if (rImage.lastIndexOf(
'.') != rImage.getLength() - 4)
821 assert((rImage ==
"dialog-warning" || rImage ==
"dialog-error"
822 || rImage ==
"dialog-information")
823 &&
"unknown stock image");
824 if (rImage ==
"dialog-warning")
826 else if (rImage ==
"dialog-error")
828 else if (rImage ==
"dialog-information")
839 sal_uInt16 insert_to_menu(sal_uInt16 nLastId,
PopupMenu* pMenu,
int pos, std::u16string_view rId,
840 const OUString& rStr,
const OUString* pIconName,
842 const css::uno::Reference<css::graphic::XGraphic>& rImage,
845 const sal_uInt16 nNewid = nLastId + 1;
848 if (eCheckRadioFalse == TRISTATE_TRUE)
850 else if (eCheckRadioFalse == TRISTATE_FALSE)
861 else if (pImageSurface)
863 pMenu->
SetItemImage(nNewid, createImage(*pImageSurface));
875 , m_bTakeOwnership(bTakeOwnership)
925 const css::uno::Reference<css::graphic::XGraphic>& rImage,
955 signal_activate(m_xMenu->GetCurItemIdent());
970 , m_xToolBox(pToolBox)
1041 pPopup->EndExecute();
1061 auto aPopup =
m_aMenus.find(nItemId);
1149 const css::uno::Reference<css::graphic::XGraphic>& rIcon)
1158 createImage(*pDevice));
1164 const css::uno::Reference<css::graphic::XGraphic>& rIcon)
1227 signal_clicked(m_xToolBox->GetItemCommand(nItemId).toUtf8());
1233 set_menu_item_active(m_xToolBox->GetItemCommand(nItemId).toUtf8(),
true);
1240 for (
const auto& rFloat : m_aFloats)
1242 if (rEvent.GetWindow() == rFloat.second)
1245 signal_toggle_menu(m_xToolBox->GetItemCommand(nItemId).toUtf8());
1257 std::shared_ptr<VclSizeGroup> m_xGroup;
1260 SalInstanceSizeGroup()
1267 assert(pVclWidget && pVclWidget->
getWidget());
1292 bool bTakeOwnership)
1303 assert(!pNewParent || pNewVclParent);
1318 pFirstChild->ImplControlFocus();
1324 xPage->set_expand(
true);
1326 return css::uno::Reference<css::awt::XWindow>(xPage->GetComponentInterface(),
1327 css::uno::UNO_QUERY);
1335 return std::make_unique<SalInstanceContainer>(pParent,
m_pBuilder,
false);
1374 xOutput->
DrawOutDev(
Point(), aTempLogicSize, rRenderLogicPos, aRenderLogicSize,
1398 rOutput.
DrawOutDev(rRenderLogicPos, aRenderLogicSize,
Point(), aTempLogicSize,
1403 rOutput.
DrawBitmapEx(rRenderLogicPos, aRenderLogicSize,
1423 if (bHasMirroredGraphics)
1430 Point aPos(rRenderLogicPos);
1431 aPos +=
Point(nDeltaX, nDeltaY);
1440 bool bChangeSize = aOrigSize != rSizePixel;
1451 bool bTakeOwnership)
1453 , m_xBox(pContainer)
1476 rTopLeft.
getY() + aCurrentPos.Y());
1479 aCurrentTopLeft +
basegfx::B2IPoint(aCurrentSize.Width(), aCurrentSize.Height()));
1481 if (!aCurrentRange.isEmpty())
1483 rControlDataCollection.emplace_back(rCurrent.
GetHelpId(), aCurrentRange);
1489 if (
nullptr != pChild)
1491 CollectChildren(*pChild, aCurrentTopLeft, rControlDataCollection);
1514 bool bTakeOwnership)
1516 , m_xWindow(pWindow)
1531 css::uno::UNO_QUERY);
1539 if (
SystemWindow* pSysWin = dynamic_cast<SystemWindow*>(pWindow))
1541 pSysWin->setOptimalLayoutSize(
true);
1544 if (
DockingWindow* pDockWin = dynamic_cast<DockingWindow*>(pWindow))
1546 pDockWin->setOptimalLayoutSize();
1549 assert(
false &&
"must be system or docking window");
1576 auto nX = (aParentGeometry.Width() - aGeometry.Width()) / 2;
1577 auto nY = (aParentGeometry.Height() - aGeometry.Height()) / 2;
1602 if ((WindowType::PUSHBUTTON == eType) || (WindowType::OKBUTTON == eType)
1603 || (WindowType::CANCELBUTTON == eType) || (WindowType::HELPBUTTON == eType)
1604 || (WindowType::IMAGEBUTTON == eType) || (WindowType::MENUBUTTON == eType)
1605 || (WindowType::MOREBUTTON == eType))
1624 pWidgetOld->
set_property(
"has-default", OUString::boolean(
false));
1628 pWidgetNew->
set_property(
"has-default", OUString::boolean(
true));
1669 CollectChildren(*
m_xWindow, aTopLeft, aRet);
1688 typedef std::set<VclPtr<vcl::Window>>
winset;
1692 void hideUnless(
const vcl::Window* pTop,
const winset& rVisibleWidgets,
1700 if (rVisibleWidgets.find(pChild) == rVisibleWidgets.end())
1702 rWasVisibleWidgets.emplace_back(pChild);
1707 hideUnless(pChild, rVisibleWidgets, rWasVisibleWidgets);
1714 bool bTakeOwnership)
1717 , m_nOldEditWidthReq(0)
1718 , m_nOldBorderWidth(0)
1720 const bool bScreenshotMode(officecfg::Office::Common::Misc::ScreenshotMode::get());
1721 if (bScreenshotMode)
1728 const std::function<
void(sal_Int32)>& rEndDialogFn)
1740 const std::function<
void(sal_Int32)>& rEndDialogFn)
1742 assert(rxSelf.get() ==
this);
1747 aCtx.maEndDialogFn = rEndDialogFn;
1769 winset aVisibleWidgets;
1772 pCandidate && (pCandidate != pContentArea && pCandidate->
IsVisible());
1775 aVisibleWidgets.insert(pCandidate);
1780 pCandidate && (pCandidate != pContentArea && pCandidate->
IsVisible());
1783 if (aVisibleWidgets.insert(pCandidate).second)
1796 pActionArea->Hide();
1808 m_aHiddenWidgets.
clear();
1814 pActionArea->Show();
1848 xButton->
set_id(
"close");
1851 xButton->
set_id(
"cancel");
1888 const Point aMenuPos(rCEvt.GetMousePosPixel());
1890 sal_uInt16 nLocalID(1);
1892 aMenu->InsertItem(nLocalID,
VclResId(SV_BUTTONTEXT_SCREENSHOT));
1893 aMenu->SetHelpText(nLocalID,
VclResId(SV_HELPTEXT_SCREENSHOT));
1894 aMenu->SetHelpId(nLocalID,
"InteractiveScreenshotMode");
1895 aMenu->EnableItem(nLocalID);
1897 const sal_uInt16
nId(aMenu->Execute(
m_xDialog, aMenuPos));
1928 bool bTakeOwnership)
1930 , m_xMessageDialog(pDialog)
1965 std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
1966 std::vector<VclPtr<TabPage>> m_aAddedPages;
1967 std::vector<int> m_aIds;
1968 std::vector<VclPtr<VclGrid>> m_aAddedGrids;
1969 Idle m_aUpdateRoadmapIdle;
1971 int find_page(std::string_view rIdent)
const
1973 for (
size_t i = 0;
i < m_aAddedPages.size(); ++
i)
1975 if (m_aAddedPages[i]->get_id().toUtf8() == rIdent)
1981 int find_id(
int nId)
const
1983 for (
size_t i = 0;
i < m_aIds.size(); ++
i)
1985 if (nId == m_aIds[i])
1996 bool bTakeOwnership)
1998 , m_xWizard(pDialog)
1999 , m_aUpdateRoadmapIdle(
"SalInstanceAssistant m_aUpdateRoadmapIdle")
2009 virtual int get_n_pages()
const override {
return m_aAddedPages.size(); }
2013 return m_aAddedPages[nPage]->get_id().toUtf8();
2034 if (aPageSize.Width() > aFinalSize.
Width())
2035 aFinalSize.
setWidth(aPageSize.Width());
2036 if (aPageSize.Height() > aFinalSize.
Height())
2037 aFinalSize.
setHeight(aPageSize.Height());
2048 int nIndex = find_page(rIdent);
2054 virtual void set_page_index(
const OString& rIdent,
int nNewIndex)
override
2056 int nOldIndex = find_page(rIdent);
2058 if (nOldIndex == -1)
2061 if (nOldIndex == nNewIndex)
2066 auto entry = std::move(m_aAddedPages[nOldIndex]);
2067 m_aAddedPages.erase(m_aAddedPages.begin() + nOldIndex);
2068 m_aAddedPages.insert(m_aAddedPages.begin() + nNewIndex, std::move(entry));
2070 int nId = m_aIds[nOldIndex];
2071 m_aIds.erase(m_aIds.begin() + nOldIndex);
2072 m_aIds.insert(m_aIds.begin() + nNewIndex, nId);
2074 m_aUpdateRoadmapIdle.
Start();
2083 xPage->set_id(OUString::fromUtf8(rIdent));
2085 xGrid->set_hexpand(
true);
2086 xGrid->set_vexpand(
true);
2089 m_aIds.push_back(m_aAddedPages.size());
2090 m_xWizard->
SetPage(m_aIds.back(), xPage);
2091 m_aAddedPages.push_back(xPage);
2092 m_aAddedGrids.push_back(xGrid);
2094 m_aUpdateRoadmapIdle.
Start();
2097 return m_aPages.back().get();
2100 virtual OUString
get_page_title(
const OString& rIdent)
const override
2102 int nIndex = find_page(rIdent);
2105 return m_aAddedPages[nIndex]->GetText();
2108 virtual void set_page_title(
const OString& rIdent,
const OUString& rTitle)
override
2110 int nIndex = find_page(rIdent);
2113 if (m_aAddedPages[nIndex]->GetText() != rTitle)
2116 m_aAddedPages[nIndex]->SetText(rTitle);
2117 m_aUpdateRoadmapIdle.
Start();
2124 int nIndex = find_page(rIdent);
2127 if (m_aAddedPages[nIndex]->IsEnabled() != bSensitive)
2130 m_aAddedPages[nIndex]->Enable(bSensitive);
2131 m_aUpdateRoadmapIdle.
Start();
2143 virtual ~SalInstanceAssistant()
override
2145 for (
auto& rGrid : m_aAddedGrids)
2146 rGrid.disposeAndClear();
2147 for (
auto& rPage : m_aAddedPages)
2148 rPage.disposeAndClear();
2155 if (notify_events_disabled())
2158 int nPageIndex(find_id(nCurItemId));
2159 if (!signal_jump_page(get_page_ident(nPageIndex)) && nCurItemId != m_xWizard->
GetCurLevel())
2165 disable_notify_events();
2170 for (
size_t i = 0; i < m_aAddedPages.size(); ++i)
2172 const OUString& rLabel = m_aAddedPages[i]->GetText();
2173 bool bSensitive = m_aAddedPages[i]->IsEnabled();
2174 if (rLabel.isEmpty())
2183 enable_notify_events();
2187 bool bTakeOwnership)
2222 bool m_bUserManagedScrolling;
2228 const Color& rBackgroundColor,
const Color& rShadowColor,
2229 const Color& rFaceColor)
2244 bool bTakeOwnership,
bool bUserManagedScrolling)
2246 , m_xScrolledWindow(pScrolledWindow)
2247 , m_bUserManagedScrolling(bUserManagedScrolling)
2251 rVertScrollBar.
SetScrollHdl(
LINK(
this, SalInstanceScrolledWindow, VscrollHdl));
2254 rHorzScrollBar.
SetScrollHdl(
LINK(
this, SalInstanceScrolledWindow, HscrollHdl));
2259 int page_increment,
int page_size)
override
2280 if (!m_bUserManagedScrolling)
2281 m_aOrigHScrollHdl.
Call(&rHorzScrollBar);
2327 m_xScrolledWindow->SetStyle(nWinBits);
2328 m_xScrolledWindow->queue_resize();
2333 WinBits nWinBits = m_xScrolledWindow->GetStyle();
2334 if (nWinBits & WB_AUTOHSCROLL)
2336 else if (nWinBits & WB_HSCROLL)
2342 int page_increment,
int page_size)
override
2363 if (!m_bUserManagedScrolling)
2364 m_aOrigVScrollHdl.
Call(&rVertScrollBar);
2422 m_xScrolledWindow->SetStyle(nWinBits);
2423 m_xScrolledWindow->queue_resize();
2428 WinBits nWinBits = m_xScrolledWindow->GetStyle();
2429 if (nWinBits & WB_AUTOVSCROLL)
2431 else if (nWinBits & WB_VSCROLL)
2450 const Color& rFaceColor)
override
2460 virtual ~SalInstanceScrolledWindow()
override
2470 signal_vadjustment_changed();
2471 if (!m_bUserManagedScrolling)
2472 m_aOrigVScrollHdl.
Call(pScrollBar);
2477 signal_hadjustment_changed();
2478 if (!m_bUserManagedScrolling)
2483 bool bTakeOwnership)
2485 , m_xNotebook(pNotebook)
2518 if (nPageIndex == -1)
2523 if (m_aPages.size() < nPageIndex + 1
U)
2524 m_aPages.resize(nPageIndex + 1
U);
2525 if (!m_aPages[nPageIndex])
2526 m_aPages[nPageIndex] = std::make_shared<SalInstanceContainer>(pChild,
m_pBuilder,
false);
2527 return m_aPages[nPageIndex].get();
2548 if (nPageIndex < m_aPages.size())
2549 m_aPages.erase(m_aPages.begin() + nPageIndex);
2551 auto iter = m_aAddedPages.find(rIdent);
2552 if (iter != m_aAddedPages.end())
2554 iter->second.second.disposeAndClear();
2555 iter->second.first.disposeAndClear();
2556 m_aAddedPages.erase(iter);
2564 sal_uInt16 nNewPageId = nLastPageId + 1;
2576 m_aAddedPages.try_emplace(rIdent, xPage, xGrid);
2580 unsigned int nPageIndex =
static_cast<unsigned int>(nPos);
2581 if (nPageIndex < m_aPages.size())
2582 m_aPages.insert(m_aPages.begin() + nPageIndex,
nullptr);
2605 for (
auto& rItem : m_aAddedPages)
2607 rItem.second.second.disposeAndClear();
2608 rItem.second.first.disposeAndClear();
2616 return !m_aLeavePageHdl.IsSet() || m_aLeavePageHdl.Call(get_current_page_ident());
2621 m_aEnterPageHdl.Call(get_current_page_ident());
2630 mutable std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
2637 bool bTakeOwnership)
2639 , m_xNotebook(pNotebook)
2643 LINK(
this, SalInstanceVerticalNotebook, DeactivatePageHdl));
2660 sal_uInt16 nPageIndex = m_xNotebook->
GetPagePos(rIdent);
2669 if (nPageIndex == -1)
2671 auto pChild = m_xNotebook->
GetPage(rIdent);
2672 if (m_aPages.size() < nPageIndex + 1
U)
2673 m_aPages.resize(nPageIndex + 1U);
2674 if (!m_aPages[nPageIndex])
2676 return m_aPages[nPageIndex].get();
2689 virtual void remove_page(
const OString& rIdent)
override
2691 sal_uInt16 nPageIndex = m_xNotebook->
GetPagePos(rIdent);
2695 if (nPageIndex < m_aPages.size())
2696 m_aPages.erase(m_aPages.begin() + nPageIndex);
2699 virtual void insert_page(
const OString& rIdent,
const OUString& rLabel,
int nPos)
override
2702 xGrid->set_hexpand(
true);
2703 xGrid->set_vexpand(
true);
2708 unsigned int nPageIndex =
static_cast<unsigned int>(nPos);
2709 if (nPageIndex < m_aPages.size())
2710 m_aPages.insert(m_aPages.begin() + nPageIndex,
nullptr);
2716 virtual void set_tab_label_text(
const OString& rIdent,
const OUString& rText)
override
2729 assert(
false &&
"not implemented");
2732 virtual ~SalInstanceVerticalNotebook()
override
2742 return !m_aLeavePageHdl.IsSet() || m_aLeavePageHdl.Call(get_current_page_ident());
2747 m_aEnterPageHdl.Call(get_current_page_ident());
2751 bool bTakeOwnership)
2753 , m_xButton(pButton)
2754 , m_aOldClickHdl(pButton->GetClickHdl())
2815 if (!m_aClickHdl.IsSet())
2817 pButton->SetClickHdl(m_aOldClickHdl);
2831 weld::Button* SalInstanceAssistant::weld_widget_for_response(
int nResponse)
2836 else if (nResponse ==
RET_NO)
2838 else if (nResponse ==
RET_OK)
2850 bool bTakeOwnership)
2852 , m_xMenuButton(pButton)
2889 pImageSurface,
nullptr, eCheckRadioFalse);
2954 signal_selected(m_xMenuButton->GetCurItemIdent());
2959 if (notify_events_disabled())
2974 bool bTakeOwnership)
2976 , m_xMenuToggleButton(pButton)
2982 virtual void set_active(
bool active)
override
3001 DECL_LINK(ClickHdl, FixedHyperlink&,
void);
3005 bool bTakeOwnership)
3007 , m_xButton(pButton)
3009 m_aOrigClickHdl = m_xButton->GetClickHdl();
3010 m_xButton->SetClickHdl(
LINK(
this, SalInstanceLinkButton, ClickHdl));
3013 virtual void set_label(
const OUString& rText)
override { m_xButton->SetText(rText); }
3015 virtual OUString
get_label()
const override {
return m_xButton->GetText(); }
3017 virtual void set_uri(
const OUString& rUri)
override { m_xButton->SetURL(rUri); }
3019 virtual OUString
get_uri()
const override {
return m_xButton->GetURL(); }
3021 virtual ~SalInstanceLinkButton()
override { m_xButton->SetClickHdl(m_aOrigClickHdl); }
3025 IMPL_LINK(SalInstanceLinkButton, ClickHdl, FixedHyperlink&, rButton,
void)
3027 bool bConsumed = signal_activate_link();
3029 m_aOrigClickHdl.
Call(rButton);
3033 bool bTakeOwnership)
3035 , m_xRadioButton(pButton)
3083 if (notify_events_disabled())
3100 , m_xToggleButton(pButton)
3106 assert(!m_aToggleHdl.IsSet());
3111 virtual void set_active(
bool active)
override
3114 m_xToggleButton->
Check(active);
3123 m_xToggleButton->
SetState(inconsistent ? TRISTATE_INDET : TRISTATE_FALSE);
3132 virtual ~SalInstanceToggleButton()
override
3134 if (m_aToggleHdl.IsSet())
3136 LINK(
this, SalInstanceToggleButton, ToggleListener));
3143 if (notify_events_disabled())
3150 bool bTakeOwnership)
3152 , m_xCheckButton(pButton)
3187 if (notify_events_disabled())
3189 m_xCheckButton->EnableTriState(
false);
3212 virtual void set_range(
int min,
int max)
override
3246 SalInstanceSpinner(Throbber* pThrobber,
SalInstanceBuilder* pBuilder,
bool bTakeOwnership)
3248 , m_xThrobber(pThrobber)
3252 virtual void start()
override { m_xThrobber->start(); }
3254 virtual void stop()
override { m_xThrobber->stop(); }
3264 bool bTakeOwnership)
3266 , m_xProgressBar(pProgressBar)
3270 virtual void set_percentage(
int value)
override { m_xProgressBar->SetValue(value); }
3272 virtual OUString
get_text()
const override {
return m_xProgressBar->GetText(); }
3274 virtual void set_text(
const OUString& rText)
override { m_xProgressBar->SetText(rText); }
3288 , m_xCalendar(pCalendar)
3298 virtual ~SalInstanceCalendar()
override
3308 if (notify_events_disabled())
3315 if (notify_events_disabled())
3321 bool bTakeOwnership)
3347 , m_rInsertTextHdl(rInsertTextHdl)
3355 OUString sText(rText);
3365 , m_aTextFilter(m_aInsertTextHdl)
3399 rStartPos = rSelection.
Min();
3400 rEndPos = rSelection.
Max();
3401 return rSelection.
Len();
3545 if (notify_events_disabled())
3549 signal_cursor_position();
3562 class UpdateGuardIfHidden
3567 bool m_bOrigEnableInvalidate;
3571 : m_rTreeView(rTreeView)
3573 , m_bOrigUpdate(!m_rTreeView.IsVisible() && m_rTreeView.IsUpdateMode())
3575 , m_bOrigEnableInvalidate(!m_rTreeView.IsVisible()
3576 && m_rTreeView.GetModel()->IsEnableInvalidate())
3580 if (m_bOrigEnableInvalidate)
3584 ~UpdateGuardIfHidden()
3586 if (m_bOrigEnableInvalidate)
3640 auto xCell = std::make_unique<SvLBoxString>(rStr);
3642 xCell->SetCustomRender();
3643 pEntry->
AddItem(std::move(xCell));
3647 const OUString* pId,
const OUString* pIconName,
3658 m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
3662 pUserData =
nullptr;
3671 if (pIconName || pImageSurface)
3673 Image aImage(pIconName ? createImage(*pIconName) : createImage(*pImageSurface));
3674 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage,
false));
3679 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy,
false));
3689 pVclRetIter->
iter = pEntry;
3692 if (bChildrenOnDemand)
3730 pEntry->
ReplaceItem(std::make_unique<SvLBoxButton>(pData), 0);
3734 assert(dynamic_cast<SvLBoxButton*>(&rItem));
3753 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3758 assert(dynamic_cast<SvLBoxButton*>(&rItem));
3790 for (
int i = pEntry->
ItemCount(); i < col; ++i)
3793 if (static_cast<size_t>(col) == pEntry->
ItemCount())
3796 pEntry->
AddItem(std::make_unique<SvLBoxButton>(pData));
3809 assert(dynamic_cast<SvLBoxString*>(&rItem));
3810 return static_cast<SvLBoxString&
>(rItem).IsEmphasized();
3818 for (
size_t i = 0; i < rWidths.size(); ++i)
3819 pHeaderBar->SetItemSize(pHeaderBar->GetItemId(i), rWidths[i]);
3824 bool bTakeOwnership)
3827 , m_aCheckButtonData(pTreeView,
false)
3828 , m_aRadioButtonData(pTreeView, true)
3829 , m_bTogglesAsRadio(
false)
3850 pHeaderBar->SetItemSize(pHeaderBar->GetItemId(pHeaderBar->GetItemCount() - 1),
3883 std::vector<tools::Long> aWidths;
3885 if (aWidths.size() > 2)
3887 std::vector<int> aColWidths;
3888 for (
size_t i = 1; i < aWidths.size() - 1; ++i)
3889 aColWidths.push_back(aWidths[i] - aWidths[i - 1]);
3918 std::vector<tools::Long> aTabPositions{ 0 };
3919 for (
size_t i = 0; i < rWidths.size(); ++i)
3920 aTabPositions.push_back(aTabPositions[i] + rWidths[i]);
3929 size_t nTabCount = rEditables.size();
3930 for (
size_t i = 0; i < nTabCount; ++i)
3943 return pHeaderBar->GetItemSize(pHeaderBar->GetItemId(nColumn));
3957 return pHeaderBar->GetItemText(pHeaderBar->GetItemId(nColumn));
3967 return pHeaderBar->SetItemText(pHeaderBar->GetItemId(nColumn), rTitle);
3973 assert(
n_children() == 0 &&
"tree must be empty");
3991 pHeaderBox->GetParent()->Show();
3998 pHeaderBox->GetParent()->Hide();
4003 const OUString* pId,
const OUString* pIconName,
4007 do_insert(pParent, pos, pStr, pId, pIconName, pImageSurface, bChildrenOnDemand, pRet,
false);
4012 OUString sSep(
VclResId(STR_SEPARATOR));
4013 do_insert(
nullptr, pos, &sSep,
nullptr,
nullptr,
nullptr,
false,
nullptr,
true);
4017 int nSourceCount,
const std::function<
void(
weld::TreeIter&,
int nSourceIndex)>& func,
4018 const weld::TreeIter* pParent,
const std::vector<int>* pFixedWidths)
4039 size_t nExtraCols = bHasAutoCheckButton ? 2 : 1;
4042 for (
int i = 0; i < nSourceCount; ++i)
4045 if (bHasAutoCheckButton)
4047 aVclIter.
iter->
AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy,
false));
4054 size_t nFixedWidths = std::min(pFixedWidths->size(), aVclIter.
iter->
ItemCount());
4055 for (
size_t j = 0; j < nFixedWidths; ++j)
4059 pViewDataItem->
mnWidth = (*pFixedWidths)[j];
4102 const OUString* pId =
static_cast<const OUString*
>(pEntry->GetUserData());
4113 int min = std::min(pos1, pos2);
4114 int max = std::max(pos1, pos2);
4118 pModel->
Move(pEntry1, pEntry2);
4143 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4146 if (pos == -1 || (pos == 0 &&
n_children() == 0))
4151 assert(pEntry &&
"bad pos?");
4182 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4199 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4214 std::vector<int> aRows;
4231 if (static_cast<size_t>(col) == pEntry->
ItemCount())
4236 assert(dynamic_cast<SvLBoxString*>(&rItem));
4257 for (
int i = pEntry->
ItemCount(); i < col; ++i)
4260 if (static_cast<size_t>(col) == pEntry->
ItemCount())
4270 assert(dynamic_cast<SvLBoxString*>(&rItem));
4292 for (sal_uInt16 nCur = 0; nCur < nCount; ++nCur)
4297 rItem.
Enable(bSensitive);
4309 rItem.
Enable(bSensitive);
4340 assert(
n_children() == 0 &&
"tree must be empty");
4378 assert(dynamic_cast<SvLBoxString*>(&rItem));
4414 assert(dynamic_cast<SvLBoxString*>(&rItem));
4459 for (
int i = pEntry->
ItemCount(); i < col; ++i)
4462 if (static_cast<size_t>(col) == pEntry->
ItemCount())
4464 pEntry->
AddItem(std::make_unique<SvLBoxContextBmp>(rImage, rImage,
false));
4472 assert(dynamic_cast<SvLBoxContextBmp*>(&rItem));
4487 const css::uno::Reference<css::graphic::XGraphic>& rImage,
4505 const css::uno::Reference<css::graphic::XGraphic>& rImage,
4521 return pEntry ?
static_cast<const OUString*
>(pEntry->
GetUserData()) :
nullptr;
4534 m_aUserData.emplace_back(std::make_unique<OUString>(rId));
4566 if (
const OUString* pStr = static_cast<const OUString*>(pEntry->GetUserData()))
4572 std::unique_ptr<weld::TreeIter>
4575 return std::unique_ptr<weld::TreeIter>(
4591 pVclIter->
iter = pEntry;
4592 return pEntry !=
nullptr;
4600 pVclIter->
iter = pEntry;
4601 return pEntry !=
nullptr;
4616 return rVclIter.
iter !=
nullptr;
4623 return rVclIter.
iter !=
nullptr;
4630 return rVclIter.
iter !=
nullptr;
4637 return rVclIter.
iter !=
nullptr;
4646 return rVclIter.
iter !=
nullptr;
4655 return rVclIter.
iter !=
nullptr;
4662 bool bRet = rVclIter.
iter !=
nullptr;
4675 return rVclIter.
iter !=
nullptr;
4689 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4700 &&
"don't select when frozen, select after thaw. Note selection doesn't survive a "
4744 bool bChildrenOnDemand)
4752 if (bChildrenOnDemand && !pPlaceHolder)
4758 else if (!bChildrenOnDemand && pPlaceHolder)