// ok we have a selection. This is always between sstart_cur
// and sel_end cursor
cur = sstart_cur;
+ Paragraph * par = sstart_cur.par();
+ Paragraph * epar = send_cur.par()->next();
LyXLayout const & lyxlayout =
textclasslist[bview->buffer()->params.textclass][layout];
do {
- cur.par()->applyLayout(layout);
- makeFontEntriesLayoutSpecific(bview->buffer(), cur.par());
- Paragraph * fppar = cur.par();
+ par->applyLayout(layout);
+ makeFontEntriesLayoutSpecific(bview->buffer(), par);
+ Paragraph * fppar = par;
fppar->params().spaceTop(lyxlayout.fill_top ?
VSpace(VSpace::VFILL)
: VSpace(VSpace::NONE));
VSpace(VSpace::VFILL)
: VSpace(VSpace::NONE));
if (lyxlayout.margintype == MARGIN_MANUAL)
- cur.par()->setLabelWidthString(lyxlayout.labelstring());
+ par->setLabelWidthString(lyxlayout.labelstring());
if (lyxlayout.labeltype != LABEL_BIBLIO
&& fppar->bibkey) {
delete fppar->bibkey;
fppar->bibkey = 0;
}
- if (cur.par() != send_cur.par())
- cur.par(cur.par()->next());
- } while (cur.par() != send_cur.par());
+ cur.par(par);
+ par = par->next();
+ } while (par != epar);
return endpar;
}
}
-void LyXText::cursorUp(BufferView * bview) const
+void LyXText::cursorUp(BufferView * bview, bool selecting) const
{
#if 1
int x = cursor.x_fix();
int y = cursor.y() - cursor.row()->baseline() - 1;
setCursorFromCoordinates(bview, x, y);
- int y1 = cursor.iy() - first_y;
- int y2 = y1;
- Inset * inset_hit = bview->checkInsetHit(const_cast<LyXText *>(this), x, y1);
- if (inset_hit && isHighlyEditableInset(inset_hit)) {
- inset_hit->edit(bview, x, y - (y2 - y1), 0);
+ if (!selecting) {
+ int y1 = cursor.iy() - first_y;
+ int y2 = y1;
+ y -= first_y;
+ Inset * inset_hit =
+ bview->checkInsetHit(const_cast<LyXText *>(this), x, y1);
+ if (inset_hit && isHighlyEditableInset(inset_hit)) {
+ inset_hit->edit(bview, x, y - (y2 - y1), 0);
+ }
}
#else
setCursorFromCoordinates(bview, cursor.x_fix(),
}
-void LyXText::cursorDown(BufferView * bview) const
+void LyXText::cursorDown(BufferView * bview, bool selecting) const
{
#if 1
int x = cursor.x_fix();
int y = cursor.y() - cursor.row()->baseline() +
cursor.row()->height() + 1;
setCursorFromCoordinates(bview, x, y);
- int y1 = cursor.iy() - first_y;
- int y2 = y1;
- Inset * inset_hit = bview->checkInsetHit(const_cast<LyXText *>(this), x, y1);
- if (inset_hit && isHighlyEditableInset(inset_hit)) {
- inset_hit->edit(bview, x, y - (y2 - y1), 0);
+ if (!selecting && cursor.row() == cursor.irow()) {
+ int y1 = cursor.iy() - first_y;
+ int y2 = y1;
+ y -= first_y;
+ Inset * inset_hit =
+ bview->checkInsetHit(const_cast<LyXText *>(this), x, y1);
+ if (inset_hit && isHighlyEditableInset(inset_hit)) {
+ inset_hit->edit(bview, x, y - (y2 - y1), 0);
+ }
}
#else
setCursorFromCoordinates(bview, cursor.x_fix(),