}
-pos_type Row::Element::x2pos(int &x, bool const select) const
+pos_type Row::Element::x2pos(int &x) const
{
//lyxerr << "x2pos: x=" << x << " w=" << width() << " " << *this;
size_t i = 0;
x = isRTL() ? int(full_width()) : 0;
break;
case INSET:
- case SPACE: {
- double const boundary = select ? (full_width() + 1) / 2 : full_width();
+ case SPACE:
// those elements contain only one position. Round to
// the closest side.
- if (x > boundary) {
+ if (x > full_width()) {
x = int(full_width());
i = !isRTL();
} else {
x = 0;
i = isRTL();
}
- }
+
}
//lyxerr << "=> p=" << pos + i << " x=" << x << endl;
return pos + i;
/** Return position in pixels (from the left) of position
* \param i in the row element.
*/
- double pos2x(pos_type i) const;
+ double pos2x(pos_type const i) const;
/** Return character position that is the closest to
* pixel position \param x. The value \param x is
* adjusted to the actual pixel position.
- * \param select if true, return the right edge when closer.
- */
- pos_type x2pos(int & x, bool select = false) const;
+ */
+ pos_type x2pos(int &x) const;
/** Break the element if possible, so that its width is less
* than \param w. Returns true on success. When \param force
* is true, the string is cut at any place, other wise it
int const wh = bv->workHeight();
int const y = max(0, min(wh - 1, cmd.y()));
- tm->setCursorFromCoordinates(cur, cmd.x(), y, true);
+ tm->setCursorFromCoordinates(cur, cmd.x(), y);
cur.setTargetX(cmd.x());
// Don't allow selecting a separator inset
if (cur.pos() && cur.paragraph().isEnvSeparator(cur.pos() - 1))
// returns the column near the specified x-coordinate of the row
// x is set to the real beginning of this column
pos_type TextMetrics::getPosNearX(Row const & row, int & x,
- bool & boundary, bool const select) const
+ bool & boundary) const
{
//LYXERR0("getPosNearX(" << x << ") row=" << row);
/// For the main Text, it is possible that this pit is not
for ( ; cit != cend; ++cit) {
if (w <= x && w + cit->full_width() > x) {
int x_offset = int(x - w);
- pos = cit->x2pos(x_offset, select);
+ pos = cit->x2pos(x_offset);
x = int(x_offset + w);
break;
}
}
-void TextMetrics::setCursorFromCoordinates(Cursor & cur, int const x,
- int const y, bool const select)
+void TextMetrics::setCursorFromCoordinates(Cursor & cur, int const x, int const y)
{
LASSERT(text_ == cur.text(), return);
pit_type const pit = getPitNearY(y);
bool bound = false;
int xx = x;
- pos_type const pos = getPosNearX(row, xx, bound, select);
+ pos_type const pos = getPosNearX(row, xx, bound);
LYXERR(Debug::DEBUG, "setting cursor pit: " << pit << " pos: " << pos);
/// returns the position near the specified x-coordinate of the row.
/// x is an absolute screen coord, it is set to the real beginning
/// of this column. This takes in account horizontal cursor row scrolling.
- pos_type getPosNearX(Row const & row, int & x, bool & boundary,
- bool select = false) const;
+ pos_type getPosNearX(Row const & row, int & x, bool & boundary) const;
/// returns pos in given par at given x coord.
pos_type x2pos(pit_type pit, int row, int x) const;
/// sets cursor only within this Text.
/// x,y are screen coordinates
- /// If select is true, move to the next position if closer to the right
- /// edge.
- void setCursorFromCoordinates(Cursor & cur, int x, int y,
- bool select = false);
+ void setCursorFromCoordinates(Cursor & cur, int x, int y);
///
int cursorX(CursorSlice const & cursor, bool boundary) const;