]> git.lyx.org Git - lyx.git/blobdiff - src/Cursor.cpp
fix "make check" with gcc 4.3
[lyx.git] / src / Cursor.cpp
index 7939116c1a29075bb9ec6246df05cf8157d4ee0e..4f915d653d76f0a177415de36e181f20a66fdce2 100644 (file)
@@ -644,7 +644,7 @@ void Cursor::getSurroundingPos(pos_type & left_pos, pos_type & right_pos)
        // The cursor is painted *before* the character at pos(), or, if 'boundary'
        // is true, *after* the character at (pos() - 1). So we already have one
        // known position around the cursor:
-       pos_type known_pos = boundary() ? pos() - 1 : pos();
+       pos_type const known_pos = boundary() && pos() > 0 ? pos() - 1 : pos();
        
        // edge case: if we're at the end of the paragraph, things are a little 
        // different (because lastpos is a position which does not really "exist" 
@@ -653,8 +653,8 @@ void Cursor::getSurroundingPos(pos_type & left_pos, pos_type & right_pos)
                if (par.isRTL(buf.params())) {
                        left_pos = -1;
                        right_pos = bidi.vis2log(row.pos());
-               }
-               else { // LTR paragraph
+               } else { 
+                       // LTR paragraph
                        right_pos = -1;
                        left_pos = bidi.vis2log(row.endpos() - 1);
                }
@@ -669,11 +669,10 @@ void Cursor::getSurroundingPos(pos_type & left_pos, pos_type & right_pos)
        // For an RTL character, "before" means "to the right" and "after" means
        // "to the left"; and for LTR, it's the reverse. So, 'known_pos' is to the
        // right of the cursor if (RTL && boundary) or (!RTL && !boundary):
-       bool known_pos_on_right = (cur_is_RTL == boundary());
+       bool const known_pos_on_right = cur_is_RTL == boundary();
 
        // So we now know one of the positions surrounding the cursor. Let's 
-       // determine the other one:
-       
+       // determine the other one:     
        if (known_pos_on_right) {
                right_pos = known_pos;
                // *visual* position of 'left_pos':
@@ -687,9 +686,9 @@ void Cursor::getSurroundingPos(pos_type & left_pos, pos_type & right_pos)
                if (bidi.inRange(v_left_pos) 
                                && bidi.vis2log(v_left_pos) + 1 == row.endpos() 
                                && row.endpos() < lastpos()
-                               && par.isSeparator(bidi.vis2log(v_left_pos))) {
+                               && par.isSeparator(bidi.vis2log(v_left_pos)))
                        --v_left_pos;
-               }
+
                // calculate the logical position of 'left_pos', if in row
                if (!bidi.inRange(v_left_pos))
                        left_pos = -1;
@@ -699,14 +698,14 @@ void Cursor::getSurroundingPos(pos_type & left_pos, pos_type & right_pos)
                // separator", set 'right_pos' to the *next* position to the right.
                if (right_pos + 1 == row.endpos() && row.endpos() < lastpos() 
                                && par.isSeparator(right_pos)) {
-                       pos_type v_right_pos = bidi.log2vis(right_pos) + 1;
+                       pos_type const v_right_pos = bidi.log2vis(right_pos) + 1;
                        if (!bidi.inRange(v_right_pos))
                                right_pos = -1;
                        else
                                right_pos = bidi.vis2log(v_right_pos);
                }
-       } 
-       else { // known_pos is on the left
+       } else { 
+               // known_pos is on the left
                left_pos = known_pos;
                // *visual* position of 'right_pos'
                pos_type v_right_pos = bidi.log2vis(left_pos) + 1;
@@ -715,9 +714,9 @@ void Cursor::getSurroundingPos(pos_type & left_pos, pos_type & right_pos)
                if (bidi.inRange(v_right_pos) 
                                && bidi.vis2log(v_right_pos) + 1 == row.endpos() 
                                && row.endpos() < lastpos()
-                               && par.isSeparator(bidi.vis2log(v_right_pos))) {
+                               && par.isSeparator(bidi.vis2log(v_right_pos)))
                        ++v_right_pos;
-               }
+
                // calculate the logical position of 'right_pos', if in row
                if (!bidi.inRange(v_right_pos)) 
                        right_pos = -1;
@@ -727,7 +726,7 @@ void Cursor::getSurroundingPos(pos_type & left_pos, pos_type & right_pos)
                // separator", set 'left_pos' to the *next* position to the left.
                if (left_pos + 1 == row.endpos() && row.endpos() < lastpos() 
                                && par.isSeparator(left_pos)) {
-                       pos_type v_left_pos = bidi.log2vis(left_pos) - 1;
+                       pos_type const v_left_pos = bidi.log2vis(left_pos) - 1;
                        if (!bidi.inRange(v_left_pos))
                                left_pos = -1;
                        else
@@ -836,35 +835,29 @@ void Cursor::posVisToRowExtremity(bool left)
                        // "boundary" which we simulate at insets.
                        // Another exception is when row.endpos() is 0.
                        
-                       bool right_of_pos = false; // do we want to be to the right of pos?
-
+                       // do we want to be to the right of pos?
                        // as explained above, if at last pos in row, stay to the right
-                       if (row.endpos() > 0 && pos() == row.endpos() - 1
-                                 && !par.isInset(pos()))
-                               right_of_pos = true;
+                       bool const right_of_pos = row.endpos() > 0
+                               && pos() == row.endpos() - 1 && !par.isInset(pos());
 
                        // Now we know if we want to be to the left or to the right of pos,
                        // let's make sure we are where we want to be.
-                       bool new_pos_is_RTL = 
+                       bool const new_pos_is_RTL = 
                                par.getFontSettings(buf.params(), pos()).isVisibleRightToLeft();
 
-                       if (new_pos_is_RTL == !right_of_pos) {
+                       if (new_pos_is_RTL != right_of_pos) {
                                ++pos();
                                boundary(true);
                        }
-                       
                }
-       }
-       else { // move to rightmost position
+       } else { 
+               // move to rightmost position
                // if this is an LTR paragraph, and we're at the last row in the
                // paragraph, move to lastpos
                if (!par.isRTL(buf.params()) && row.endpos() == lastpos())
                        pos() = lastpos();
                else {
-                       if (row.endpos() > 0)
-                               pos() = bidi.vis2log(row.endpos() - 1);
-                       else
-                               pos() = 0;
+                       pos() = row.endpos() > 0 ? bidi.vis2log(row.endpos() - 1) : 0;
 
                        // Moving to the rightmost position in the row, the cursor should
                        // normally be placed to the *right* of the rightmost position.
@@ -891,17 +884,15 @@ void Cursor::posVisToRowExtremity(bool left)
                        // "boundary" which we simulate at insets.
                        // Another exception is when row.endpos() is 0.
                        
-                       bool left_of_pos = false; // do we want to be to the left of pos?
-
+                       // do we want to be to the left of pos?
                        // as explained above, if at last pos in row, stay to the left,
                        // unless the last position is the same as the first.
-                       if (row.endpos() > 0 && pos() == row.endpos() - 1 
-                                 && !par.isInset(pos()))
-                               left_of_pos = true;
+                       bool const left_of_pos = row.endpos() > 0
+                               && pos() == row.endpos() - 1 && !par.isInset(pos());
 
                        // Now we know if we want to be to the left or to the right of pos,
                        // let's make sure we are where we want to be.
-                       bool new_pos_is_RTL = 
+                       bool const new_pos_is_RTL = 
                                par.getFontSettings(buf.params(), pos()).isVisibleRightToLeft();
 
                        if (new_pos_is_RTL == left_of_pos) {