From 501c8d64b5831ccbf943db9342f337ed89ff0652 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Fri, 19 Jun 2020 17:40:35 +0100 Subject: move ListBox to toolkit-only headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6266dedb17cd7c3b730fc69804695536fef37cfc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96751 Tested-by: Jenkins Reviewed-by: Caolán McNamara --- accessibility/inc/pch/precompiled_acc.hxx | 7 +- accessibility/source/helper/acc_factory.cxx | 2 +- .../source/standard/vclxaccessiblebox.cxx | 2 +- .../source/standard/vclxaccessiblelist.cxx | 2 +- .../source/standard/vclxaccessiblelistitem.cxx | 2 +- .../source/standard/vclxaccessibletextfield.cxx | 2 +- include/vcl/lstbox.hxx | 266 -------------------- include/vcl/toolkit/combobox.hxx | 2 +- include/vcl/toolkit/lstbox.hxx | 270 +++++++++++++++++++++ solenv/clang-format/blacklist | 2 +- toolkit/source/awt/vclxtoolkit.cxx | 2 +- toolkit/source/awt/vclxwindows.cxx | 2 +- vcl/inc/pch/precompiled_vcl.hxx | 2 +- vcl/inc/salvtables.hxx | 2 +- vcl/qa/cppunit/dndtest.cxx | 2 +- vcl/source/control/combobox.cxx | 2 +- vcl/source/control/imp_listbox.cxx | 2 +- vcl/source/control/listbox.cxx | 2 +- vcl/source/control/tabctrl.cxx | 2 +- vcl/source/uitest/uiobject.cxx | 2 +- vcl/source/window/builder.cxx | 2 +- vcl/workben/svpclient.cxx | 2 +- 22 files changed, 294 insertions(+), 287 deletions(-) delete mode 100644 include/vcl/lstbox.hxx create mode 100644 include/vcl/toolkit/lstbox.hxx diff --git a/accessibility/inc/pch/precompiled_acc.hxx b/accessibility/inc/pch/precompiled_acc.hxx index 839b881744c0..108cdf397c28 100644 --- a/accessibility/inc/pch/precompiled_acc.hxx +++ b/accessibility/inc/pch/precompiled_acc.hxx @@ -13,7 +13,7 @@ manual changes will be rewritten by the next run of update_pch.sh (which presumably also fixes all possible problems, so it's usually better to use it). - Generated on 2020-04-25 20:54:48 using: + Generated on 2020-06-19 17:39:54 using: ./bin/update_pch accessibility acc --cutoff=4 --exclude:system --include:module --include:local If after updating build fails, use the following command to locate conflicting headers: @@ -49,6 +49,7 @@ #include #include #include +#include #endif // PCH_LEVEL >= 1 #if PCH_LEVEL >= 2 #include @@ -113,7 +114,6 @@ #include #include #include -#include #include #include #include @@ -133,6 +133,7 @@ #include #include #include +#include #include #include #include @@ -167,6 +168,7 @@ #include #include #include +#include #include #include #include @@ -306,6 +308,7 @@ #include #include #include +#include #include #include #include diff --git a/accessibility/source/helper/acc_factory.cxx b/accessibility/source/helper/acc_factory.cxx index 3ede3d7157df..a4648485c2dc 100644 --- a/accessibility/source/helper/acc_factory.cxx +++ b/accessibility/source/helper/acc_factory.cxx @@ -53,7 +53,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/accessibility/source/standard/vclxaccessiblebox.cxx b/accessibility/source/standard/vclxaccessiblebox.cxx index fd382ff5b06b..d8edd7e206bf 100644 --- a/accessibility/source/standard/vclxaccessiblebox.cxx +++ b/accessibility/source/standard/vclxaccessiblebox.cxx @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include using namespace ::com::sun::star; diff --git a/accessibility/source/standard/vclxaccessiblelist.cxx b/accessibility/source/standard/vclxaccessiblelist.cxx index e405b30fb4c3..b64b10bb8cb9 100644 --- a/accessibility/source/standard/vclxaccessiblelist.cxx +++ b/accessibility/source/standard/vclxaccessiblelist.cxx @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include using namespace ::com::sun::star; diff --git a/accessibility/source/standard/vclxaccessiblelistitem.cxx b/accessibility/source/standard/vclxaccessiblelistitem.cxx index 9615c43eff54..7f807c5e7240 100644 --- a/accessibility/source/standard/vclxaccessiblelistitem.cxx +++ b/accessibility/source/standard/vclxaccessiblelistitem.cxx @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/accessibility/source/standard/vclxaccessibletextfield.cxx b/accessibility/source/standard/vclxaccessibletextfield.cxx index b0527d049bb2..c94e46e3d5ed 100644 --- a/accessibility/source/standard/vclxaccessibletextfield.cxx +++ b/accessibility/source/standard/vclxaccessibletextfield.cxx @@ -18,7 +18,7 @@ */ #include -#include +#include #include #include diff --git a/include/vcl/lstbox.hxx b/include/vcl/lstbox.hxx deleted file mode 100644 index b5c495aacfff..000000000000 --- a/include/vcl/lstbox.hxx +++ /dev/null @@ -1,266 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_VCL_LSTBOX_HXX -#define INCLUDED_VCL_LSTBOX_HXX - -#include -#include -#include -#include -#include - -class DataChangedEvent; -class NotifyEvent; -class UserDrawEvent; - -#define LISTBOX_APPEND (SAL_MAX_INT32) -#define LISTBOX_ENTRY_NOTFOUND (SAL_MAX_INT32) -#define LISTBOX_MAX_ENTRIES (SAL_MAX_INT32 - 1) - -// the following defines can be used for the SetEntryFlags() -// and GetEntryFlags() methods - -// !! Do not use these flags for user data as they are reserved !! -// !! to change the internal behaviour of the ListBox implementation !! -// !! for specific entries. !! - -enum class ListBoxEntryFlags -{ - NONE = 0x0000, -/** this flag disables a selection of an entry completely. It is not - possible to select such entries either from the user interface - nor from the ListBox methods. Cursor traveling is handled correctly. - This flag can be used to add titles to a ListBox. -*/ - DisableSelection = 0x0001, - -/** this flag can be used to make an entry multiline capable - A normal entry is single line and will therefore be clipped - at the right listbox border. Setting this flag enables - word breaks for the entry text. -*/ - MultiLine = 0x0002, - -/** this flags lets the item be drawn disabled (e.g. in grey text) - usage only guaranteed with ListBoxEntryFlags::DisableSelection -*/ - DrawDisabled = 0x0004, -}; -namespace o3tl -{ - template<> struct typed_flags : is_typed_flags {}; -} - -class Image; -class ImplListBox; -class ImplListBoxFloatingWindow; -class ImplBtn; -class ImplWin; -class ImplListBoxWindow; - -/// A widget used to choose from a list of items and which has no entry. -class VCL_DLLPUBLIC ListBox : public Control -{ -private: - VclPtr mpImplLB; - VclPtr mpFloatWin; - VclPtr mpImplWin; - VclPtr mpBtn; - sal_uInt16 mnDDHeight; - sal_Int32 mnSaveValue; - sal_Int32 m_nMaxWidthChars; - Link maSelectHdl; - sal_uInt16 mnLineCount; - - bool mbDDAutoSize : 1; - -private: - SAL_DLLPRIVATE void ImplInitListBoxData(); - - DECL_DLLPRIVATE_LINK( ImplSelectHdl, LinkParamNone*, void ); - DECL_DLLPRIVATE_LINK( ImplScrollHdl, ImplListBox*, void ); - DECL_DLLPRIVATE_LINK( ImplCancelHdl, LinkParamNone*, void ); - DECL_DLLPRIVATE_LINK( ImplDoubleClickHdl, ImplListBoxWindow*, void ); - DECL_DLLPRIVATE_LINK( ImplPopupModeEndHdl, FloatingWindow*, void ); - DECL_DLLPRIVATE_LINK( ImplSelectionChangedHdl, sal_Int32, void ); - DECL_DLLPRIVATE_LINK( ImplFocusHdl, sal_Int32, void ); - DECL_DLLPRIVATE_LINK( ImplListItemSelectHdl, LinkParamNone*, void ); - - DECL_DLLPRIVATE_LINK( ImplClickBtnHdl, void*, void ); - -protected: - using Window::ImplInit; - SAL_DLLPRIVATE void ImplInit( vcl::Window* pParent, WinBits nStyle ); - SAL_DLLPRIVATE static WinBits ImplInitStyle( WinBits nStyle ); - bool IsDropDownBox() const { return mpFloatWin != nullptr; } - -protected: - explicit ListBox( WindowType nType ); - - virtual void FillLayoutData() const override; - -public: - explicit ListBox( vcl::Window* pParent, WinBits nStyle = WB_BORDER ); - virtual ~ListBox() override; - virtual void dispose() override; - - virtual void ApplySettings(vcl::RenderContext& rRenderContext) override; - virtual void Draw( OutputDevice* pDev, const Point& rPos, DrawFlags nFlags ) override; - virtual void Resize() override; - virtual bool PreNotify( NotifyEvent& rNEvt ) override; - virtual void StateChanged( StateChangedType nType ) override; - virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; - - void Select(); - void DoubleClick(); - virtual void GetFocus() override; - virtual void LoseFocus() override; - - virtual const Wallpaper& GetDisplayBackground() const override; - - virtual void setPosSizePixel( long nX, long nY, - long nWidth, long nHeight, PosSizeFlags nFlags = PosSizeFlags::All ) override; - - tools::Rectangle GetDropDownPosSizePixel() const; - - void AdaptDropDownLineCountToMaximum(); - void SetDropDownLineCount( sal_uInt16 nLines ); - sal_uInt16 GetDropDownLineCount() const; - - void EnableAutoSize( bool bAuto ); - bool IsAutoSizeEnabled() const { return mbDDAutoSize; } - - sal_Int32 InsertEntry( const OUString& rStr, sal_Int32 nPos = LISTBOX_APPEND ); - sal_Int32 InsertEntry( const OUString& rStr, const Image& rImage, sal_Int32 nPos = LISTBOX_APPEND ); - void RemoveEntry( sal_Int32 nPos ); - - void Clear(); - - sal_Int32 GetEntryPos( const OUString& rStr ) const; - Image GetEntryImage( sal_Int32 nPos ) const; - OUString GetEntry( sal_Int32 nPos ) const; - sal_Int32 GetEntryCount() const; - - void SelectEntry( const OUString& rStr, bool bSelect = true ); - void SelectEntryPos( sal_Int32 nPos, bool bSelect = true ); - void SelectEntriesPos( const std::vector& rPositions, bool bSelect = true ); - - sal_Int32 GetSelectedEntryCount() const; - OUString GetSelectedEntry( sal_Int32 nSelIndex = 0 ) const; - sal_Int32 GetSelectedEntryPos( sal_Int32 nSelIndex = 0 ) const; - - bool IsEntryPosSelected( sal_Int32 nPos ) const; - void SetNoSelection(); - - void SetEntryData( sal_Int32 nPos, void* pNewData ); - void* GetEntryData( sal_Int32 nPos ) const; - - /** this methods stores a combination of flags from the - ListBoxEntryFlags::* defines at the given entry. - See description of the possible ListBoxEntryFlags::* flags - for details. - Do not use these flags for user data as they are reserved - to change the internal behaviour of the ListBox implementation - for specific entries. - */ - void SetEntryFlags( sal_Int32 nPos, ListBoxEntryFlags nFlags ); - - void SetTopEntry( sal_Int32 nPos ); - sal_Int32 GetTopEntry() const; - - /** - * Removes existing separators, and sets the position of the - * one and only separator. - */ - void SetSeparatorPos( sal_Int32 n ); - /** - * Gets the position of the separator which was added first. - * Returns LISTBOX_ENTRY_NOTFOUND if there is no separator. - */ - sal_Int32 GetSeparatorPos() const; - - /** - * Adds a new separator at the given position n. - */ - void AddSeparator( sal_Int32 n ); - - bool IsTravelSelect() const; - bool IsInDropDown() const; - void ToggleDropDown(); - - void EnableMultiSelection( bool bMulti ); - bool IsMultiSelectionEnabled() const; - - void SetReadOnly( bool bReadOnly = true ); - bool IsReadOnly() const; - - tools::Rectangle GetBoundingRectangle( sal_Int32 nItem ) const; - - void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; } - - Size CalcSubEditSize() const; //size of area inside lstbox, i.e. no scrollbar/dropdown - Size CalcMinimumSize() const; //size of lstbox area, i.e. including scrollbar/dropdown - virtual Size GetOptimalSize() const override; - Size CalcAdjustedSize( const Size& rPrefSize ) const; - Size CalcBlockSize( sal_uInt16 nColumns, sal_uInt16 nLines ) const; - void GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines ) const; - - sal_uInt16 GetDisplayLineCount() const; - - /** checks whether a certain point lies within the bounds of - a listbox item and returns the item as well as the character position - the point is at. - -

If the point is inside an item the item pos is put into rPos and - the item-relative character index is returned. If the point is not inside - an item -1 is returned and rPos is unchanged.

- - @param rPoint - tells the point for which an item is requested. - - @param rPos - gets the item at the specified point rPoint - - @returns - the item-relative character index at point rPos or -1 - if no item is at that point. - */ - using Control::GetIndexForPoint; - long GetIndexForPoint( const Point& rPoint, sal_Int32 & rPos ) const; - - void setMaxWidthChars(sal_Int32 nWidth); - - virtual bool set_property(const OString &rKey, const OUString &rValue) override; - - virtual FactoryFunction GetUITestFactory() const override; - - virtual boost::property_tree::ptree DumpAsPropertyTree() override; -}; - -class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MultiListBox final : public ListBox -{ -public: - explicit MultiListBox( vcl::Window* pParent, WinBits nStyle ); - -}; - -#endif // INCLUDED_VCL_LSTBOX_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/toolkit/combobox.hxx b/include/vcl/toolkit/combobox.hxx index d81e70fbb610..a3c4e1cee5b3 100644 --- a/include/vcl/toolkit/combobox.hxx +++ b/include/vcl/toolkit/combobox.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_VCL_COMBOBOX_HXX #define INCLUDED_VCL_COMBOBOX_HXX -#if !defined(VCL_DLLIMPLEMENTATION) && !defined(TOOLKIT_DLLIMPLEMENTATION) && !defined(VCL_INTERNALS) && !defined(DESKTOP_DLLIMPLEMENTATION) +#if !defined(VCL_DLLIMPLEMENTATION) && !defined(TOOLKIT_DLLIMPLEMENTATION) && !defined(VCL_INTERNALS) #error "don't use this in new code" #endif diff --git a/include/vcl/toolkit/lstbox.hxx b/include/vcl/toolkit/lstbox.hxx new file mode 100644 index 000000000000..a9f636f6000a --- /dev/null +++ b/include/vcl/toolkit/lstbox.hxx @@ -0,0 +1,270 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_VCL_LSTBOX_HXX +#define INCLUDED_VCL_LSTBOX_HXX + +#if !defined(VCL_DLLIMPLEMENTATION) && !defined(TOOLKIT_DLLIMPLEMENTATION) && !defined(VCL_INTERNALS) +#error "don't use this in new code" +#endif + +#include +#include +#include +#include +#include + +class DataChangedEvent; +class NotifyEvent; +class UserDrawEvent; + +#define LISTBOX_APPEND (SAL_MAX_INT32) +#define LISTBOX_ENTRY_NOTFOUND (SAL_MAX_INT32) +#define LISTBOX_MAX_ENTRIES (SAL_MAX_INT32 - 1) + +// the following defines can be used for the SetEntryFlags() +// and GetEntryFlags() methods + +// !! Do not use these flags for user data as they are reserved !! +// !! to change the internal behaviour of the ListBox implementation !! +// !! for specific entries. !! + +enum class ListBoxEntryFlags +{ + NONE = 0x0000, +/** this flag disables a selection of an entry completely. It is not + possible to select such entries either from the user interface + nor from the ListBox methods. Cursor traveling is handled correctly. + This flag can be used to add titles to a ListBox. +*/ + DisableSelection = 0x0001, + +/** this flag can be used to make an entry multiline capable + A normal entry is single line and will therefore be clipped + at the right listbox border. Setting this flag enables + word breaks for the entry text. +*/ + MultiLine = 0x0002, + +/** this flags lets the item be drawn disabled (e.g. in grey text) + usage only guaranteed with ListBoxEntryFlags::DisableSelection +*/ + DrawDisabled = 0x0004, +}; +namespace o3tl +{ + template<> struct typed_flags : is_typed_flags {}; +} + +class Image; +class ImplListBox; +class ImplListBoxFloatingWindow; +class ImplBtn; +class ImplWin; +class ImplListBoxWindow; + +/// A widget used to choose from a list of items and which has no entry. +class VCL_DLLPUBLIC ListBox : public Control +{ +private: + VclPtr mpImplLB; + VclPtr mpFloatWin; + VclPtr mpImplWin; + VclPtr mpBtn; + sal_uInt16 mnDDHeight; + sal_Int32 mnSaveValue; + sal_Int32 m_nMaxWidthChars; + Link maSelectHdl; + sal_uInt16 mnLineCount; + + bool mbDDAutoSize : 1; + +private: + SAL_DLLPRIVATE void ImplInitListBoxData(); + + DECL_DLLPRIVATE_LINK( ImplSelectHdl, LinkParamNone*, void ); + DECL_DLLPRIVATE_LINK( ImplScrollHdl, ImplListBox*, void ); + DECL_DLLPRIVATE_LINK( ImplCancelHdl, LinkParamNone*, void ); + DECL_DLLPRIVATE_LINK( ImplDoubleClickHdl, ImplListBoxWindow*, void ); + DECL_DLLPRIVATE_LINK( ImplPopupModeEndHdl, FloatingWindow*, void ); + DECL_DLLPRIVATE_LINK( ImplSelectionChangedHdl, sal_Int32, void ); + DECL_DLLPRIVATE_LINK( ImplFocusHdl, sal_Int32, void ); + DECL_DLLPRIVATE_LINK( ImplListItemSelectHdl, LinkParamNone*, void ); + + DECL_DLLPRIVATE_LINK( ImplClickBtnHdl, void*, void ); + +protected: + using Window::ImplInit; + SAL_DLLPRIVATE void ImplInit( vcl::Window* pParent, WinBits nStyle ); + SAL_DLLPRIVATE static WinBits ImplInitStyle( WinBits nStyle ); + bool IsDropDownBox() const { return mpFloatWin != nullptr; } + +protected: + explicit ListBox( WindowType nType ); + + virtual void FillLayoutData() const override; + +public: + explicit ListBox( vcl::Window* pParent, WinBits nStyle = WB_BORDER ); + virtual ~ListBox() override; + virtual void dispose() override; + + virtual void ApplySettings(vcl::RenderContext& rRenderContext) override; + virtual void Draw( OutputDevice* pDev, const Point& rPos, DrawFlags nFlags ) override; + virtual void Resize() override; + virtual bool PreNotify( NotifyEvent& rNEvt ) override; + virtual void StateChanged( StateChangedType nType ) override; + virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; + + void Select(); + void DoubleClick(); + virtual void GetFocus() override; + virtual void LoseFocus() override; + + virtual const Wallpaper& GetDisplayBackground() const override; + + virtual void setPosSizePixel( long nX, long nY, + long nWidth, long nHeight, PosSizeFlags nFlags = PosSizeFlags::All ) override; + + tools::Rectangle GetDropDownPosSizePixel() const; + + void AdaptDropDownLineCountToMaximum(); + void SetDropDownLineCount( sal_uInt16 nLines ); + sal_uInt16 GetDropDownLineCount() const; + + void EnableAutoSize( bool bAuto ); + bool IsAutoSizeEnabled() const { return mbDDAutoSize; } + + sal_Int32 InsertEntry( const OUString& rStr, sal_Int32 nPos = LISTBOX_APPEND ); + sal_Int32 InsertEntry( const OUString& rStr, const Image& rImage, sal_Int32 nPos = LISTBOX_APPEND ); + void RemoveEntry( sal_Int32 nPos ); + + void Clear(); + + sal_Int32 GetEntryPos( const OUString& rStr ) const; + Image GetEntryImage( sal_Int32 nPos ) const; + OUString GetEntry( sal_Int32 nPos ) const; + sal_Int32 GetEntryCount() const; + + void SelectEntry( const OUString& rStr, bool bSelect = true ); + void SelectEntryPos( sal_Int32 nPos, bool bSelect = true ); + void SelectEntriesPos( const std::vector& rPositions, bool bSelect = true ); + + sal_Int32 GetSelectedEntryCount() const; + OUString GetSelectedEntry( sal_Int32 nSelIndex = 0 ) const; + sal_Int32 GetSelectedEntryPos( sal_Int32 nSelIndex = 0 ) const; + + bool IsEntryPosSelected( sal_Int32 nPos ) const; + void SetNoSelection(); + + void SetEntryData( sal_Int32 nPos, void* pNewData ); + void* GetEntryData( sal_Int32 nPos ) const; + + /** this methods stores a combination of flags from the + ListBoxEntryFlags::* defines at the given entry. + See description of the possible ListBoxEntryFlags::* flags + for details. + Do not use these flags for user data as they are reserved + to change the internal behaviour of the ListBox implementation + for specific entries. + */ + void SetEntryFlags( sal_Int32 nPos, ListBoxEntryFlags nFlags ); + + void SetTopEntry( sal_Int32 nPos ); + sal_Int32 GetTopEntry() const; + + /** + * Removes existing separators, and sets the position of the + * one and only separator. + */ + void SetSeparatorPos( sal_Int32 n ); + /** + * Gets the position of the separator which was added first. + * Returns LISTBOX_ENTRY_NOTFOUND if there is no separator. + */ + sal_Int32 GetSeparatorPos() const; + + /** + * Adds a new separator at the given position n. + */ + void AddSeparator( sal_Int32 n ); + + bool IsTravelSelect() const; + bool IsInDropDown() const; + void ToggleDropDown(); + + void EnableMultiSelection( bool bMulti ); + bool IsMultiSelectionEnabled() const; + + void SetReadOnly( bool bReadOnly = true ); + bool IsReadOnly() const; + + tools::Rectangle GetBoundingRectangle( sal_Int32 nItem ) const; + + void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; } + + Size CalcSubEditSize() const; //size of area inside lstbox, i.e. no scrollbar/dropdown + Size CalcMinimumSize() const; //size of lstbox area, i.e. including scrollbar/dropdown + virtual Size GetOptimalSize() const override; + Size CalcAdjustedSize( const Size& rPrefSize ) const; + Size CalcBlockSize( sal_uInt16 nColumns, sal_uInt16 nLines ) const; + void GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines ) const; + + sal_uInt16 GetDisplayLineCount() const; + + /** checks whether a certain point lies within the bounds of + a listbox item and returns the item as well as the character position + the point is at. + +

If the point is inside an item the item pos is put into rPos and + the item-relative character index is returned. If the point is not inside + an item -1 is returned and rPos is unchanged.

+ + @param rPoint + tells the point for which an item is requested. + + @param rPos + gets the item at the specified point rPoint + + @returns + the item-relative character index at point rPos or -1 + if no item is at that point. + */ + using Control::GetIndexForPoint; + long GetIndexForPoint( const Point& rPoint, sal_Int32 & rPos ) const; + + void setMaxWidthChars(sal_Int32 nWidth); + + virtual bool set_property(const OString &rKey, const OUString &rValue) override; + + virtual FactoryFunction GetUITestFactory() const override; + + virtual boost::property_tree::ptree DumpAsPropertyTree() override; +}; + +class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MultiListBox final : public ListBox +{ +public: + explicit MultiListBox( vcl::Window* pParent, WinBits nStyle ); + +}; + +#endif // INCLUDED_VCL_LSTBOX_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist index 60739ddcfd9c..4bbd268faa57 100644 --- a/solenv/clang-format/blacklist +++ b/solenv/clang-format/blacklist @@ -7389,7 +7389,6 @@ include/vcl/layout.hxx include/vcl/lazydelete.hxx include/vcl/lineinfo.hxx include/vcl/longcurr.hxx -include/vcl/lstbox.hxx include/vcl/mapmod.hxx include/vcl/menu.hxx include/vcl/menubtn.hxx @@ -7457,6 +7456,7 @@ include/vcl/toolkit/fixed.hxx include/vcl/toolkit/fixedhyper.hxx include/vcl/toolkit/group.hxx include/vcl/toolkit/imgctrl.hxx +include/vcl/toolkit/lstbox.hxx include/vcl/toolkit/morebtn.hxx include/vcl/toolkit/prgsbar.hxx include/vcl/toolkit/roadmap.hxx diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx index 540eba56a57c..4b4efaece266 100644 --- a/toolkit/source/awt/vclxtoolkit.cxx +++ b/toolkit/source/awt/vclxtoolkit.cxx @@ -96,7 +96,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx index e0d14698ab62..719ee7e56056 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -45,7 +45,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/vcl/inc/pch/precompiled_vcl.hxx b/vcl/inc/pch/precompiled_vcl.hxx index fca4ccecb24b..acb3b205cfab 100644 --- a/vcl/inc/pch/precompiled_vcl.hxx +++ b/vcl/inc/pch/precompiled_vcl.hxx @@ -297,7 +297,6 @@ #include #include #include -#include #include #include #include @@ -319,6 +318,7 @@ #include #include #include +#include #include #include #include diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 57cb006b7a38..c95c4fb05187 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/vcl/qa/cppunit/dndtest.cxx b/vcl/qa/cppunit/dndtest.cxx index 37629239b83c..9120c19c0e9c 100644 --- a/vcl/qa/cppunit/dndtest.cxx +++ b/vcl/qa/cppunit/dndtest.cxx @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx index 13a3bc8dfeaa..5cfbb85d4810 100644 --- a/vcl/source/control/combobox.cxx +++ b/vcl/source/control/combobox.cxx @@ -22,7 +22,7 @@ #include #include -#include +#include #include #include #include diff --git a/vcl/source/control/imp_listbox.cxx b/vcl/source/control/imp_listbox.cxx index 4ca534e1d7a3..0a04c7df9830 100644 --- a/vcl/source/control/imp_listbox.cxx +++ b/vcl/source/control/imp_listbox.cxx @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff --git a/vcl/source/control/listbox.cxx b/vcl/source/control/listbox.cxx index 2e5e51e77fa9..c30d24704da1 100644 --- a/vcl/source/control/listbox.cxx +++ b/vcl/source/control/listbox.cxx @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include #include diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx index 484b457574bd..020944346515 100644 --- a/vcl/source/control/tabctrl.cxx +++ b/vcl/source/control/tabctrl.cxx @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx index e2474e4bdd6a..56d09ddebb0a 100644 --- a/vcl/source/uitest/uiobject.cxx +++ b/vcl/source/uitest/uiobject.cxx @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 328c8ca024f0..fd603fec5ee1 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/vcl/workben/svpclient.cxx b/vcl/workben/svpclient.cxx index 23bfcf37911e..78c6687b75d3 100644 --- a/vcl/workben/svpclient.cxx +++ b/vcl/workben/svpclient.cxx @@ -30,8 +30,8 @@ #include #include #include -#include #include +#include #include #include #include -- cgit