#include "font.h"
#include "debug.h"
#include "lyxrc.h"
+#include "lyxrow.h"
#include "FloatList.h"
#include "language.h"
#include "ParagraphParameters.h"
using std::endl;
using std::find;
using std::pair;
+using lyx::pos_type;
LyXText::LyXText(BufferView * bv)
// If position is -1, we get the layout font of the paragraph.
// If position is -2, we get the font of the manual label of the paragraph.
LyXFont const LyXText::getFont(Buffer const * buf, Paragraph * par,
- Paragraph::size_type pos) const
+ pos_type pos) const
{
lyx::Assert(pos >= 0);
void LyXText::setCharFont(BufferView * bv, Paragraph * par,
- Paragraph::size_type pos, LyXFont const & fnt,
+ pos_type pos, LyXFont const & fnt,
bool toggleall)
{
Buffer const * buf = bv->buffer();
LyXFont font = getFont(buf, par, pos);
font.update(fnt, buf->params.language, toggleall);
// Let the insets convert their font
- if (par->getChar(pos) == Paragraph::META_INSET) {
+ if (par->isInset(pos)) {
Inset * inset = par->getInset(pos);
- if (inset) {
- if (inset->editable()==Inset::IS_EDITABLE) {
- UpdatableInset * uinset =
- static_cast<UpdatableInset *>(inset);
- uinset->setFont(bv, fnt, toggleall, true);
- }
+ if (isEditableInset(inset)) {
+ UpdatableInset * uinset =
+ static_cast<UpdatableInset *>(inset);
+ uinset->setFont(bv, fnt, toggleall, true);
}
}
void LyXText::setCharFont(Buffer const * buf, Paragraph * par,
- Paragraph::size_type pos, LyXFont const & fnt)
+ pos_type pos, LyXFont const & fnt)
{
LyXFont font(fnt);
// inserts a new row behind the specified row, increments
// the touched counters
void LyXText::insertRow(Row * row, Paragraph * par,
- Paragraph::size_type pos) const
+ pos_type pos) const
{
Row * tmprow = new Row;
if (!row) {
// removes the row and reset the touched counters
void LyXText::removeRow(Row * row) const
{
- /* this must not happen before the currentrow for clear reasons.
- so the trick is just to set the current row onto the previous
- row of this row */
- int unused_y;
- getRow(row->par(), row->pos(), unused_y);
-
if (row->next())
row->next()->previous(row->previous());
if (!row->previous()) {
if (cursor.pos() == 0 && cursor.par()->bibkey) {
inset = cursor.par()->bibkey;
} else if (cursor.pos() < cursor.par()->size()
- && cursor.par()->getChar(cursor.pos()) == Paragraph::META_INSET) {
+ && cursor.par()->isInset(cursor.pos())) {
inset = cursor.par()->getInset(cursor.pos());
}
return inset;
void LyXText::toggleInset(BufferView * bview)
{
Inset * inset = getInset();
- if (!inset->editable())
+ if (!isEditableInset(inset))
return;
//bview->owner()->message(inset->editMessage());
// do we want to keep this?? (JMarc)
- if (inset->editable() != Inset::HIGHLY_EDITABLE)
+ if (!isHighlyEditableInset(inset))
setCursorParUndo(bview);
if (inset->isOpen()) {
textclasslist.Style(buf->params.textclass, par->getLayout());
LyXFont layoutfont;
- for (Paragraph::size_type pos = 0; pos < par->size(); ++pos) {
+ for (pos_type pos = 0; pos < par->size(); ++pos) {
if (pos < beginningOfMainBody(buf, par))
layoutfont = layout.labelfont;
else
Paragraph * LyXText::setLayout(BufferView * bview,
LyXCursor & cur, LyXCursor & sstart_cur,
LyXCursor & send_cur,
- LyXTextClass::size_type layout)
+ lyx::layout_type layout)
{
Paragraph * endpar = send_cur.par()->next();
Paragraph * undoendpar = endpar;
// set layout over selection and make a total rebreak of those paragraphs
-void LyXText::setLayout(BufferView * bview, LyXTextClass::size_type layout)
+void LyXText::setLayout(BufferView * bview, lyx::layout_type layout)
{
LyXCursor tmpcursor = cursor; /* store the current cursor */
}
-Paragraph::size_type LyXText::beginningOfMainBody(Buffer const * buf,
+pos_type LyXText::beginningOfMainBody(Buffer const * buf,
Paragraph const * par) const
{
if (textclasslist.Style(buf->params.textclass,
// inset now after the Undo LyX tries to call inset->Edit(...) again
// and cannot do this as the cursor is behind the inset and GetInset
// does not return the inset!
- if (inset->editable() == Inset::HIGHLY_EDITABLE) {
+ if (isHighlyEditableInset(inset)) {
cursorLeft(bview, true);
}
#endif
}
// Get font setting before we cut
- Paragraph::size_type pos = selection.end.pos();
+ pos_type pos = selection.end.pos();
LyXFont const font = selection.start.par()
->getFontSettings(bview->buffer()->params,
selection.start.pos());
void LyXText::insertStringAsLines(BufferView * bview, string const & str)
{
Paragraph * par = cursor.par();
- Paragraph::size_type pos = cursor.pos();
+ pos_type pos = cursor.pos();
Paragraph * endpar = cursor.par()->next();
setCursorParUndo(bview);
}
} while (res.par() &&
- !(res.par()->getChar(res.pos()) == Paragraph::META_INSET
+ !(res.par()->isInset(res.pos())
&& (inset = res.par()->getInset(res.pos())) != 0
&& find(codes.begin(), codes.end(), inset->lyxCode())
!= codes.end()
== contents)));
if (res.par()) {
- setCursor(bview, res.par(), res.pos());
+ setCursor(bview, res.par(), res.pos(), false);
return true;
}
return false;
void LyXText::checkParagraph(BufferView * bview, Paragraph * par,
- Paragraph::size_type pos)
+ pos_type pos)
{
LyXCursor tmpcursor;
int y = 0;
- Paragraph::size_type z;
+ pos_type z;
Row * row = getRow(par, pos, y);
// is there a break one row above
}
int const tmpheight = row->height();
- Paragraph::size_type const tmplast = rowLast(row);
+ pos_type const tmplast = rowLast(row);
refresh_y = y;
refresh_row = row;
// check the special right address boxes
if (textclasslist.Style(bview->buffer()->params.textclass,
par->getLayout()).margintype
- == MARGIN_RIGHT_ADDRESS_BOX) {
+ == MARGIN_RIGHT_ADDRESS_BOX)
+ {
tmpcursor.par(par);
tmpcursor.row(row);
tmpcursor.y(y);
void LyXText::setCursor(BufferView * bview, Paragraph * par,
- Paragraph::size_type pos,
+ pos_type pos,
bool setfont, bool boundary) const
{
LyXCursor old_cursor = cursor;
void LyXText::setCursor(BufferView *bview, LyXCursor & cur, Paragraph * par,
- Paragraph::size_type pos, bool boundary) const
+ pos_type pos, bool boundary) const
{
cur.par(par);
cur.pos(pos);
y += row->baseline();
// y is now the cursor baseline
cur.y(y);
-
+
// now get the cursors x position
float x;
float fill_separator;
float fill_label_hfill;
prepareToPrint(bview, row, x, fill_separator, fill_hfill,
fill_label_hfill);
- Paragraph::size_type cursor_vpos = 0;
- Paragraph::size_type last = rowLastPrintable(row);
+ pos_type cursor_vpos = 0;
+ pos_type last = rowLastPrintable(row);
if (pos > last + 1) // This shouldn't happen.
pos = last + 1;
cursor_vpos = (bidi_level(pos) % 2 == 0)
? log2vis(pos) : log2vis(pos) + 1;
- Paragraph::size_type main_body =
+ pos_type main_body =
beginningOfMainBody(bview->buffer(), row->par());
if ((main_body > 0) &&
((main_body-1 > last) ||
!row->par()->isLineSeparator(main_body-1)))
main_body = 0;
- for (Paragraph::size_type vpos = row->pos();
+ for (pos_type vpos = row->pos();
vpos < cursor_vpos; ++vpos) {
pos = vis2log(vpos);
if (main_body > 0 && pos == main_body - 1) {
}
cur.x(int(x));
- cur.x_fix(cur.x());
+ cur.x_fix(cur.x());
cur.row(row);
}
void LyXText::setCursorIntern(BufferView * bview, Paragraph * par,
- Paragraph::size_type pos,
+ pos_type pos,
bool setfont, bool boundary) const
{
InsetText * it = static_cast<InsetText *>(par->inInset());
void LyXText::setCurrentFont(BufferView * bview) const
{
- Paragraph::size_type pos = cursor.pos();
+ pos_type pos = cursor.pos();
if (cursor.boundary() && pos > 0)
--pos;
Row * row = getRowNearY(y);
bool bound = false;
- Paragraph::size_type const column = getColumnNearX(bview, row, x,
- bound);
-
+ pos_type const column = getColumnNearX(bview, row, x, bound);
cur.par(row->par());
cur.pos(row->pos() + column);
cur.x(x);