diff options
author | Tamás Zolnai <tamas.zolnai@collabora.com> | 2017-04-23 14:55:52 +0200 |
---|---|---|
committer | Tamás Zolnai <tamas.zolnai@collabora.com> | 2017-04-23 16:13:18 +0200 |
commit | 8c46185bf28f61e674186694e4944c1f8b3a9c00 (patch) | |
tree | 13351404c7417f318a5e780d37c980429a6a8715 | |
parent | 91081c56b0732a3b378d331ac3bd299a369788f7 (diff) |
Handle keyinput properly in case of BottomToTop vertical text
Change-Id: I2b0f7cee9a4a7d7ad154c705f84a8b995b4f23a1
Reviewed-on: https://gerrit.libreoffice.org/36830
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
-rw-r--r-- | editeng/source/editeng/impedit2.cxx | 4 | ||||
-rw-r--r-- | include/vcl/event.hxx | 3 | ||||
-rw-r--r-- | vcl/source/window/keyevent.cxx | 10 |
3 files changed, 15 insertions, 2 deletions
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index 5103333281f8..9e4072636e9a 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -756,8 +756,10 @@ EditSelection ImpEditEngine::MoveCursor( const KeyEvent& rKeyEvent, EditView* pE EditPaM aOldPaM( aPaM ); TextDirectionality eTextDirection = TextDirectionality::LeftToRight_TopToBottom; - if ( IsVertical() ) + if (IsVertical() && IsTopToBottom()) eTextDirection = TextDirectionality::TopToBottom_RightToLeft; + else if (IsVertical() && !IsTopToBottom()) + eTextDirection = TextDirectionality::BottomToTop_LeftToRight; else if ( IsRightToLeft( GetEditDoc().GetPos( aPaM.GetNode() ) ) ) eTextDirection = TextDirectionality::RightToLeft_TopToBottom; diff --git a/include/vcl/event.hxx b/include/vcl/event.hxx index 7c58ac620c01..26ce846ed9f4 100644 --- a/include/vcl/event.hxx +++ b/include/vcl/event.hxx @@ -41,7 +41,8 @@ namespace com { namespace sun { namespace star { namespace awt { enum class TextDirectionality { LeftToRight_TopToBottom, RightToLeft_TopToBottom, - TopToBottom_RightToLeft + TopToBottom_RightToLeft, + BottomToTop_LeftToRight }; class VCL_DLLPUBLIC KeyEvent diff --git a/vcl/source/window/keyevent.cxx b/vcl/source/window/keyevent.cxx index d644bc3d19c9..f5a7c5b1abe8 100644 --- a/vcl/source/window/keyevent.cxx +++ b/vcl/source/window/keyevent.cxx @@ -55,6 +55,16 @@ KeyEvent KeyEvent::LogicalTextDirectionality (TextDirectionality eMode) const } break; + case TextDirectionality::BottomToTop_LeftToRight: + switch (nCode) + { + case KEY_DOWN: aClone.maKeyCode = vcl::KeyCode(KEY_LEFT, nMod); break; + case KEY_UP: aClone.maKeyCode = vcl::KeyCode(KEY_RIGHT, nMod); break; + case KEY_LEFT: aClone.maKeyCode = vcl::KeyCode(KEY_UP, nMod); break; + case KEY_RIGHT: aClone.maKeyCode = vcl::KeyCode(KEY_DOWN, nMod); break; + } + break; + case TextDirectionality::LeftToRight_TopToBottom: /* do nothing */ break; |