Fix bug #5888. Yes, I do shame.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29665 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2009-05-14 12:35:04 +00:00
parent 188333b8cb
commit a7d545170b

View File

@ -462,10 +462,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
LYXERR(Debug::ACTION, "Text::dispatch: cmd: " << cmd); LYXERR(Debug::ACTION, "Text::dispatch: cmd: " << cmd);
BufferView * bv = &cur.bv(); BufferView * bv = &cur.bv();
TextMetrics & tm = bv->textMetrics(this); TextMetrics * tm = &bv->textMetrics(this);
if (!tm.contains(cur.pit())) { if (!tm->contains(cur.pit())) {
lyx::dispatch(FuncRequest(LFUN_SCREEN_SHOW_CURSOR)); lyx::dispatch(FuncRequest(LFUN_SCREEN_SHOW_CURSOR));
tm = bv->textMetrics(this); tm = &bv->textMetrics(this);
} }
// FIXME: We use the update flag to indicates wether a singlePar or a // FIXME: We use the update flag to indicates wether a singlePar or a
@ -553,7 +553,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
if (cur.selection()) if (cur.selection())
cutSelection(cur, true, false); cutSelection(cur, true, false);
else else
tm.deleteLineForward(cur); tm->deleteLineForward(cur);
finishChange(cur, false); finishChange(cur, false);
break; break;
@ -740,13 +740,13 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_LINE_BEGIN: case LFUN_LINE_BEGIN:
case LFUN_LINE_BEGIN_SELECT: case LFUN_LINE_BEGIN_SELECT:
needsUpdate |= cur.selHandle(cmd.action == LFUN_LINE_BEGIN_SELECT); needsUpdate |= cur.selHandle(cmd.action == LFUN_LINE_BEGIN_SELECT);
needsUpdate |= tm.cursorHome(cur); needsUpdate |= tm->cursorHome(cur);
break; break;
case LFUN_LINE_END: case LFUN_LINE_END:
case LFUN_LINE_END_SELECT: case LFUN_LINE_END_SELECT:
needsUpdate |= cur.selHandle(cmd.action == LFUN_LINE_END_SELECT); needsUpdate |= cur.selHandle(cmd.action == LFUN_LINE_END_SELECT);
needsUpdate |= tm.cursorEnd(cur); needsUpdate |= tm->cursorEnd(cur);
break; break;
case LFUN_SECTION_SELECT: { case LFUN_SECTION_SELECT: {
@ -1150,8 +1150,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_SERVER_GET_XY: case LFUN_SERVER_GET_XY:
cur.message(from_utf8( cur.message(from_utf8(
convert<string>(tm.cursorX(cur.top(), cur.boundary())) convert<string>(tm->cursorX(cur.top(), cur.boundary()))
+ ' ' + convert<string>(tm.cursorY(cur.top(), cur.boundary())))); + ' ' + convert<string>(tm->cursorY(cur.top(), cur.boundary()))));
break; break;
case LFUN_SERVER_SET_XY: { case LFUN_SERVER_SET_XY: {
@ -1163,7 +1163,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
lyxerr << "SETXY: Could not parse coordinates in '" lyxerr << "SETXY: Could not parse coordinates in '"
<< to_utf8(cmd.argument()) << endl; << to_utf8(cmd.argument()) << endl;
else else
tm.setCursorFromCoordinates(cur, x, y); tm->setCursorFromCoordinates(cur, x, y);
break; break;
} }
@ -1309,9 +1309,9 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_MOUSE_TRIPLE: case LFUN_MOUSE_TRIPLE:
if (cmd.button() == mouse_button::button1) { if (cmd.button() == mouse_button::button1) {
tm.cursorHome(cur); tm->cursorHome(cur);
cur.resetAnchor(); cur.resetAnchor();
tm.cursorEnd(cur); tm->cursorEnd(cur);
cur.setSelection(); cur.setSelection();
bv->cursor() = cur; bv->cursor() = cur;
} }
@ -1380,7 +1380,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
int const wh = bv->workHeight(); int const wh = bv->workHeight();
int const y = max(0, min(wh - 1, cmd.y)); int const y = max(0, min(wh - 1, cmd.y));
tm.setCursorFromCoordinates(cur, cmd.x, y); tm->setCursorFromCoordinates(cur, cmd.x, y);
cur.setTargetX(cmd.x); cur.setTargetX(cmd.x);
if (cmd.y >= wh) if (cmd.y >= wh)
lyx::dispatch(FuncRequest(LFUN_DOWN_SELECT)); lyx::dispatch(FuncRequest(LFUN_DOWN_SELECT));