diff options
Diffstat (limited to 'sw/source/uibase/docvw/edtwin.cxx')
-rw-r--r-- | sw/source/uibase/docvw/edtwin.cxx | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 14011cbb7b38..4edc16a3f1e5 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -1768,7 +1768,11 @@ KEYINPUT_CHECKTABLE: eFlyState = SwKeyState::Fly_Change; nDir = MOVE_LEFT_BIG; } - break; + goto KEYINPUT_CHECKTABLE_INSDEL; + } + case KEY_RIGHT | KEY_MOD1: + { + goto KEYINPUT_CHECKTABLE_INSDEL; } case KEY_UP: case KEY_UP | KEY_MOD1: @@ -1779,7 +1783,7 @@ KEYINPUT_CHECKTABLE: eFlyState = SwKeyState::Fly_Change; nDir = MOVE_UP_BIG; } - break; + goto KEYINPUT_CHECKTABLE_INSDEL; } case KEY_DOWN: case KEY_DOWN | KEY_MOD1: @@ -1790,8 +1794,26 @@ KEYINPUT_CHECKTABLE: eFlyState = SwKeyState::Fly_Change; nDir = MOVE_DOWN_BIG; } - break; + goto KEYINPUT_CHECKTABLE_INSDEL; + } + +KEYINPUT_CHECKTABLE_INSDEL: + if( rSh.IsTableMode() || !rSh.GetTableFormat() ) + { + const SelectionType nSelectionType = rSh.GetSelectionType(); + + eKeyState = SwKeyState::KeyToView; + if(SwKeyState::KeyToView != eFlyState) + { + if((nSelectionType & (SelectionType::DrawObject|SelectionType::DbForm)) && + rSh.GetDrawView()->AreObjectsMarked()) + eKeyState = SwKeyState::Draw_Change; + else if(nSelectionType & (SelectionType::Frame|SelectionType::Ole|SelectionType::Graphic)) + eKeyState = SwKeyState::Fly_Change; + } } + break; + case KEY_DELETE: if ( !rSh.HasReadonlySel() || rSh.CursorInsideInputField()) @@ -1967,7 +1989,7 @@ KEYINPUT_CHECKTABLE: { eFlyState = SwKeyState::Fly_Change; nDir = MOVE_RIGHT_BIG; - break; + goto KEYINPUT_CHECKTABLE_INSDEL; } case KEY_TAB: { |