diff options
Diffstat (limited to 'sc/source/ui/inc/FilterListBox.hxx')
-rw-r--r-- | sc/source/ui/inc/FilterListBox.hxx | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/sc/source/ui/inc/FilterListBox.hxx b/sc/source/ui/inc/FilterListBox.hxx index 1a4685ff5656..f29641165235 100644 --- a/sc/source/ui/inc/FilterListBox.hxx +++ b/sc/source/ui/inc/FilterListBox.hxx @@ -19,7 +19,9 @@ #pragma once -#include <vcl/InterimItemWindow.hxx> +#include <types.hxx> + +#include <vcl/weld.hxx> class ScGridWindow; @@ -29,15 +31,18 @@ enum class ScFilterBoxMode Scenario }; -class ScFilterListBox final : public InterimItemWindow +class ScFilterListBox final : public std::enable_shared_from_this<ScFilterListBox> { private: + std::unique_ptr<weld::Builder> xBuilder; + std::unique_ptr<weld::Popover> xPopover; std::unique_ptr<weld::TreeView> xTreeView; VclPtr<ScGridWindow> pGridWin; SCCOL nCol; SCROW nRow; bool bInit; bool bCancelled; + bool bGridHadMouseCaptured; sal_uLong nSel; ScFilterBoxMode eMode; ImplSVEvent* nAsyncSelectHdl; @@ -47,10 +52,18 @@ private: DECL_LINK(AsyncSelectHdl, void*, void); public: - ScFilterListBox(vcl::Window* pParent, ScGridWindow* pGrid, SCCOL nNewCol, SCROW nNewRow, + ScFilterListBox(weld::Window* pParent, ScGridWindow* pGrid, SCCOL nNewCol, SCROW nNewRow, ScFilterBoxMode eNewMode); - virtual ~ScFilterListBox() override; - virtual void dispose() override; + void popup_at_rect(weld::Widget* pParent, const tools::Rectangle& rRect) + { + xPopover->popup_at_rect(pParent, rRect); + } + void connect_closed(const Link<weld::Popover&, void>& rLink) + { + xPopover->connect_closed(rLink); + } + void popdown() { xPopover->popdown(); } + ~ScFilterListBox(); weld::TreeView& get_widget() { return *xTreeView; } @@ -59,6 +72,7 @@ public: ScFilterBoxMode GetMode() const { return eMode; } void EndInit(); bool IsInInit() const { return bInit; } + bool MouseWasCaptured() const { return bGridHadMouseCaptured; } void SetCancelled() { bCancelled = true; } }; |