[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