include/svtools/brwbox.hxx | 87 ++++++++++++++++++++++++++++++++++++-- svtools/source/brwbox/brwbox1.cxx | 2 svtools/source/brwbox/datwin.cxx | 4 + svtools/source/brwbox/datwin.hxx | 81 ----------------------------------- 4 files changed, 89 insertions(+), 85 deletions(-)
New commits: commit 35a6e10a42408331de5be54a878a8ee200f0743f Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Sun Jul 5 19:51:26 2020 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon Jul 6 14:52:15 2020 +0200 expose that GetDataWindow is always a BrowserDataWin Change-Id: I63e29131dc5186dcb72b06f6425479271f191b0c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98170 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx index 0b0d3af6fb2e..df19ecf02a1b 100644 --- a/include/svtools/brwbox.hxx +++ b/include/svtools/brwbox.hxx @@ -26,6 +26,7 @@ #include <vcl/event.hxx> #include <vcl/headbar.hxx> #include <vcl/transfer.hxx> +#include <vcl/timer.hxx> #include <vcl/AccessibleBrowseBoxObjType.hxx> #include <vcl/accessibletableprovider.hxx> #include <vector> @@ -36,7 +37,6 @@ #include <o3tl/typed_flags_set.hxx> class BrowserColumn; -class BrowserDataWin; class BrowserHeader; class ScrollBar; class StatusBar; @@ -137,6 +137,88 @@ public: const tools::Rectangle& GetRect() const { return aRect; } }; +class BrowseBox; +class ScrollBarBox; +class BrowserMouseEvent; + +class BrowserDataWin + :public Control + ,public DragSourceHelper + ,public DropTargetHelper +{ +public: + VclPtr<BrowserHeader> pHeaderBar; // only for BrowserMode::HEADERBAR_NEW + VclPtr<ScrollBarBox> pCornerWin; // Window in the corner btw the ScrollBars + bool bInDtor; + AutoTimer aMouseTimer; // recalls MouseMove on dragging out + MouseEvent aRepeatEvt; // a MouseEvent to repeat + Point aLastMousePos; // prevents pseudo-MouseMoves + + OUString aRealRowCount; // to show in VScrollBar + + std::vector<tools::Rectangle> aInvalidRegion; // invalidated Rectangles during !UpdateMode + bool bInPaint; // TRUE while in Paint + bool bInCommand; // TRUE while in Command + bool bNoHScroll; // no horizontal scrollbar + bool bNoVScroll; // no vertical scrollbar + bool bAutoHScroll; // autohide horizontaler Scrollbar + bool bAutoVScroll; // autohide horizontaler Scrollbar + bool bUpdateMode; // not SV-UpdateMode because of Invalidate() + bool bAutoSizeLastCol; // last column always fills up window + bool bResizeOnPaint; // outstanding resize-event + bool bUpdateOnUnlock; // Update() while locked + bool bInUpdateScrollbars; // prevents recursions + bool bHadRecursion; // a recursion occurred + bool bCallingDropCallback; // we're in a callback to AcceptDrop or ExecuteDrop currently + sal_uInt16 nUpdateLock; // lock count, don't call Control::Update()! + short nCursorHidden; // new counter for DoHide/ShowCursor + + long m_nDragRowDividerLimit; + long m_nDragRowDividerOffset; + +public: + explicit BrowserDataWin( BrowseBox* pParent ); + virtual ~BrowserDataWin() override; + virtual void dispose() override; + + virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; + virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; + virtual void RequestHelp( const HelpEvent& rHEvt ) override; + virtual void Command( const CommandEvent& rEvt ) override; + virtual void MouseButtonDown( const MouseEvent& rEvt ) override; + virtual void MouseMove( const MouseEvent& rEvt ) override; + DECL_LINK( RepeatedMouseMove, Timer *, void ); + + virtual void MouseButtonUp( const MouseEvent& rEvt ) override; + virtual void KeyInput( const KeyEvent& rEvt ) override; + virtual void Tracking( const TrackingEvent& rTEvt ) override; + + // DropTargetHelper overridables + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ) override; + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ) override; + + // DragSourceHelper overridables + virtual void StartDrag( sal_Int8 _nAction, const Point& _rPosPixel ) override; + + + BrowseEvent CreateBrowseEvent( const Point& rPosPixel ); + BrowseBox* GetParent() const; + const OUString& GetRealRowCount() const { return aRealRowCount; } + + void SetUpdateMode( bool bMode ); + bool GetUpdateMode() const { return bUpdateMode; } + void EnterUpdateLock() { ++nUpdateLock; } + void LeaveUpdateLock(); + void Update(); + void DoOutstandingInvalidations(); + void Invalidate( InvalidateFlags nFlags = InvalidateFlags::NONE ) override; + void Invalidate( const tools::Rectangle& rRect, InvalidateFlags nFlags = InvalidateFlags::NONE ) override; + using Control::Invalidate; + +protected: + void StartRowDividerDrag( const Point& _rStartPos ); + bool ImplRowDividerHitTest( const BrowserMouseEvent& _rEvent ); +}; class BrowserMouseEvent: public MouseEvent, public BrowseEvent { @@ -161,7 +243,6 @@ public: BrowserExecuteDropEvent( BrowserDataWin* pWin, const ExecuteDropEvent& rEvt ); }; - // TODO // The whole selection thingie in this class is somewhat... suspicious to me. // some oddities: @@ -487,7 +568,7 @@ public: bool IsResizing() const { return bResizing; } // access to positions of fields, column and rows - vcl::Window& GetDataWindow() const; + BrowserDataWin& GetDataWindow() const; tools::Rectangle GetRowRectPixel( long nRow ) const; tools::Rectangle GetFieldRectPixel( long nRow, sal_uInt16 nColId, bool bRelToBrowser = true) const; diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx index 78ed723a7987..17392a79db0e 100644 --- a/svtools/source/brwbox/brwbox1.cxx +++ b/svtools/source/brwbox/brwbox1.cxx @@ -2331,7 +2331,7 @@ sal_uInt16 BrowseBox::GetVisibleRows() const return static_cast<sal_uInt16>((pDataWin->GetOutputSizePixel().Height() - 1 )/ GetDataRowHeight() + 1); } -vcl::Window& BrowseBox::GetDataWindow() const +BrowserDataWin& BrowseBox::GetDataWindow() const { return *pDataWin; } diff --git a/svtools/source/brwbox/datwin.cxx b/svtools/source/brwbox/datwin.cxx index f22ddb19e370..80350e4a31cb 100644 --- a/svtools/source/brwbox/datwin.cxx +++ b/svtools/source/brwbox/datwin.cxx @@ -288,6 +288,10 @@ void BrowserDataWin::Paint(vcl::RenderContext& rRenderContext, const tools::Rect } } +BrowseBox* BrowserDataWin::GetParent() const +{ + return static_cast<BrowseBox*>(Window::GetParent()); +} BrowseEvent BrowserDataWin::CreateBrowseEvent( const Point& rPosPixel ) { diff --git a/svtools/source/brwbox/datwin.hxx b/svtools/source/brwbox/datwin.hxx index 1105708cc5a5..34e30c1812f5 100644 --- a/svtools/source/brwbox/datwin.hxx +++ b/svtools/source/brwbox/datwin.hxx @@ -80,87 +80,6 @@ public: }; -class BrowserDataWin - :public Control - ,public DragSourceHelper - ,public DropTargetHelper -{ -public: - VclPtr<BrowserHeader> pHeaderBar; // only for BrowserMode::HEADERBAR_NEW - VclPtr<ScrollBarBox> pCornerWin; // Window in the corner btw the ScrollBars - bool bInDtor; - AutoTimer aMouseTimer; // recalls MouseMove on dragging out - MouseEvent aRepeatEvt; // a MouseEvent to repeat - Point aLastMousePos; // prevents pseudo-MouseMoves - - OUString aRealRowCount; // to show in VScrollBar - - std::vector<tools::Rectangle> aInvalidRegion; // invalidated Rectangles during !UpdateMode - bool bInPaint; // TRUE while in Paint - bool bInCommand; // TRUE while in Command - bool bNoHScroll; // no horizontal scrollbar - bool bNoVScroll; // no vertical scrollbar - bool bAutoHScroll; // autohide horizontaler Scrollbar - bool bAutoVScroll; // autohide horizontaler Scrollbar - bool bUpdateMode; // not SV-UpdateMode because of Invalidate() - bool bAutoSizeLastCol; // last column always fills up window - bool bResizeOnPaint; // outstanding resize-event - bool bUpdateOnUnlock; // Update() while locked - bool bInUpdateScrollbars; // prevents recursions - bool bHadRecursion; // a recursion occurred - bool bCallingDropCallback; // we're in a callback to AcceptDrop or ExecuteDrop currently - sal_uInt16 nUpdateLock; // lock count, don't call Control::Update()! - short nCursorHidden; // new counter for DoHide/ShowCursor - - long m_nDragRowDividerLimit; - long m_nDragRowDividerOffset; - -public: - explicit BrowserDataWin( BrowseBox* pParent ); - virtual ~BrowserDataWin() override; - virtual void dispose() override; - - virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; - virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; - virtual void RequestHelp( const HelpEvent& rHEvt ) override; - virtual void Command( const CommandEvent& rEvt ) override; - virtual void MouseButtonDown( const MouseEvent& rEvt ) override; - virtual void MouseMove( const MouseEvent& rEvt ) override; - DECL_LINK( RepeatedMouseMove, Timer *, void ); - - virtual void MouseButtonUp( const MouseEvent& rEvt ) override; - virtual void KeyInput( const KeyEvent& rEvt ) override; - virtual void Tracking( const TrackingEvent& rTEvt ) override; - - // DropTargetHelper overridables - virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ) override; - virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ) override; - - // DragSourceHelper overridables - virtual void StartDrag( sal_Int8 _nAction, const Point& _rPosPixel ) override; - - - BrowseEvent CreateBrowseEvent( const Point& rPosPixel ); - BrowseBox* GetParent() const - { return static_cast<BrowseBox*>( Window::GetParent() ); } - const OUString& GetRealRowCount() const { return aRealRowCount; } - - void SetUpdateMode( bool bMode ); - bool GetUpdateMode() const { return bUpdateMode; } - void EnterUpdateLock() { ++nUpdateLock; } - void LeaveUpdateLock(); - void Update(); - void DoOutstandingInvalidations(); - void Invalidate( InvalidateFlags nFlags = InvalidateFlags::NONE ) override; - void Invalidate( const tools::Rectangle& rRect, InvalidateFlags nFlags = InvalidateFlags::NONE ) override; - using Control::Invalidate; - -protected: - void StartRowDividerDrag( const Point& _rStartPos ); - bool ImplRowDividerHitTest( const BrowserMouseEvent& _rEvent ); -}; - - class BrowserScrollBar: public ScrollBar { sal_uLong _nLastPos; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits