From 6d8d1f3d62788156694f23b9607bdc1778c4337d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Mon, 18 Jul 2005 00:09:20 +0000 Subject: [PATCH] reenable TAB and S-TAB in math, fixing a regression against 1.3 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@10307 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/mathed/math_gridinset.C | 66 ++++++++++++++++++++++++++----------- src/mathed/math_hullinset.C | 29 ++++++++-------- src/mathed/math_nestinset.C | 20 ++++++++--- 3 files changed, 76 insertions(+), 39 deletions(-) diff --git a/src/mathed/math_gridinset.C b/src/mathed/math_gridinset.C index ece8d90158..c9fcfcc514 100644 --- a/src/mathed/math_gridinset.C +++ b/src/mathed/math_gridinset.C @@ -1065,6 +1065,25 @@ void MathGridInset::doDispatch(LCursor & cur, FuncRequest & cmd) splitCell(cur); break; + case LFUN_CELL_BACKWARD: + // See below. + cur.selection() = false; + if (!idxPrev(cur)) { + cmd = FuncRequest(LFUN_FINISHED_LEFT); + cur.undispatched(); + } + break; + + case LFUN_CELL_FORWARD: + // Can't handle selection by additional 'shift' as this is + // hard bound to LFUN_CELL_BACKWARD + cur.selection() = false; + if (!idxNext(cur)) { + cmd = FuncRequest(LFUN_FINISHED_RIGHT); + cur.undispatched(); + } + break; + case LFUN_BREAKLINE: { recordUndoInset(cur); row_type const r = cur.row(); @@ -1262,28 +1281,28 @@ void MathGridInset::doDispatch(LCursor & cur, FuncRequest & cmd) bool MathGridInset::getStatus(LCursor & cur, FuncRequest const & cmd, - FuncStatus & flag) const + FuncStatus & status) const { switch (cmd.action) { case LFUN_TABULAR_FEATURE: { string const s = cmd.argument; if (nrows() <= 1 && (s == "delete-row" || s == "swap-row")) { - flag.enabled(false); - flag.message(N_("Only one row")); + status.enabled(false); + status.message(N_("Only one row")); return true; } if (ncols() <= 1 && (s == "delete-column" || s == "swap-column")) { - flag.enabled(false); - flag.message(N_("Only one column")); + status.enabled(false); + status.message(N_("Only one column")); return true; } if ((rowinfo_[cur.row()].lines_ == 0 && s == "delete-hline-above") || (rowinfo_[cur.row() + 1].lines_ == 0 && s == "delete-hline-below")) { - flag.enabled(false); - flag.message(N_("No hline to delete")); + status.enabled(false); + status.message(N_("No hline to delete")); return true; } @@ -1291,8 +1310,8 @@ bool MathGridInset::getStatus(LCursor & cur, FuncRequest const & cmd, s == "delete-vline-left") || (colinfo_[cur.col() + 1].lines_ == 0 && s == "delete-vline-right")) { - flag.enabled(false); - flag.message(N_("No vline to delete")); + status.enabled(false); + status.message(N_("No vline to delete")); return true; } if (s == "valign-top" || s == "valign-middle" || @@ -1306,14 +1325,14 @@ bool MathGridInset::getStatus(LCursor & cur, FuncRequest const & cmd, s == "copy-column" || s == "swap-column" || s == "add-vline-left" || s == "add-vline-right" || s == "delete-vline-left" || s == "delete-vline-right") - flag.enabled(true); + status.enabled(true); else { - flag.enabled(false); - flag.message(bformat( + status.enabled(false); + status.message(bformat( N_("Unknown tabular feature '%1$s'"), s)); } - flag.setOnOff(s == "align-left" && halign(cur.col()) == 'l' + status.setOnOff(s == "align-left" && halign(cur.col()) == 'l' || s == "align-right" && halign(cur.col()) == 'r' || s == "align-center" && halign(cur.col()) == 'c' || s == "valign-top" && valign() == 't' @@ -1325,26 +1344,33 @@ bool MathGridInset::getStatus(LCursor & cur, FuncRequest const & cmd, // Please check whether it is still needed! // should be more precise if (v_align_ == '\0') { - flag.enable(true); + status.enable(true); break; } if (cmd.argument.empty()) { - flag.enable(false); + status.enable(false); break; } if (!lyx::support::contains("tcb", cmd.argument[0])) { - flag.enable(false); + status.enable(false); break; } - flag.setOnOff(cmd.argument[0] == v_align_); - flag.enabled(true); + status.setOnOff(cmd.argument[0] == v_align_); + status.enabled(true); #endif return true; } + case LFUN_CELL_SPLIT: - flag.enabled(true); + status.enabled(true); return true; + + case LFUN_CELL_BACKWARD: + case LFUN_CELL_FORWARD: + status.enabled(true); + return true; + default: - return MathNestInset::getStatus(cur, cmd, flag); + return MathNestInset::getStatus(cur, cmd, status); } } diff --git a/src/mathed/math_hullinset.C b/src/mathed/math_hullinset.C index dcec2d249c..70d2f71ea1 100644 --- a/src/mathed/math_hullinset.C +++ b/src/mathed/math_hullinset.C @@ -1119,9 +1119,10 @@ void MathHullInset::doDispatch(LCursor & cur, FuncRequest & cmd) bool MathHullInset::getStatus(LCursor & cur, FuncRequest const & cmd, - FuncStatus & flag) const + FuncStatus & status) const { switch (cmd.action) { + // These are only enabled inside tabular case LFUN_BREAKLINE: case LFUN_MATH_NUMBER: case LFUN_MATH_NONUMBER: @@ -1129,10 +1130,10 @@ bool MathHullInset::getStatus(LCursor & cur, FuncRequest const & cmd, case LFUN_MATH_MUTATE: case LFUN_MATH_DISPLAY: // we handle these - flag.enabled(true); + status.enabled(true); return true; case LFUN_INSERT_LABEL: - flag.enabled(type_ != "simple"); + status.enabled(type_ != "simple"); return true; case LFUN_TABULAR_FEATURE: { istringstream is(cmd.argument); @@ -1142,49 +1143,49 @@ bool MathHullInset::getStatus(LCursor & cur, FuncRequest const & cmd, && (s == "append-row" || s == "delete-row" || s == "copy-row")) { - flag.message(bformat( + status.message(bformat( N_("Can't change number of rows in '%1$s'"), type_)); - flag.enabled(false); + status.enabled(false); return true; } if (!colChangeOK() && (s == "append-column" || s == "delete-column" || s == "copy-column")) { - flag.message(bformat( + status.message(bformat( N_("Can't change number of columns in '%1$s'"), type_)); - flag.enabled(false); + status.enabled(false); return true; } if ((type_ == "simple" || type_ == "equation" || type_ == "none") && (s == "add-hline-above" || s == "add-hline-below")) { - flag.message(bformat( + status.message(bformat( N_("Can't add horizontal grid lines in '%1$s'"), type_)); - flag.enabled(false); + status.enabled(false); return true; } if (s == "add-vline-left" || s == "add-vline-right") { - flag.message(bformat( + status.message(bformat( N_("Can't add vertical grid lines in '%1$s'"), type_)); - flag.enabled(false); + status.enabled(false); return true; } if (s == "valign-top" || s == "valign-middle" || s == "valign-bottom" || s == "align-left" || s == "align-center" || s == "align-right") { - flag.enabled(false); + status.enabled(false); return true; } - return MathGridInset::getStatus(cur, cmd, flag); + return MathGridInset::getStatus(cur, cmd, status); } default: - return MathGridInset::getStatus(cur, cmd, flag); + return MathGridInset::getStatus(cur, cmd, status); } } diff --git a/src/mathed/math_nestinset.C b/src/mathed/math_nestinset.C index a342701abb..db2e556b30 100644 --- a/src/mathed/math_nestinset.C +++ b/src/mathed/math_nestinset.C @@ -473,8 +473,10 @@ void MathNestInset::doDispatch(LCursor & cur, FuncRequest & cmd) } else if (cur.posRight() || idxRight(cur) || cur.popRight() || cur.selection()) ; - else + else { cmd = FuncRequest(LFUN_FINISHED_RIGHT); + cur.undispatched(); + } break; case LFUN_LEFTSEL: @@ -490,8 +492,10 @@ void MathNestInset::doDispatch(LCursor & cur, FuncRequest & cmd) } else if (cur.posLeft() || idxLeft(cur) || cur.popLeft() || cur.selection()) ; - else + else { cmd = FuncRequest(LFUN_FINISHED_LEFT); + cur.undispatched(); + } break; case LFUN_UPSEL: @@ -503,8 +507,10 @@ void MathNestInset::doDispatch(LCursor & cur, FuncRequest & cmd) break; } cur.selHandle(cmd.action == LFUN_UPSEL); - if (!cur.up()) + if (!cur.up()) { cmd = FuncRequest(LFUN_FINISHED_UP); + cur.undispatched(); + } // fixes bug 1598. Please check! cur.normalize(); break; @@ -516,8 +522,10 @@ void MathNestInset::doDispatch(LCursor & cur, FuncRequest & cmd) break; } cur.selHandle(cmd.action == LFUN_DOWNSEL); - if (!cur.down()) + if (!cur.down()) { cmd = FuncRequest(LFUN_FINISHED_DOWN); + cur.undispatched(); + } // fixes bug 1598. Please check! cur.normalize(); break; @@ -642,8 +650,10 @@ void MathNestInset::doDispatch(LCursor & cur, FuncRequest & cmd) cur.insert(cmd.argument); break; } - if (!interpret(cur, cmd.argument[0])) + if (!interpret(cur, cmd.argument[0])) { cmd = FuncRequest(LFUN_FINISHED_RIGHT); + cur.undispatched(); + } break; //case LFUN_GETXY: