+ if (row_ptr->par->table) {
+ float x_old = x;
+ for (vpos = row_ptr->pos; vpos <= last; ++vpos) {
+ pos = vis2log(vpos);
+ float old_tmpx = tmpx;
+ if (row_ptr->par->IsNewline(pos)) {
+ tmpx = x_old + row_ptr->par->table->WidthOfColumn(cell);
+ x_old = tmpx;
+ ++cell;
+ tmpx += row_ptr->par->table->GetBeginningOfTextInCell(cell);
+ } else {
+ tmpx += SingleWidth(row_ptr->par, pos);
+ }
+ if ( (sel_start_cursor.row != row_ptr ||
+ sel_start_cursor.pos <= pos) &&
+ (sel_end_cursor.row != row_ptr ||
+ pos < sel_end_cursor.pos) )
+ pain.fillRectangle(old_tmpx, offset,
+ tmpx - old_tmpx + 1,
+ row_ptr->height,
+ LColor::selection);
+ }
+ } else {
+ LyXParagraph::size_type main_body =
+ BeginningOfMainBody(row_ptr->par);
+
+ for (vpos = row_ptr->pos; vpos <= last; ++vpos) {
+ pos = vis2log(vpos);
+ float old_tmpx = tmpx;
+ if (main_body > 0 && pos == main_body-1) {
+ tmpx += fill_label_hfill +
+ GetFont(row_ptr->par, -2).stringWidth(
+ textclasslist.Style(parameters->textclass, row_ptr->par->GetLayout()).labelsep);
+ if (row_ptr->par->IsLineSeparator(main_body-1))
+ tmpx -= SingleWidth(row_ptr->par, main_body-1);
+ }
+ if (HfillExpansion(row_ptr, pos)) {
+ tmpx += SingleWidth(row_ptr->par, pos);
+ if (pos >= main_body)
+ tmpx += fill_hfill;
+ else
+ tmpx += fill_label_hfill;
+ }
+ else if (row_ptr->par->IsSeparator(pos)) {
+ if (pos != last || !row_ptr->next ||
+ row_ptr->next->par != row_ptr->par ||
+ direction == row_ptr->par->getLetterDirection(last)) {
+ tmpx += SingleWidth(row_ptr->par, pos);
+ if (pos >= main_body)
+ tmpx += fill_separator;
+ }
+ } else
+ tmpx += SingleWidth(row_ptr->par, pos);
+
+ if ( (sel_start_cursor.row != row_ptr ||
+ sel_start_cursor.pos <= pos) &&
+ (sel_end_cursor.row != row_ptr ||
+ pos < sel_end_cursor.pos) )
+ pain.fillRectangle(old_tmpx, offset,
+ tmpx - old_tmpx + 1,
+ row_ptr->height,
+ LColor::selection);
+ }
+ }
+ if ( (sel_start_cursor.row != row_ptr &&
+ direction == LYX_DIR_RIGHT_TO_LEFT) ||
+ (sel_end_cursor.row != row_ptr &&
+ direction == LYX_DIR_LEFT_TO_RIGHT) )
+ pain.fillRectangle(tmpx, offset,
+ paperwidth - tmpx,