[libreoffice] 03/03: backport middle click fix from master (closes: #871588)

Rene Engelhard rene at moszumanska.debian.org
Mon Aug 14 22:15:02 UTC 2017


This is an automated email from the git hooks/post-receive script.

rene pushed a commit to branch debian-experimental-5.4
in repository libreoffice.

commit 9ea7e7c7c4a64a4b248547c9d9660dbfa6a545b6
Author: Rene Engelhard <rene at rene-engelhard.de>
Date:   Tue Aug 15 00:14:43 2017 +0200

    backport middle click fix from master (closes: #871588)
---
 changelog                           |   2 +
 patches/fix-middle-click-paste.diff | 142 ++++++++++++++++++++++++++++++++++++
 patches/series                      |   1 +
 3 files changed, 145 insertions(+)

diff --git a/changelog b/changelog
index 94035df..07feea8 100644
--- a/changelog
+++ b/changelog
@@ -4,6 +4,8 @@ libreoffice (1:5.4.1~rc1-1) UNRELEASED; urgency=medium
 
   * debian/patches/stop-shipping-mimelnk-desktop-files.diff: as name says
     (closes: #872001)
+  * debian/patches/fix-middle-click-paste.diff: as name says; backport
+    from master (closes: #871588)
 
  -- Rene Engelhard <rene at debian.org>  Sat, 12 Aug 2017 10:36:57 +0200
 
diff --git a/patches/fix-middle-click-paste.diff b/patches/fix-middle-click-paste.diff
new file mode 100644
index 0000000..a801982
--- /dev/null
+++ b/patches/fix-middle-click-paste.diff
@@ -0,0 +1,142 @@
+From 5b3b0a91edc4c468c7c9c132cd066c0d25de9706 Mon Sep 17 00:00:00 2001
+From: Noel Grandin <noelgrandin at gmail.com>
+Date: Sun, 13 Aug 2017 13:37:28 +0200
+Subject: tdf#110988 Middle click does not paste primary selection
+
+regression from commit 65b7b6322b662785bf032e66c76abc36c9a2bb0e
+"loplugin:unusedenumconstants read-only constants in vcl"
+
+Change-Id: I262dd4c9cd1dc6eca82521f5fd9fbfc952fb7745
+Reviewed-on: https://gerrit.libreoffice.org/41111
+Tested-by: Jenkins <ci at libreoffice.org>
+Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
+
+diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx
+index b670682..f0f80b4 100644
+--- a/editeng/source/editeng/impedit.cxx
++++ b/editeng/source/editeng/impedit.cxx
+@@ -1349,7 +1349,13 @@ bool ImpEditView::MouseButtonUp( const MouseEvent& rMouseEvent )
+     nExtraCursorFlags = GetCursorFlags::NONE;
+     bClickedInSelection = false;
+ 
+-    if ( rMouseEvent.IsLeft() && GetEditSelection().HasRange() )
++    if ( rMouseEvent.IsMiddle() && !bReadOnly &&
++         ( GetWindow()->GetSettings().GetMouseSettings().GetMiddleButtonAction() == MouseMiddleButtonAction::PasteSelection ) )
++    {
++        Reference<css::datatransfer::clipboard::XClipboard> aClipBoard(GetWindow()->GetPrimarySelection());
++        Paste( aClipBoard );
++    }
++    else if ( rMouseEvent.IsLeft() && GetEditSelection().HasRange() )
+     {
+         Reference<css::datatransfer::clipboard::XClipboard> aClipBoard(GetWindow()->GetPrimarySelection());
+         CutCopy( aClipBoard, false );
+diff --git a/include/vcl/settings.hxx b/include/vcl/settings.hxx
+index 8dcaa4c..097605e 100644
+--- a/include/vcl/settings.hxx
++++ b/include/vcl/settings.hxx
+@@ -79,7 +79,7 @@ namespace o3tl
+ 
+ enum class MouseMiddleButtonAction
+ {
+-    Nothing, AutoScroll
++    Nothing, AutoScroll, PasteSelection
+ };
+ 
+ enum class MouseWheelBehaviour
+diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
+index 7d0b7fa..f60937c 100644
+--- a/sc/source/ui/app/inputwin.cxx
++++ b/sc/source/ui/app/inputwin.cxx
+@@ -1349,7 +1349,14 @@ void ScTextWnd::MouseButtonUp( const MouseEvent& rMEvt )
+     if (mpEditView)
+         if (mpEditView->MouseButtonUp( rMEvt ))
+         {
+-            SC_MOD()->InputSelection( mpEditView.get() );
++            if ( rMEvt.IsMiddle() &&
++                     GetSettings().GetMouseSettings().GetMiddleButtonAction() == MouseMiddleButtonAction::PasteSelection )
++            {
++                //  EditView may have pasted from selection
++                SC_MOD()->InputChanged( mpEditView.get() );
++            }
++            else
++                SC_MOD()->InputSelection( mpEditView.get() );
+         }
+ }
+ 
+diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
+index 3bcec4d..23edbf1 100644
+--- a/sc/source/ui/view/gridwin.cxx
++++ b/sc/source/ui/view/gridwin.cxx
+@@ -1818,7 +1818,16 @@ void ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt )
+         SCROW       nEditRow;
+         pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+         pEditView->MouseButtonUp( rMEvt );
+-        pScMod->InputSelection( pEditView );            // parentheses etc.
++
++        if ( rMEvt.IsMiddle() &&
++                 GetSettings().GetMouseSettings().GetMiddleButtonAction() == MouseMiddleButtonAction::PasteSelection )
++        {
++            //  EditView may have pasted from selection
++            pScMod->InputChanged( pEditView );
++        }
++        else
++            pScMod->InputSelection( pEditView );            // parentheses etc.
++
+         pViewData->GetView()->InvalidateAttribs();
+         rBindings.Invalidate( SID_HYPERLINK_GETLINK );
+         bEEMouse = false;
+diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
+index 69cc50a..95c079c 100644
+--- a/vcl/source/control/edit.cxx
++++ b/vcl/source/control/edit.cxx
+@@ -1361,6 +1361,13 @@ void Edit::MouseButtonUp( const MouseEvent& rMEvt )
+         ImplSetCursorPos( nCharPos, false );
+         mbClickedInSelection = false;
+     }
++    else if ( rMEvt.IsMiddle() && !mbReadOnly &&
++              ( GetSettings().GetMouseSettings().GetMiddleButtonAction() == MouseMiddleButtonAction::PasteSelection ) )
++    {
++        css::uno::Reference<css::datatransfer::clipboard::XClipboard> aSelection(Window::GetPrimarySelection());
++        ImplPaste( aSelection );
++        ImplModified();
++    }
+ }
+ 
+ void Edit::Tracking( const TrackingEvent& rTEvt )
+diff --git a/vcl/source/edit/textview.cxx b/vcl/source/edit/textview.cxx
+index ae9fac5..7c52843 100644
+--- a/vcl/source/edit/textview.cxx
++++ b/vcl/source/edit/textview.cxx
+@@ -734,7 +734,15 @@ void TextView::MouseButtonUp( const MouseEvent& rMouseEvent )
+     mpImpl->mbClickedInSelection = false;
+     mpImpl->mnTravelXPos = TRAVEL_X_DONTKNOW;
+     mpImpl->mpSelEngine->SelMouseButtonUp( rMouseEvent );
+-    if ( rMouseEvent.IsLeft() && GetSelection().HasRange() )
++    if ( rMouseEvent.IsMiddle() && !IsReadOnly() &&
++         ( GetWindow()->GetSettings().GetMouseSettings().GetMiddleButtonAction() == MouseMiddleButtonAction::PasteSelection ) )
++    {
++        css::uno::Reference<css::datatransfer::clipboard::XClipboard> aSelection(GetWindow()->GetPrimarySelection());
++        Paste( aSelection );
++        if ( mpImpl->mpTextEngine->IsModified() )
++            mpImpl->mpTextEngine->Broadcast( TextHint( SfxHintId::TextModified ) );
++    }
++    else if ( rMouseEvent.IsLeft() && GetSelection().HasRange() )
+     {
+         css::uno::Reference<css::datatransfer::clipboard::XClipboard> aSelection(GetWindow()->GetPrimarySelection());
+         Copy( aSelection );
+diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
+index 7a182b0..bc9c468 100644
+--- a/vcl/source/window/winproc.cxx
++++ b/vcl/source/window/winproc.cxx
+@@ -761,6 +761,8 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>& xWindow, MouseNotifyEvent
+                 MouseMiddleButtonAction nMiddleAction = pChild->GetSettings().GetMouseSettings().GetMiddleButtonAction();
+                 if ( nMiddleAction == MouseMiddleButtonAction::AutoScroll )
+                     bRet = !ImplCallCommand( pChild, CommandEventId::StartAutoScroll, nullptr, true, &aChildPos );
++                else if ( nMiddleAction == MouseMiddleButtonAction::PasteSelection )
++                    bRet = !ImplCallCommand( pChild, CommandEventId::PasteSelection, nullptr, true, &aChildPos );
+             }
+             else
+             {
+-- 
+cgit v0.10.2
+
diff --git a/patches/series b/patches/series
index 30de6a1..e72a571 100644
--- a/patches/series
+++ b/patches/series
@@ -31,3 +31,4 @@ cppunit-optional.diff
 disable-unused-test-programs.diff
 gb_SUPPRESS_TESTS.diff
 stop-shipping-mimelnk-desktop-files.diff
+fix-middle-click-paste.diff

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-openoffice/libreoffice.git



More information about the Pkg-openoffice-commits mailing list