]> git.lyx.org Git - lyx.git/blobdiff - src/Cursor.cpp
How about if we write a script to do some of this and stop doing it
[lyx.git] / src / Cursor.cpp
index c12d054ee79019c4bc73042cc20fc21d9cc40ee5..0017e1ae149576b29cdc42ccf9475156691dc127 100644 (file)
@@ -254,8 +254,8 @@ bool bruteFind3(Cursor & cur, int x, int y, bool up)
 Cursor::Cursor(BufferView & bv)
        : DocIterator(&bv.buffer()), bv_(&bv), anchor_(),
          x_target_(-1), textTargetOffset_(0),
-         selection_(false), mark_(false), logicalpos_(false),
-         current_font(inherit_font)
+         selection_(false), mark_(false), word_selection_(false),
+         logicalpos_(false), current_font(inherit_font)
 {}
 
 
@@ -483,8 +483,14 @@ void Cursor::resetAnchor()
 
 void Cursor::setCursorToAnchor()
 {
-       if (selection())
-               setCursor(anchor_);
+       if (selection()) {
+               DocIterator normal = anchor_;
+               while (depth() < normal.depth())
+                       normal.pop_back();
+               if (depth() < anchor_.depth() && top() <= anchor_[depth() - 1])
+                       ++normal.pos();
+               setCursor(normal);
+       }
 }
 
 
@@ -1059,6 +1065,7 @@ void Cursor::setSelection(DocIterator const & where, int n)
 void Cursor::clearSelection()
 {
        setSelection(false);
+       setWordSelection(false);
        setMark(false);
        resetAnchor();
 }