From b4372a37d9d47ffc2c6b8fa3f22c942df85e384a Mon Sep 17 00:00:00 2001 From: Dov Feldstern Date: Sun, 28 Oct 2007 20:35:57 +0000 Subject: [PATCH] Getting rid of LTR bias --- part 2/? This is a continuation of r21128. This round fixes the "Word" movement functions and LFUNS. Behavior should remain unchanged by this fix. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21244 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/bind/cua.bind | 12 +++++------ lib/bind/emacs.bind | 12 +++++------ lib/bind/mac.bind | 12 +++++------ lib/bind/sciword.bind | 4 ++-- lib/bind/xemacs.bind | 12 +++++------ src/LyXAction.cpp | 4 ++++ src/Text.cpp | 10 ++++----- src/Text.h | 4 ++-- src/Text3.cpp | 42 +++++++++++++++++++++++++++++------- src/lfuns.h | 5 +++++ src/mathed/InsetMathGrid.cpp | 6 ++++++ src/mathed/InsetMathNest.cpp | 6 ++++++ 12 files changed, 88 insertions(+), 41 deletions(-) diff --git a/lib/bind/cua.bind b/lib/bind/cua.bind index fb2dc4a87e..822a4ec880 100644 --- a/lib/bind/cua.bind +++ b/lib/bind/cua.bind @@ -111,8 +111,8 @@ \bind "M-Up" "paragraph-move-up" \bind "M-Down" "paragraph-move-down" -\bind "C-Right" "word-forward" -\bind "C-Left" "word-backward" +\bind "C-Right" "word-right" +\bind "C-Left" "word-left" \bind "C-Up" "paragraph-up" \bind "C-Down" "paragraph-down" \bind "C-Home" "buffer-begin" @@ -130,8 +130,8 @@ \bind "S-Left" "char-left-select" \bind "S-Up" "up-select" \bind "S-Down" "down-select" -\bind "S-C-Right" "word-forward-select" -\bind "S-C-Left" "word-backward-select" +\bind "S-C-Right" "word-right-select" +\bind "S-C-Left" "word-left-select" \bind "S-C-Up" "paragraph-up-select" \bind "S-C-Down" "paragraph-down-select" \bind "S-Home" "line-begin-select" @@ -149,8 +149,8 @@ \bind "S-KP_Left" "char-left-select" \bind "S-KP_Up" "up-select" \bind "S-KP_Down" "down-select" -\bind "S-C-KP_Right" "word-forward-select" -\bind "S-C-KP_Left" "word-backward-select" +\bind "S-C-KP_Right" "word-right-select" +\bind "S-C-KP_Left" "word-left-select" \bind "S-C-KP_Up" "paragraph-up-select" \bind "S-C-KP_Down" "paragraph-down-select" \bind "S-KP_Home" "line-begin-select" diff --git a/lib/bind/emacs.bind b/lib/bind/emacs.bind index 523f06dc91..2bc44b0495 100644 --- a/lib/bind/emacs.bind +++ b/lib/bind/emacs.bind @@ -141,8 +141,8 @@ \bind "M-Up" "paragraph-move-up" \bind "M-Down" "paragraph-move-down" -\bind "C-Right" "word-forward" -\bind "C-Left" "word-backward" +\bind "C-Right" "word-right" +\bind "C-Left" "word-left" \bind "C-Up" "paragraph-up" \bind "C-Down" "paragraph-down" \bind "Home" "buffer-begin" @@ -188,8 +188,8 @@ \bind "S-C-B" "char-backward-select" \bind "S-Up" "up-select" \bind "S-Down" "down-select" -\bind "S-C-Right" "word-forward-select" -\bind "S-C-Left" "word-backward-select" +\bind "S-C-Right" "word-right-select" +\bind "S-C-Left" "word-left-select" \bind "S-C-A" "line-begin-select" \bind "S-C-E" "line-end-select" \bind "S-C-Up" "paragraph-up-select" @@ -224,8 +224,8 @@ \bind "S-KP_Left" "char-left-select" \bind "S-KP_Up" "up-select" \bind "S-KP_Down" "down-select" -\bind "S-C-KP_Right" "word-forward-select" -\bind "S-C-KP_Left" "word-backward-select" +\bind "S-C-KP_Right" "word-right-select" +\bind "S-C-KP_Left" "word-left-select" \bind "S-C-KP_Up" "paragraph-up-select" \bind "S-C-KP_Down" "paragraph-down-select" \bind "S-KP_Home" "line-begin-select" diff --git a/lib/bind/mac.bind b/lib/bind/mac.bind index 32251f63fb..e38e34a821 100644 --- a/lib/bind/mac.bind +++ b/lib/bind/mac.bind @@ -91,8 +91,8 @@ # Motion group # -\bind "M-Right" "word-forward" -\bind "M-Left" "word-backward" +\bind "M-Right" "word-right" +\bind "M-Left" "word-left" \bind "M-Up" "paragraph-up" \bind "M-Down" "paragraph-down" \bind "C-Up" "buffer-begin" @@ -112,8 +112,8 @@ \bind "S-Left" "char-left-select" \bind "S-Up" "up-select" \bind "S-Down" "down-select" -\bind "S-M-Right" "word-forward-select" -\bind "S-M-Left" "word-backward-select" +\bind "S-M-Right" "word-right-select" +\bind "S-M-Left" "word-left-select" \bind "S-M-Up" "paragraph-up-select" \bind "S-M-Down" "paragraph-down-select" \bind "S-C-Left" "line-begin-select" @@ -131,8 +131,8 @@ \bind "S-KP_Left" "char-left-select" \bind "S-KP_Up" "up-select" \bind "S-KP_Down" "down-select" -\bind "S-M-KP_Right" "word-forward-select" -\bind "S-M-KP_Left" "word-backward-select" +\bind "S-M-KP_Right" "word-right-select" +\bind "S-M-KP_Left" "word-left-select" \bind "S-M-KP_Up" "paragraph-up-select" \bind "S-M-KP_Down" "paragraph-down-select" \bind "S-KP_Home" "line-begin-select" diff --git a/lib/bind/sciword.bind b/lib/bind/sciword.bind index c05af0229d..a26238d030 100644 --- a/lib/bind/sciword.bind +++ b/lib/bind/sciword.bind @@ -223,8 +223,8 @@ \bind "S-KP_Left" "char-left-select" \bind "S-KP_Up" "up-select" \bind "S-KP_Down" "down-select" -\bind "S-C-KP_Right" "word-forward-select" -\bind "S-C-KP_Left" "word-backward-select" +\bind "S-C-KP_Right" "word-right-select" +\bind "S-C-KP_Left" "word-left-select" \bind "S-C-KP_Up" "paragraph-up-select" \bind "S-C-KP_Down" "paragraph-down-select" \bind "S-KP_Home" "line-begin-select" diff --git a/lib/bind/xemacs.bind b/lib/bind/xemacs.bind index 2a33daa3c4..7498159049 100644 --- a/lib/bind/xemacs.bind +++ b/lib/bind/xemacs.bind @@ -146,8 +146,8 @@ \bind "M-Up" "paragraph-move-up" \bind "M-Down" "paragraph-move-down" -\bind "C-Right" "word-forward" -\bind "C-Left" "word-backward" +\bind "C-Right" "word-right" +\bind "C-Left" "word-left" \bind "C-Up" "paragraph-up" \bind "C-Down" "paragraph-down" \bind "M-bracketleft" "paragraph-up" @@ -198,8 +198,8 @@ \bind "S-C-B" "char-backward-select" \bind "S-Up" "up-select" \bind "S-Down" "down-select" -\bind "S-C-Right" "word-forward-select" -\bind "S-C-Left" "word-backward-select" +\bind "S-C-Right" "word-right-select" +\bind "S-C-Left" "word-left-select" \bind "S-C-Up" "paragraph-up-select" \bind "S-C-Down" "paragraph-down-select" \bind "S-Home" "line-begin-select" @@ -235,8 +235,8 @@ \bind "S-KP_Left" "char-left-select" \bind "S-KP_Up" "up-select" \bind "S-KP_Down" "down-select" -\bind "S-C-KP_Right" "word-forward-select" -\bind "S-C-KP_Left" "word-backward-select" +\bind "S-C-KP_Right" "word-right-select" +\bind "S-C-KP_Left" "word-left-select" \bind "S-C-KP_Up" "paragraph-up-select" \bind "S-C-KP_Down" "paragraph-down-select" \bind "S-KP_Home" "line-begin-select" diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp index a13a62b35e..f3b6f797a5 100644 --- a/src/LyXAction.cpp +++ b/src/LyXAction.cpp @@ -315,7 +315,11 @@ void LyXAction::init() { LFUN_WORD_FIND_FORWARD, "word-find-forward", ReadOnly, Edit }, { LFUN_WORD_FORWARD, "word-forward", ReadOnly | NoUpdate, Edit }, { LFUN_WORD_FORWARD_SELECT, "word-forward-select", ReadOnly | SingleParUpdate, Edit }, + { LFUN_WORD_LEFT, "word-left", ReadOnly | NoUpdate, Edit }, + { LFUN_WORD_LEFT_SELECT, "word-left-select", ReadOnly | SingleParUpdate, Edit }, { LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit }, + { LFUN_WORD_RIGHT, "word-right", ReadOnly | NoUpdate, Edit }, + { LFUN_WORD_RIGHT_SELECT, "word-right-select", ReadOnly | SingleParUpdate, Edit }, { LFUN_WORD_SELECT, "word-select", ReadOnly, Edit }, { LFUN_WORD_UPCASE, "word-upcase", Noop, Edit }, { LFUN_MESSAGE, "message", NoBuffer, System }, diff --git a/src/Text.cpp b/src/Text.cpp index 2339b2bef2..fe75838f49 100644 --- a/src/Text.cpp +++ b/src/Text.cpp @@ -575,7 +575,7 @@ void Text::charInserted(Cursor & cur) // the cursor set functions have a special mechanism. When they // realize, that you left an empty paragraph, they will delete it. -bool Text::cursorRightOneWord(Cursor & cur) +bool Text::cursorForwardOneWord(Cursor & cur) { BOOST_ASSERT(this == cur.text()); @@ -596,7 +596,7 @@ bool Text::cursorRightOneWord(Cursor & cur) } -bool Text::cursorLeftOneWord(Cursor & cur) +bool Text::cursorBackwardOneWord(Cursor & cur) { BOOST_ASSERT(this == cur.text()); @@ -799,7 +799,7 @@ void Text::deleteWordForward(Cursor & cur) else { cur.resetAnchor(); cur.selection() = true; - cursorRightOneWord(cur); + cursorForwardOneWord(cur); cur.setSelection(); cutSelection(cur, true, false); checkBufferStructure(cur.buffer(), cur); @@ -815,7 +815,7 @@ void Text::deleteWordBackward(Cursor & cur) else { cur.resetAnchor(); cur.selection() = true; - cursorLeftOneWord(cur); + cursorBackwardOneWord(cur); cur.setSelection(); cutSelection(cur, true, false); checkBufferStructure(cur.buffer(), cur); @@ -836,7 +836,7 @@ void Text::changeCase(Cursor & cur, TextCase action) } else { from = cur.top(); getWord(from, to, PARTIAL_WORD); - cursorRightOneWord(cur); + cursorForwardOneWord(cur); } cur.recordUndoSelection(); diff --git a/src/Text.h b/src/Text.h index 6f0af587b5..caf7b65d68 100644 --- a/src/Text.h +++ b/src/Text.h @@ -174,9 +174,9 @@ public: */ bool cursorForward(Cursor & cur); /// - bool cursorLeftOneWord(Cursor & cur); + bool cursorBackwardOneWord(Cursor & cur); /// - bool cursorRightOneWord(Cursor & cur); + bool cursorForwardOneWord(Cursor & cur); /// Delete from cursor up to the end of the current or next word. void deleteWordForward(Cursor & cur); /// Delete from cursor to start of current or prior word. diff --git a/src/Text3.cpp b/src/Text3.cpp index 1277221158..eda0b20485 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -500,22 +500,44 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) needsUpdate |= tm.cursorEnd(cur); break; + case LFUN_WORD_RIGHT: + case LFUN_WORD_RIGHT_SELECT: + //FIXME: for visual cursor mode, really move right + if (reverseDirectionNeeded(cur)) { + lyx::dispatch(FuncRequest( + cmd.action == LFUN_WORD_RIGHT_SELECT ? + LFUN_WORD_BACKWARD_SELECT : LFUN_WORD_BACKWARD)); + } else { + lyx::dispatch(FuncRequest( + cmd.action == LFUN_WORD_RIGHT_SELECT ? + LFUN_WORD_FORWARD_SELECT : LFUN_WORD_FORWARD)); + } + break; + case LFUN_WORD_FORWARD: case LFUN_WORD_FORWARD_SELECT: needsUpdate |= cur.selHandle(cmd.action == LFUN_WORD_FORWARD_SELECT); - if (reverseDirectionNeeded(cur)) - needsUpdate |= cursorLeftOneWord(cur); - else - needsUpdate |= cursorRightOneWord(cur); + needsUpdate |= cursorForwardOneWord(cur); + break; + + case LFUN_WORD_LEFT: + case LFUN_WORD_LEFT_SELECT: + //FIXME: for visual cursor mode, really move left + if (reverseDirectionNeeded(cur)) { + lyx::dispatch(FuncRequest( + cmd.action == LFUN_WORD_LEFT_SELECT ? + LFUN_WORD_FORWARD_SELECT : LFUN_WORD_FORWARD)); + } else { + lyx::dispatch(FuncRequest( + cmd.action == LFUN_WORD_LEFT_SELECT ? + LFUN_WORD_BACKWARD_SELECT : LFUN_WORD_BACKWARD)); + } break; case LFUN_WORD_BACKWARD: case LFUN_WORD_BACKWARD_SELECT: needsUpdate |= cur.selHandle(cmd.action == LFUN_WORD_BACKWARD_SELECT); - if (reverseDirectionNeeded(cur)) - needsUpdate |= cursorRightOneWord(cur); - else - needsUpdate |= cursorLeftOneWord(cur); + needsUpdate |= cursorBackwardOneWord(cur); break; case LFUN_WORD_SELECT: { @@ -1883,6 +1905,8 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd, case LFUN_LINE_DELETE: case LFUN_WORD_FORWARD: case LFUN_WORD_BACKWARD: + case LFUN_WORD_RIGHT: + case LFUN_WORD_LEFT: case LFUN_CHAR_FORWARD: case LFUN_CHAR_FORWARD_SELECT: case LFUN_CHAR_BACKWARD: @@ -1903,6 +1927,8 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd, case LFUN_LINE_END_SELECT: case LFUN_WORD_FORWARD_SELECT: case LFUN_WORD_BACKWARD_SELECT: + case LFUN_WORD_RIGHT_SELECT: + case LFUN_WORD_LEFT_SELECT: case LFUN_WORD_SELECT: case LFUN_PARAGRAPH_UP: case LFUN_PARAGRAPH_DOWN: diff --git a/src/lfuns.h b/src/lfuns.h index 63fb276163..56e9b94f21 100644 --- a/src/lfuns.h +++ b/src/lfuns.h @@ -414,6 +414,11 @@ enum kb_action { LFUN_CHAR_RIGHT_SELECT, // dov, 20071022 LFUN_FINISHED_BACKWARD, // dov, 20071022 LFUN_FINISHED_FORWARD, // dov, 20071022 + LFUN_WORD_LEFT, // dov, 20071028 + LFUN_WORD_LEFT_SELECT, // dov, 20071028 + // 305 + LFUN_WORD_RIGHT, // dov, 20071028 + LFUN_WORD_RIGHT_SELECT, // dov, 20071028 LFUN_LASTACTION // end of the table }; diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp index f95fdf40b6..0da03a9df0 100644 --- a/src/mathed/InsetMathGrid.cpp +++ b/src/mathed/InsetMathGrid.cpp @@ -1306,7 +1306,10 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) case LFUN_LINE_BEGIN: case LFUN_WORD_BACKWARD_SELECT: case LFUN_WORD_BACKWARD: + case LFUN_WORD_LEFT_SELECT: + case LFUN_WORD_LEFT: cur.selHandle(cmd.action == LFUN_WORD_BACKWARD_SELECT || + cmd.action == LFUN_WORD_LEFT_SELECT || cmd.action == LFUN_LINE_BEGIN_SELECT); cur.macroModeClose(); if (cur.pos() != 0) { @@ -1325,9 +1328,12 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) case LFUN_WORD_FORWARD_SELECT: case LFUN_WORD_FORWARD: + case LFUN_WORD_RIGHT_SELECT: + case LFUN_WORD_RIGHT: case LFUN_LINE_END_SELECT: case LFUN_LINE_END: cur.selHandle(cmd.action == LFUN_WORD_FORWARD_SELECT || + cmd.action == LFUN_WORD_RIGHT_SELECT || cmd.action == LFUN_LINE_END_SELECT); cur.macroModeClose(); cur.clearTargetX(); diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index 8d956096d9..a6f9e7165a 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -620,10 +620,13 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & cmd) case LFUN_LINE_BEGIN: case LFUN_WORD_BACKWARD: + case LFUN_WORD_LEFT: cur.updateFlags(Update::Decoration | Update::FitCursor); case LFUN_LINE_BEGIN_SELECT: case LFUN_WORD_BACKWARD_SELECT: + case LFUN_WORD_LEFT_SELECT: cur.selHandle(cmd.action == LFUN_WORD_BACKWARD_SELECT || + cmd.action == LFUN_WORD_LEFT_SELECT || cmd.action == LFUN_LINE_BEGIN_SELECT); cur.macroModeClose(); if (cur.pos() != 0) { @@ -641,11 +644,14 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & cmd) break; case LFUN_WORD_FORWARD: + case LFUN_WORD_RIGHT: case LFUN_LINE_END: cur.updateFlags(Update::Decoration | Update::FitCursor); case LFUN_WORD_FORWARD_SELECT: + case LFUN_WORD_RIGHT_SELECT: case LFUN_LINE_END_SELECT: cur.selHandle(cmd.action == LFUN_WORD_FORWARD_SELECT || + cmd.action == LFUN_WORD_RIGHT_SELECT || cmd.action == LFUN_LINE_END_SELECT); cur.macroModeClose(); cur.clearTargetX(); -- 2.39.2