sw/source/uibase/docvw/AnnotationWin2.cxx | 11 ++++++++++- sw/source/uibase/docvw/SidebarTxtControl.cxx | 25 +++++++++++++++++++------ sw/source/uibase/docvw/SidebarTxtControl.hxx | 5 +++++ 3 files changed, 34 insertions(+), 7 deletions(-)
New commits: commit 7206249249a72aad803f5534c694ee68e0ee6693 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Wed Dec 16 17:29:01 2020 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Wed Dec 16 20:38:01 2020 +0100 don't scroll the document between mouse down and mouse up in an annotation because that causes the editview to get a mousedown, then the window is scolled under it, then a mouseup so it selects the text between the location it was at mouse down and the new pos at mouse up which is infuriating Change-Id: Ie8d88f851ebe090eb2b1968f1ef6577183586506 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107850 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx b/sw/source/uibase/docvw/AnnotationWin2.cxx index edcdf448d7b8..99c69edf0059 100644 --- a/sw/source/uibase/docvw/AnnotationWin2.cxx +++ b/sw/source/uibase/docvw/AnnotationWin2.cxx @@ -1378,7 +1378,16 @@ IMPL_LINK( SwAnnotationWin, WindowEventListener, VclWindowEvent&, rEvent, void ) rEvent.GetWindow() == mpSidebarTextControl ) { SetActiveSidebarWin(); - mrMgr.MakeVisible( this ); + /* We want this SwAnnotationWin to become visible on activation, + but if we are activating because the mouse is pressed in the + annotation and SidebarTextControl::MouseButtonDown is calling + 'GrabFocus' then leave the MakeVisible to + SidebarTextControl::MouseButtonUp instead. That way a mouse down + doesn't scroll the writer window while the mouse is pressed, and so + doesn't select random text as the editview is scrolled under the + mouse */ + if (!mpSidebarTextControl->MouseDownGainingFocus()) + mrMgr.MakeVisible( this ); } } diff --git a/sw/source/uibase/docvw/SidebarTxtControl.cxx b/sw/source/uibase/docvw/SidebarTxtControl.cxx index 26c45868bd89..bf3601cbe893 100644 --- a/sw/source/uibase/docvw/SidebarTxtControl.cxx +++ b/sw/source/uibase/docvw/SidebarTxtControl.cxx @@ -67,6 +67,7 @@ SidebarTextControl::SidebarTextControl( sw::annotation::SwAnnotationWin& rSideba , mrSidebarWin( rSidebarWin ) , mrDocView( rDocView ) , mrPostItMgr( rPostItMgr ) + , mbMouseDownGainingFocus(false) { AddEventListener( LINK( &mrSidebarWin, sw::annotation::SwAnnotationWin, WindowEventListener ) ); } @@ -215,6 +216,16 @@ void SidebarTextControl::LogicInvalidate(const tools::Rectangle* pRectangle) SfxLokHelper::notifyInvalidation(rWrtShell.GetSfxViewShell(), sRectangle); } +void SidebarTextControl::MakeVisible() +{ + // PostItMgr::MakeVisible can lose our MapMode, save it. + auto oldMapMode = GetMapMode(); + //let's make sure we see our note + mrPostItMgr.MakeVisible(&mrSidebarWin); + if (comphelper::LibreOfficeKit::isActive()) + SetMapMode(oldMapMode); +} + void SidebarTextControl::KeyInput( const KeyEvent& rKeyEvt ) { if (getenv("SW_DEBUG") && rKeyEvt.GetKeyCode().GetCode() == KEY_F12) @@ -246,12 +257,7 @@ void SidebarTextControl::KeyInput( const KeyEvent& rKeyEvt ) } else { - // MakeVisible can lose our MapMode, save it. - auto oldMapMode = GetMapMode(); - //let's make sure we see our note - mrPostItMgr.MakeVisible(&mrSidebarWin); - if (comphelper::LibreOfficeKit::isActive()) - SetMapMode(oldMapMode); + MakeVisible(); tools::Long aOldHeight = mrSidebarWin.GetPostItTextHeight(); bool bDone = false; @@ -340,7 +346,9 @@ void SidebarTextControl::MouseButtonDown( const MouseEvent& rMEvt ) } } + mbMouseDownGainingFocus = !HasFocus(); GrabFocus(); + if ( GetTextView() ) { GetTextView()->MouseButtonDown( rMEvt ); @@ -352,6 +360,11 @@ void SidebarTextControl::MouseButtonUp( const MouseEvent& rMEvt ) { if ( GetTextView() ) GetTextView()->MouseButtonUp( rMEvt ); + if (mbMouseDownGainingFocus) + { + MakeVisible(); + mbMouseDownGainingFocus = false; + } } IMPL_LINK( SidebarTextControl, OnlineSpellCallback, SpellCallbackInfo&, rInfo, void ) diff --git a/sw/source/uibase/docvw/SidebarTxtControl.hxx b/sw/source/uibase/docvw/SidebarTxtControl.hxx index 456aac4ef989..3460ba660ecd 100644 --- a/sw/source/uibase/docvw/SidebarTxtControl.hxx +++ b/sw/source/uibase/docvw/SidebarTxtControl.hxx @@ -35,6 +35,9 @@ class SidebarTextControl : public Control sw::annotation::SwAnnotationWin& mrSidebarWin; SwView& mrDocView; SwPostItMgr& mrPostItMgr; + bool mbMouseDownGainingFocus; + + void MakeVisible(); protected: virtual void Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; @@ -61,6 +64,8 @@ class SidebarTextControl : public Control virtual void MouseButtonUp(const MouseEvent& rMEvt) override; virtual void MouseMove(const MouseEvent& rMEvt) override; + bool MouseDownGainingFocus() const { return mbMouseDownGainingFocus; } + OutlinerView* GetTextView() const; DECL_LINK( OnlineSpellCallback, SpellCallbackInfo&, void ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits