diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 1631ffa..2fe4d93 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -1466,6 +1466,7 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) const bool bVertText = rSh.IsInVerticalText(); const bool bTableCursor = rSh.GetTableCursor(); const bool bVertTable = rSh.IsTableVertical(); + if( ( bVertText && ( !bTableCursor || bVertTable ) ) || ( bTableCursor && bVertTable ) ) { @@ -1473,8 +1474,39 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) // Thus, back to previous mapping of cursor keys to direction keys. if( KEY_UP == nKey ) nKey = KEY_LEFT; else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; - else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; - else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + //else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + //else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + + //intergrate direction key suppor for mongolian layout , + //but still don't support direction key traveling inside texttable + //menksoft Inc. baigali 2016.07.08 + const Point aDocPos(rSh.GetCursorDocPos()); + const SwPageFrame* pPageFrame = rSh.GetLayout()->GetPageAtPos( aDocPos ); + if(pPageFrame->IsVertLR()){ + if( KEY_UP == nKey ) nKey = KEY_LEFT; + else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; + else if( KEY_LEFT == nKey ) nKey = KEY_UP; + else if( KEY_RIGHT == nKey ) nKey = KEY_DOWN; + }else{ + if( KEY_UP == nKey ) nKey = KEY_LEFT; + else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; + else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + } + /* + bool bRightToLeft=false; + bool bVertL2R=false; + bool bVertical=rSh.IsFrameVertical(false,bRightToLeft,bVertL2R); + if(true){ + if(bVertL2R){ + //if( KEY_LEFT == nKey ) nKey = KEY_UP; + //else if( KEY_RIGHT == nKey ) nKey = KEY_DOWN; + }else{ + if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + } + } + */ } aKeyEvent = KeyEvent( rKEvt.GetCharCode(), vcl::KeyCode( nKey, rKEvt.GetKeyCode().GetModifier() ), diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 1631ffa..88032a8 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -1466,6 +1466,7 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) const bool bVertText = rSh.IsInVerticalText(); const bool bTableCursor = rSh.GetTableCursor(); const bool bVertTable = rSh.IsTableVertical(); + if( ( bVertText && ( !bTableCursor || bVertTable ) ) || ( bTableCursor && bVertTable ) ) { @@ -1473,8 +1474,40 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) // Thus, back to previous mapping of cursor keys to direction keys. if( KEY_UP == nKey ) nKey = KEY_LEFT; else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; - else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; - else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + //else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + //else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + + //intergrate direction key suppor for mongolian layout , + //but still don't support direction key traveling inside texttable + //menksoft Inc. baigali 2016.07.08 + + const Point aDocPos(rSh.GetCursorDocPos()); + const SwPageFrame* pPageFrame = rSh.GetLayout()->GetPageAtPos( aDocPos ); + if(pPageFrame->IsVertLR()){ + if( KEY_UP == nKey ) nKey = KEY_LEFT; + else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; + else if( KEY_LEFT == nKey ) nKey = KEY_UP; + else if( KEY_RIGHT == nKey ) nKey = KEY_DOWN; + }else{ + if( KEY_UP == nKey ) nKey = KEY_LEFT; + else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; + else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + } + /* + bool bRightToLeft=false; + bool bVertL2R=false; + bool bVertical=rSh.IsFrameVertical(false,bRightToLeft,bVertL2R); + if(true){ + if(bVertL2R){ + //if( KEY_LEFT == nKey ) nKey = KEY_UP; + //else if( KEY_RIGHT == nKey ) nKey = KEY_DOWN; + }else{ + if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + } + } + */ } aKeyEvent = KeyEvent( rKEvt.GetCharCode(), vcl::KeyCode( nKey, rKEvt.GetKeyCode().GetModifier() ), diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 1631ffa..88032a8 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -1466,6 +1466,7 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) const bool bVertText = rSh.IsInVerticalText(); const bool bTableCursor = rSh.GetTableCursor(); const bool bVertTable = rSh.IsTableVertical(); + if( ( bVertText && ( !bTableCursor || bVertTable ) ) || ( bTableCursor && bVertTable ) ) { @@ -1473,8 +1474,40 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) // Thus, back to previous mapping of cursor keys to direction keys. if( KEY_UP == nKey ) nKey = KEY_LEFT; else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; - else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; - else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + //else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + //else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + + //intergrate direction key suppor for mongolian layout , + //but still don't support direction key traveling inside texttable + //menksoft Inc. baigali 2016.07.08 + + const Point aDocPos(rSh.GetCursorDocPos()); + const SwPageFrame* pPageFrame = rSh.GetLayout()->GetPageAtPos( aDocPos ); + if(pPageFrame->IsVertLR()){ + if( KEY_UP == nKey ) nKey = KEY_LEFT; + else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; + else if( KEY_LEFT == nKey ) nKey = KEY_UP; + else if( KEY_RIGHT == nKey ) nKey = KEY_DOWN; + }else{ + if( KEY_UP == nKey ) nKey = KEY_LEFT; + else if( KEY_DOWN == nKey ) nKey = KEY_RIGHT; + else if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + } + /* + bool bRightToLeft=false; + bool bVertL2R=false; + bool bVertical=rSh.IsFrameVertical(false,bRightToLeft,bVertL2R); + if(true){ + if(bVertL2R){ + //if( KEY_LEFT == nKey ) nKey = KEY_UP; + //else if( KEY_RIGHT == nKey ) nKey = KEY_DOWN; + }else{ + if( KEY_LEFT == nKey ) nKey = KEY_DOWN; + else if( KEY_RIGHT == nKey ) nKey = KEY_UP; + } + } + */ } aKeyEvent = KeyEvent( rKEvt.GetCharCode(), vcl::KeyCode( nKey, rKEvt.GetKeyCode().GetModifier() ),