]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathGrid.cpp
Preserve \inputencoding value when switching to non-TeX fonts.
[lyx.git] / src / mathed / InsetMathGrid.cpp
index 58784ad79b5672d641b11cf662a537da1e0627de..4ce79bd6196d6c0ed7c7779f53c5a630cb69c743 100644 (file)
@@ -809,7 +809,7 @@ void InsetMathGrid::addRow(row_type row)
 {
        rowinfo_.insert(rowinfo_.begin() + row + 1, RowInfo());
        cells_.insert
-               (cells_.begin() + (row + 1) * ncols(), ncols(), MathData());
+               (cells_.begin() + (row + 1) * ncols(), ncols(), MathData(buffer_));
        cellinfo_.insert
                (cellinfo_.begin() + (row + 1) * ncols(), ncols(), CellInfo());
 }
@@ -833,8 +833,11 @@ void InsetMathGrid::delRow(row_type row)
 void InsetMathGrid::copyRow(row_type row)
 {
        addRow(row);
-       for (col_type col = 0; col < ncols(); ++col)
+       for (col_type col = 0; col < ncols(); ++col) {
                cells_[(row + 1) * ncols() + col] = cells_[row * ncols() + col];
+               // copying the cell does not set the buffer
+               cells_[(row + 1) * ncols() + col].setBuffer(*buffer_);
+       }
 }
 
 
@@ -864,6 +867,8 @@ void InsetMathGrid::addCol(col_type newcol)
                                = cellinfo_[row * nc + col];
                }
        swap(cells_, new_cells);
+       // copying cells loses the buffer reference
+       setBuffer(*buffer_);
        swap(cellinfo_, new_cellinfo);
 
        ColInfo inf;
@@ -895,8 +900,11 @@ void InsetMathGrid::delCol(col_type col)
 void InsetMathGrid::copyCol(col_type col)
 {
        addCol(col+1);
-       for (row_type row = 0; row < nrows(); ++row)
+       for (row_type row = 0; row < nrows(); ++row) {
                cells_[row * ncols() + col + 1] = cells_[row * ncols() + col];
+               // copying the cell does not set the buffer
+               cells_[row * ncols() + col + 1].setBuffer(*buffer_);
+       }
 }
 
 
@@ -1424,25 +1432,6 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd)
                splitCell(cur);
                break;
 
-       case LFUN_CELL_BACKWARD:
-               // See below.
-               cur.selection(false);
-               if (!idxPrev(cur)) {
-                       cmd = FuncRequest(LFUN_FINISHED_BACKWARD);
-                       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_FORWARD);
-                       cur.undispatched();
-               }
-               break;
-
        case LFUN_NEWLINE_INSERT: {
                cur.recordUndoInset();
                row_type const r = cur.row();
@@ -1835,15 +1824,19 @@ bool InsetMathGrid::getStatus(Cursor & cur, FuncRequest const & cmd,
 
 
 // static
-char InsetMathGrid::colAlign(HullType type, col_type col)
+char InsetMathGrid::colAlign(HullType type, col_type col, BufferParams const & bp)
 {
        switch (type) {
        case hullEqnArray:
                return "rcl"[col % 3];
 
        case hullMultline:
-       case hullGather:
                return 'c';
+       case hullGather:
+               if (!bp.is_math_indent)
+                       return 'c';
+               else
+                       return 'l';
 
        case hullAlign:
        case hullAlignAt: