diff options
author | Maxim Monastirsky <momonasmon@gmail.com> | 2018-04-24 01:23:33 +0300 |
---|---|---|
committer | Maxim Monastirsky <momonasmon@gmail.com> | 2018-04-27 13:35:38 +0200 |
commit | 632bc11ce8fab1c4046ab24810b90a7ce9ac5914 (patch) | |
tree | bca77bf682485765350e3db57afcb71ca493a648 | |
parent | 2815499d7c0b32fa05fcd697e7b2c2d897f78dfb (diff) |
tdf#117017 Pasting into the formula bar shouldn't retain formatting
This is (kind of) regression from the previous commit
a860c94f0da22065074cc36e8ddda73261641533 ("tdf#117017 Make modifier
keys not trigger the InputChanged handler").
Reset of formatting when pasting into the formula bar via a keyboard
shortcut, was actually a side effect of the gtk auto-accelerator
work. In particual, bibisect (of the 5.2 cycle) points to commit
8d53d01f38b856f177aca3ed4d3cba3db10f24a5 ("tdf#96739: Send Ctrl-Left/
RightShift events to correct window"). The behavior was later changed
back with commit 0321dbb9be72f92c02919457cdc3c4e76cfbd11d
("Resolves: tdf#99324 let sidebar toggle auto-mnemonics on/off with
alt"), but introduced again upon request of tdf#113894, with commit
d90dcf3554a84b5600800ee6deb3cde879c62b8d ("tdf#113894 release ctrl of
ctrl+v in input line should strip formatting"). Now it's broken again
with the previous commit of this bug.
However, even if not retaining formatting is the desired behavior,
triggering it on a modifier key release isn't a good idea. So keep
the previous commit, and implement tdf#113894 differently. In
addition, make sure to get identical behavior regardless of the
pasting method, be it via a keyboard shortcut, a toolbar button or a
menu/context menu command. And users can still override this behavior
with the usual paste special dialog, or the toolbar dropdown.
Change-Id: Icd801d62ceeead066484256d60f9585f2e7ebaec
Reviewed-on: https://gerrit.libreoffice.org/53516
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
-rw-r--r-- | sc/source/ui/app/inputhdl.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/view/editsh.cxx | 12 |
2 files changed, 16 insertions, 2 deletions
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index b609e6e22e8e..b734ff670033 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -3400,9 +3400,15 @@ bool ScInputHandler::KeyInput( const KeyEvent& rKEvt, bool bStartEdit /* = false { if (pTableView) { + EVControlBits nControl = pTableView->GetControlWord(); + if (pTopView) + pTableView->SetControlWord(nControl | EVControlBits::SINGLELINEPASTE); + vcl::Window* pFrameWin = pActiveViewSh ? pActiveViewSh->GetFrameWin() : nullptr; if ( pTableView->PostKeyEvent( rKEvt, pFrameWin ) ) bUsed = true; + + pTableView->SetControlWord(nControl); } if (pTopView) if ( pTopView->PostKeyEvent( rKEvt ) ) diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx index 804401b303f4..9302b9cd506f 100644 --- a/sc/source/ui/view/editsh.cxx +++ b/sc/source/ui/view/editsh.cxx @@ -217,10 +217,18 @@ void ScEditShell::Execute( SfxRequest& rReq ) break; case SID_PASTE: - pTableView->PasteSpecial(); + { + EVControlBits nControl = pTableView->GetControlWord(); if (pTopView) + { pTopView->Paste(); - break; + pTableView->SetControlWord(nControl | EVControlBits::SINGLELINEPASTE); + } + + pTableView->PasteSpecial(); + pTableView->SetControlWord(nControl); + } + break; case SID_DELETE: pTableView->DeleteSelected(); |