10 #ifndef INCLUDED_VCL_LAYOUT_HXX
11 #define INCLUDED_VCL_LAYOUT_HXX
13 #include <config_options.h>
51 virtual Size calculateRequisition()
const = 0;
53 virtual void setAllocation(
const Size &rAllocation) = 0;
79 , m_bHomogeneous(bHomogeneous)
80 , m_bVerticalContainer(false)
81 , m_nSpacing(nSpacing)
86 m_nSpacing = nSpacing;
94 m_bHomogeneous = bHomogeneous;
98 return m_bVerticalContainer;
100 virtual bool set_property(
const OString &rKey,
const OUString &rValue)
override;
104 void accumulateMaxes(
const Size &rChildSize,
Size &rSize)
const;
105 Size finalizeMaxes(
const Size &rSize, sal_uInt16 nVisibleChildren)
const;
112 virtual tools::Long getPrimaryCoordinate(
const Point &rPos)
const = 0;
113 virtual void setPrimaryCoordinate(Point &rPos,
tools::Long)
const = 0;
114 virtual tools::Long getSecondaryDimension(
const Size &rSize)
const = 0;
115 virtual void setSecondaryDimension(
Size &rSize,
tools::Long)
const = 0;
117 virtual bool getPrimaryDimensionChildExpand(
const vcl::Window &rWindow)
const = 0;
124 :
VclBox(pParent, bHomogeneous, nSpacing)
126 m_bVerticalContainer =
true;
163 :
VclBox(pParent, bHomogeneous, nSpacing)
165 m_bVerticalContainer =
false;
212 :
VclBox(pParent, false,
Application::GetSettings().GetStyleSettings().GetDialogStyle().button_spacing)
216 virtual bool set_property(
const OString &rKey,
const OUString &rValue)
override;
221 Size addSpacing(
const Size &rSize, sal_uInt16 nVisibleChildren)
const;
231 Requisition calculatePrimarySecondaryRequisitions()
const;
241 m_bVerticalContainer =
true;
280 m_bVerticalContainer =
false;
326 Value() : m_nValue(0), m_bExpand(false) {}
330 Size calculateRequisitionForSpacings(sal_Int32 nRowSpacing, sal_Int32 nColSpacing)
const;
337 , m_bRowHomogeneous(false), m_bColumnHomogeneous(false)
338 , m_nRowSpacing(0), m_nColumnSpacing(0)
343 return m_bRowHomogeneous;
347 return m_bColumnHomogeneous;
351 m_nRowSpacing = nSpacing;
355 m_nColumnSpacing = nSpacing;
359 return m_nRowSpacing;
363 return m_nColumnSpacing;
365 virtual bool set_property(
const OString &rKey,
const OUString &rValue)
override;
368 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) VclBin :
public VclContainer
390 virtual void dispose()
override;
404 virtual Size calculateRequisition()
const override;
405 virtual void setAllocation(
const Size &rAllocation)
override;
406 virtual void set_position(
tools::Long nPosition)
override;
418 virtual Size calculateRequisition()
const override;
419 virtual void setAllocation(
const Size &rAllocation)
override;
420 virtual void set_position(
tools::Long nPosition)
override;
438 virtual void dispose()
override;
439 void set_label(
const OUString &rLabel);
440 OUString get_label()
const;
442 virtual const vcl::Window *get_child()
const override;
447 virtual Size calculateRequisition()
const override;
448 virtual void setAllocation(
const Size &rAllocation)
override;
449 virtual OUString getDefaultAccessibleName()
const override;
460 virtual void dispose()
override;
462 virtual const vcl::Window *get_child()
const override;
463 virtual bool set_property(
const OString &rKey,
const OUString &
rValue)
override;
464 bool get_expanded()
const;
465 void set_expanded(
bool bExpanded);
466 void set_label(
const OUString& rLabel);
467 OUString get_label()
const;
474 virtual Size calculateRequisition()
const override;
475 virtual void setAllocation(
const Size &rAllocation)
override;
487 virtual void dispose()
override;
489 virtual const vcl::Window *get_child()
const override;
490 virtual bool set_property(
const OString &rKey,
const OUString &
rValue)
override;
495 Size getVisibleChildSize()
const;
499 void doSetAllocation(
const Size &rAllocation,
bool bRetryOnFailure);
501 virtual Size calculateRequisition()
const override;
502 virtual void setAllocation(
const Size &rAllocation)
override;
506 void InitScrollBars(
const Size &rRequest);
507 virtual bool EventNotify(
NotifyEvent& rNEvt)
override;
522 , m_bInitialAllocation(true)
526 virtual void setAllocation(
const Size &rAllocation)
override;
548 EnableChildTransparentMode();
549 SetPaintTransparent(
true);
554 GetParent()->Command(rCEvt);
559 virtual void dispose()
override;
566 m_aEventBoxHelper->Show();
569 virtual const vcl::Window *get_child()
const override;
570 virtual Size calculateRequisition()
const override;
571 virtual void setAllocation(
const Size &rAllocation)
override;
583 void trigger_queue_resize();
586 : m_bIgnoreHidden(false)
606 void set_ignore_hidden(
bool bIgnoreHidden);
609 return m_bIgnoreHidden;
616 void set_property(
const OString &rKey,
const OUString &rValue);
643 m_aPaintHdl.
Call(std::pair<vcl::RenderContext&, const tools::Rectangle&>(rRenderContext, rRect));
647 m_aResizeHdl.
Call(GetOutputSizePixel());
651 if (!m_aMouseMotionHdl.
Call(rMEvt))
656 if (!m_aKeyPressHdl.
Call(rKEvt))
662 if (!m_aKeyReleaseHdl.
Call(rKEvt))
670 m_aStyleUpdatedHdl.
Call(*
this);
679 m_aStyleUpdatedHdl.
Call(*
this);
685 if (m_aCommandHdl.
Call(rEvent))
695 OUString sHelpTip = m_aQueryTooltipHdl.
Call(aHelpArea);
696 if (sHelpTip.isEmpty())
698 Point aPt = OutputToScreenPixel(aHelpArea.TopLeft());
699 aHelpArea.SetLeft(aPt.X());
700 aHelpArea.SetTop(aPt.Y());
701 aPt = OutputToScreenPixel(aHelpArea.BottomRight());
702 aHelpArea.SetRight(aPt.X());
703 aHelpArea.SetBottom(aPt.Y());
712 if (m_pFactoryFunction)
713 return m_pFactoryFunction;
721 , m_pFactoryFunction(nullptr)
722 , m_pUserData(nullptr)
729 if (!m_aMousePressHdl.
Call(rMEvt))
734 if (!m_aMouseReleaseHdl.
Call(rMEvt))
737 virtual OUString GetSurroundingText()
const override;
738 virtual Selection GetSurroundingTextSelection()
const override;
739 virtual bool DeleteSurroundingText(
const Selection& rSelection)
override;
742 m_pFactoryFunction = pFactoryFunction;
743 m_pUserData = pUserData;
749 void SetPaintHdl(
const Link<std::pair<vcl::RenderContext&, const tools::Rectangle&>,
void>& rLink)
755 m_aResizeHdl = rLink;
759 m_aMousePressHdl = rLink;
763 m_aMouseMotionHdl = rLink;
767 m_aMouseReleaseHdl = rLink;
771 m_aKeyPressHdl = rLink;
775 m_aKeyReleaseHdl = rLink;
779 m_aStyleUpdatedHdl = rLink;
783 m_aCommandHdl = rLink;
787 m_aQueryTooltipHdl = rLink;
791 m_aGetSurroundingHdl = rLink;
795 m_aDeleteSurroundingHdl = rLink;
799 m_aStartDragHdl = rLink;
803 m_xTransferHelper = rHelper;
804 m_nDragAction = eDNDConstants;
843 return eType == WindowType::CONTAINER || eType == WindowType::SCROLLWINDOW ||
virtual void set_position(tools::Long nPosition)
virtual void Command(const CommandEvent &rCEvt) override
virtual sal_uInt16 getDefaultAccessibleRole() const override
void SetDeleteSurroundingHdl(const Link< const Selection &, bool > &rLink)
bool m_bColumnHomogeneous
virtual void setAllocation(const Size &rAllocation)=0
int get_column_spacing() const
VclFrame(vcl::Window *pParent)
virtual FactoryFunction GetUITestFactory() const
vcl::Window * lastLogicalChildOfParent(const vcl::Window *pTopLevel)
Link< VclDrawingArea &, void > m_aStyleUpdatedHdl
void setWidth(tools::Long nWidth)
virtual void MouseButtonDown(const MouseEvent &rMEvt) override
Link< std::pair< vcl::RenderContext &, const tools::Rectangle & >, void > m_aPaintHdl
virtual void MouseButtonDown(const MouseEvent &rMEvt)
virtual tools::Long getPrimaryDimension(const Size &rSize) const override
VclPtr< vcl::Window > m_pLabel
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
VclVBox(vcl::Window *pParent, bool bHomogeneous=false, int nSpacing=0)
bool m_bVerticalContainer
#define DECL_LINK(Member, ArgType, RetType)
VclDrawingArea(vcl::Window *pParent, WinBits nStyle)
VclPtr< DisclosureButton > m_pDisclosureButton
tools::Long getWidth() const
VclViewport(vcl::Window *pParent)
void SetMousePressHdl(const Link< const MouseEvent &, bool > &rLink)
virtual void StateChanged(StateChangedType nStateChange) override
bool get_ignore_hidden() const
std::function< std::unique_ptr< UIObject >vcl::Window *)> FactoryFunction
virtual Size GetSizePixel() const
void * GetUserData() const
virtual void SetSizePixel(const Size &rNewSize)
virtual void MouseMove(const MouseEvent &rMEvt) override
virtual Size GetOptimalSize() const
void set_row_spacing(int nSpacing)
DataChangedEventType GetType() const
vcl::Window * getNonLayoutParent(vcl::Window *pParent)
void set_spacing(int nSpacing)
Link< const CommandEvent &, bool > m_aCommandHdl
Size getLegacyBestSizeForChildren(const vcl::Window &rWindow)
std::set< VclPtr< vcl::Window > > & get_widgets()
void SetQueryTooltipHdl(const Link< tools::Rectangle &, OUString > &rLink)
virtual void MouseButtonUp(const MouseEvent &rMEvt)
vcl::Window * prevLogicalChildOfParent(const vcl::Window *pTopLevel, const vcl::Window *pChild)
HelpEventMode GetMode() const
virtual void KeyInput(const KeyEvent &rKEvt) override
virtual tools::Long getSecondaryDimension(const Size &rSize) const override
void SetKeyReleaseHdl(const Link< const KeyEvent &, bool > &rLink)
Link< const KeyEvent &, bool > m_aKeyReleaseHdl
css::uno::Any const & rValue
rtl::Reference< TransferDataContainer > m_xTransferHelper
virtual void setPrimaryDimension(Size &rSize, tools::Long nHeight) const override
void SetDragHelper(const rtl::Reference< TransferDataContainer > &rHelper, sal_uInt8 eDNDConstants)
Link< OUString &, int > m_aGetSurroundingHdl
std::set< VclPtr< vcl::Window > > m_aWindows
VclHBox(vcl::Window *pParent, bool bHomogeneous=false, int nSpacing=0)
virtual void DumpAsPropertyTree(tools::JsonWriter &)
Dumps itself and potentially its children to a property tree, to be written easily to JSON...
virtual Size calculateRequisition() const =0
Creates a hierarchy of vcl::Windows (widgets) from a .ui file for dialogs, sidebar, etc.
virtual void setPrimaryDimension(Size &rSize, tools::Long nWidth) const override
AllSettingsFlags GetFlags() const
void SetKeyPressHdl(const Link< const KeyEvent &, bool > &rLink)
Link< VclExpander &, void > maExpandedHdl
virtual void queue_resize(StateChangedType eReason=StateChangedType::Layout)
virtual FactoryFunction GetUITestFactory() const override
force balloon-style in ShowPopover and ShowQuickHelp
Link< VclDrawingArea *, bool > m_aStartDragHdl
bool isContainerWindow(const vcl::Window &rWindow)
const Point & GetMousePosPixel() const
virtual tools::Long getPrimaryDimension(const Size &rSize) const override
void SetExpandedHdl(const Link< VclExpander &, void > &rLink)
virtual tools::Long getPrimaryCoordinate(const Point &rPos) const override
tools::Long getHeight() const
void SetStartDragHdl(const Link< VclDrawingArea *, bool > &rLink)
void SetResizeHdl(const Link< const Size &, void > &rLink)
void erase(vcl::Window *pWindow)
virtual void setAllocation(const Size &rAllocation) override
virtual void MouseButtonUp(const MouseEvent &rMEvt) override
void SetStyleUpdatedHdl(const Link< VclDrawingArea &, void > &rLink)
virtual void Resize() override
void SetGetSurroundingHdl(const Link< OUString &, int > &rLink)
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
void sort_native_button_order(const VclBox &rContainer)
VclSizeGroupMode get_mode() const
const std::set< VclPtr< vcl::Window > > & get_widgets() const
virtual sal_uInt16 getDefaultAccessibleRole() const
void set_homogeneous(bool bHomogeneous)
EventBoxHelper(vcl::Window *pParent)
virtual tools::Long getPrimaryCoordinate(const Point &rPos) const override
Base class used mainly for the LibreOffice Desktop class.
VclPtr< Splitter > m_pSplitter
bool get_row_homogeneous() const
virtual bool set_property(const OString &rKey, const OUString &rValue)
FactoryFunction m_pFactoryFunction
bool get_orientation() const
static void ShowQuickHelp(vcl::Window *pParent, const tools::Rectangle &rScreenRect, const OUString &rHelpText, QuickHelpFlags nStyle=QuickHelpFlags::NONE)
virtual void setPrimaryCoordinate(Point &rPos, tools::Long nPos) const override
void SetPaintHdl(const Link< std::pair< vcl::RenderContext &, const tools::Rectangle & >, void > &rLink)
virtual void KeyUp(const KeyEvent &rKEvt) override
Link< const MouseEvent &, bool > m_aMouseMotionHdl
virtual void SetPosSizePixel(const Point &rNewPos, const Size &rNewSize)
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
Link< const Size &, void > m_aResizeHdl
vcl::Window * firstLogicalChildOfParent(const vcl::Window *pTopLevel)
virtual void KeyInput(const KeyEvent &rKEvt)
bool m_bInitialAllocation
Link< const MouseEvent &, bool > m_aMousePressHdl
void SetUITestFactory(FactoryFunction pFactoryFunction, void *pUserData)
Link< const MouseEvent &, bool > m_aMouseReleaseHdl
bool get_column_homogeneous() const
virtual void DumpAsPropertyTree(tools::JsonWriter &) override
Dumps itself and potentially its children to a property tree, to be written easily to JSON...
virtual void setSecondaryDimension(Size &rSize, tools::Long nHeight) const override
VclPtr< EventBoxHelper > m_aEventBoxHelper
void set_column_spacing(int nSpacing)
void SetCommandHdl(const Link< const CommandEvent &, bool > &rLink)
virtual void setPrimaryCoordinate(Point &rPos, tools::Long nPos) const override
virtual void RequestHelp(const HelpEvent &rHelpEvent) override
Link< tools::Rectangle &, OUString > m_aQueryTooltipHdl
virtual void KeyUp(const KeyEvent &rKEvt)
void insert(vcl::Window *pWindow)
Link< const Selection &, bool > m_aDeleteSurroundingHdl
VCL_DLLPUBLIC bool isLayoutEnabled(const vcl::Window *pWindow)
VclBox(vcl::Window *pParent, bool bHomogeneous, int nSpacing)
void setHeight(tools::Long nHeight)
WindowType GetType() const
virtual void MouseMove(const MouseEvent &rMEvt)
virtual void setSecondaryDimension(Size &rSize, tools::Long nWidth) const override
virtual void StateChanged(StateChangedType nType) override
virtual Size calculateRequisition() const override
VclEventBox(vcl::Window *pParent)
VclGrid(vcl::Window *pParent)
vcl::Window * nextLogicalChildOfParent(const vcl::Window *pTopLevel, const vcl::Window *pChild)
virtual void Command(const CommandEvent &rCEvt)
int get_row_spacing() const
WinBits const WB_CLIPCHILDREN
virtual void SetPosPixel(const Point &rNewPos)
virtual bool getPrimaryDimensionChildExpand(const vcl::Window &rWindow) const override
void SetMouseMoveHdl(const Link< const MouseEvent &, bool > &rLink)
virtual tools::Long getSecondaryDimension(const Size &rSize) const override
virtual void Command(const CommandEvent &rEvent) override
virtual void DataChanged(const DataChangedEvent &rDCEvt)
void SetMouseReleaseHdl(const Link< const MouseEvent &, bool > &rLink)
virtual bool getPrimaryDimensionChildExpand(const vcl::Window &rWindow) const override
Link< const KeyEvent &, bool > m_aKeyPressHdl
tools::Long get_position() const
virtual bool set_property(const OString &rKey, const OUString &rValue) override