]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
Support new languages in tex2lyx
[lyx.git] / src / BufferView.cpp
index ab5501cdb629a020918fb73b245f505e97d0c410..301fd2a002b770f2ccee7f80757b6e125cb93713 100644 (file)
@@ -686,6 +686,10 @@ Change const BufferView::getCurrentChange() const
                return Change(Change::UNCHANGED);
 
        DocIterator dit = d->cursor_.selectionBegin();
+       // The selected content might have been changed (see #7685)
+       while (dit.inMathed())
+               // Find enclosing text cursor
+               dit.pop_back();
        return dit.paragraph().lookupChange(dit.pos());
 }
 
@@ -1104,12 +1108,12 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 
        case LFUN_CHANGES_TRACK:
                flag.setEnabled(true);
-               flag.setOnOff(buffer_.params().trackChanges);
+               flag.setOnOff(buffer_.params().track_changes);
                break;
 
        case LFUN_CHANGES_OUTPUT:
                flag.setEnabled(true);
-               flag.setOnOff(buffer_.params().outputChanges);
+               flag.setOnOff(buffer_.params().output_changes);
                break;
 
        case LFUN_CHANGES_MERGE:
@@ -1426,12 +1430,12 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
        }
 
        case LFUN_CHANGES_TRACK:
-               buffer_.params().trackChanges = !buffer_.params().trackChanges;
+               buffer_.params().track_changes = !buffer_.params().track_changes;
                break;
 
        case LFUN_CHANGES_OUTPUT:
-               buffer_.params().outputChanges = !buffer_.params().outputChanges;
-               if (buffer_.params().outputChanges) {
+               buffer_.params().output_changes = !buffer_.params().output_changes;
+               if (buffer_.params().output_changes) {
                        bool dvipost    = LaTeXFeatures::isAvailable("dvipost");
                        bool xcolorulem = LaTeXFeatures::isAvailable("ulem") &&
                                          LaTeXFeatures::isAvailable("xcolor");
@@ -2288,10 +2292,17 @@ void BufferView::setCursorFromRow(int row)
                // we need to make sure that the row and position
                // we got back are valid, because the buffer may well
                // have changed since we last generated the LaTeX.
-               DocIterator const dit = buffer_.getParFromID(tmpid);
+               DocIterator dit = buffer_.getParFromID(tmpid);
                if (dit == doc_iterator_end(&buffer_))
                        posvalid = false;
-               else {
+               else if (dit.depth() > 1) {
+                       // We are in an inset.
+                       pos_type lastpos = dit.lastpos();
+                       dit.pos() = tmppos > lastpos ? lastpos : tmppos;
+                       setCursor(dit);
+                       recenter();
+                       return;
+               } else {
                        newpit = dit.pit();
                        // now have to check pos.
                        newpos = tmppos;
@@ -2499,7 +2510,7 @@ void BufferView::putSelectionAt(DocIterator const & cur,
 bool BufferView::selectIfEmpty(DocIterator & cur)
 {
        if ((cur.inTexted() && !cur.paragraph().empty())
-           || cur.inMathed() && !cur.cell().empty())
+           || (cur.inMathed() && !cur.cell().empty()))
                return false;
 
        pit_type const beg_pit = cur.pit();