]> git.lyx.org Git - lyx.git/blobdiff - src/text2.C
the spellcheck cleanup
[lyx.git] / src / text2.C
index 2daf79d25f4b9dd8a24aec155e4b6481750585c1..6b5d4328a010480700d85101f05b9548d01c617a 100644 (file)
@@ -29,6 +29,7 @@
 #include "counters.h"
 #include "CutAndPaste.h"
 #include "debug.h"
+#include "dispatchresult.h"
 #include "errorlist.h"
 #include "Floating.h"
 #include "FloatList.h"
@@ -70,7 +71,7 @@ using std::string;
 
 LyXText::LyXText(BufferView * bv, InsetText * inset, bool ininset,
          ParagraphList & paragraphs)
-       : height(0), width(0), anchor_y_(0),
+       : height(0), width(0),
          inset_owner(inset), the_locking_inset(0), bv_owner(bv),
          in_inset_(ininset), paragraphs_(&paragraphs),
                cache_pos_(-1)
@@ -89,8 +90,6 @@ void LyXText::init(BufferView * bview)
 
        width = 0;
        height = 0;
-
-       anchor_y_ = 0;
        cache_pos_ = -1;
 
        current_font = getFont(beg, 0);
@@ -570,7 +569,10 @@ void LyXText::cursorHome()
 void LyXText::cursorEnd()
 {
        ParagraphList::iterator cpit = cursorPar();
-       setCursor(cpit, cpit->getRow(cursor.pos())->endpos() - 1);
+       pos_type end = cpit->getRow(cursor.pos())->endpos();
+       /* if not on the last row of the par, put the cursor before
+         the final space */
+       setCursor(cpit, end == cpit->size() ? end : end - 1);
 }
 
 
@@ -601,9 +603,10 @@ void LyXText::toggleFree(LyXFont const & font, bool toggleall)
        // If there is a change in the language the implicit word selection
        // is disabled.
        LyXCursor resetCursor = cursor;
-       bool implicitSelection = (font.language() == ignore_language
-                                 && font.number() == LyXFont::IGNORE)
-               ? selectWordWhenUnderCursor(lyx::WHOLE_WORD_STRICT) : false;
+       bool implicitSelection =
+               font.language() == ignore_language
+               && font.number() == LyXFont::IGNORE
+               && selectWordWhenUnderCursor(lyx::WHOLE_WORD_STRICT);
 
        // Set font
        setFont(font, toggleall);
@@ -1336,9 +1339,8 @@ void LyXText::setCursor(LyXCursor & cur, paroffset_type par,
                BOOST_ASSERT(false);
        }
        // now get the cursors x position
-       float x = getCursorX(pit, row, pos, boundary);
-       cur.x(int(x));
-       cur.x_fix(cur.x());
+       cur.x(int(getCursorX(pit, row, pos, boundary)));
+       bv()->x_target(cur.x());
 }
 
 
@@ -1352,7 +1354,7 @@ float LyXText::getCursorX(ParagraphList::iterator pit, Row const & row,
        double fill_label_hfill = row.fill_label_hfill();
        pos_type const row_pos  = row.pos();
        pos_type const end = row.endpos();
-       
+
        if (end <= row_pos)
                cursor_vpos = row_pos;
        else if (pos >= end && !boundary)
@@ -1617,7 +1619,7 @@ void LyXText::cursorUp(bool selecting)
        ParagraphList::iterator cpit = cursorPar();
        Row const & crow = *cpit->getRow(cursor.pos());
 #if 1
-       int x = cursor.x_fix();
+       int x = bv()->x_target();
        int y = cursor.y() - crow.baseline() - 1;
        setCursorFromCoordinates(x, y);
        if (!selecting) {
@@ -1634,7 +1636,7 @@ void LyXText::cursorUp(bool selecting)
 #else
        lyxerr << "cursorUp: y " << cursor.y() << " bl: " <<
                crow.baseline() << endl;
-       setCursorFromCoordinates(cursor.x_fix(),
+       setCursorFromCoordinates(bv()->x_target(),
                cursor.y() - crow.baseline() - 1);
 #endif
 }
@@ -1645,7 +1647,7 @@ void LyXText::cursorDown(bool selecting)
        ParagraphList::iterator cpit = cursorPar();
        Row const & crow = *cpit->getRow(cursor.pos());
 #if 1
-       int x = cursor.x_fix();
+       int x = bv()->x_target();
        int y = cursor.y() - crow.baseline() + crow.height() + 1;
        setCursorFromCoordinates(x, y);
        if (!selecting) {
@@ -1660,7 +1662,7 @@ void LyXText::cursorDown(bool selecting)
                }
        }
 #else
-       setCursorFromCoordinates(cursor.x_fix(),
+       setCursorFromCoordinates(bv()->x_target(),
                 cursor.y() - crow.baseline() + crow.height() + 1);
 #endif
 }
@@ -1795,8 +1797,8 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
        // we can't possibly have deleted a paragraph before this point
        bool deleted = false;
 
-       if (old_pit->empty() ||
-           (old_pit->size() == 1 && old_pit->isLineSeparator(0))) {
+       if (old_pit->empty()
+           || (old_pit->size() == 1 && old_pit->isLineSeparator(0))) {
                // ok, we will delete something
                LyXCursor tmpcursor;
 
@@ -1828,15 +1830,17 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
                        selection.cursor = cursor;
                }
        }
-       if (!deleted) {
-               if (old_pit->stripLeadingSpaces()) {
-                       redoParagraph(old_pit);
-                       // correct cursor y
-                       setCursorIntern(cursor.par(), cursor.pos());
-                       selection.cursor = cursor;
-               }
+
+       if (deleted)
+               return true;
+
+       if (old_pit->stripLeadingSpaces()) {
+               redoParagraph(old_pit);
+               // correct cursor y
+               setCursorIntern(cursor.par(), cursor.pos());
+               selection.cursor = cursor;
        }
-       return deleted;
+       return false;
 }
 
 
@@ -1868,6 +1872,5 @@ bool LyXText::isInInset() const
 int defaultRowHeight()
 {
        LyXFont const font(LyXFont::ALL_SANE);
-       return int(font_metrics::maxAscent(font)
-                + font_metrics::maxDescent(font) * 1.5);
+       return int(font_metrics::maxHeight(font) *  1.2);
 }