summaryrefslogtreecommitdiff
path: root/sc/source/ui/inc/FilterListBox.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/inc/FilterListBox.hxx')
-rw-r--r--sc/source/ui/inc/FilterListBox.hxx24
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; }
};