#include "Painter.h"
#include "WorkArea.h"
#include "buffer.h"
+#include "BufferView.h"
#include "font.h"
#include "insets/insettext.h"
#include "ColorHandler.h"
+#include "language.h"
using std::max;
using std::min;
-static
+namespace {
+
GC createGC()
{
XGCValues val;
| GCLineWidth | GCLineStyle , &val);
}
+} // namespace anon
+
// Constructor
LyXScreen::LyXScreen(WorkArea & o)
}
+LyXScreen::~LyXScreen()
+{
+ XFreeGC(fl_get_display(), gc_copy);
+}
+
+
void LyXScreen::setCursorColor()
{
- if (!lyxColorHandler) return;
+ if (!lyxColorHandler.get()) return;
GC gc = lyxColorHandler->getGCForeground(LColor::cursor);
int y_text = text->first + y1;
// get the first needed row
- Row * row = text->GetRowNearY(y_text);
+ Row * row = text->getRowNearY(y_text);
// y_text is now the real beginning of the row
int y = y_text - text->first;
// y1 is now the real beginning of row on the screen
while (row != 0 && y < y2) {
- LyXText::text_status st = text->status;
+ LyXText::text_status st = bv->text->status;
do {
- text->status = st;
-#if 0
- text->GetVisibleRow(owner.owner(), y + y_offset,
- x_offset, row, y + text->first);
-#else
- text->GetVisibleRow(bv, y + y_offset,
+ bv->text->status = st;
+ text->getVisibleRow(bv, y + y_offset,
x_offset, row, y + text->first);
-#endif
- } while (text->status == LyXText::CHANGED_IN_DRAW);
- text->status = st;
+ } while (bv->text->status == LyXText::CHANGED_IN_DRAW);
+ bv->text->status = st;
y += row->height();
row = row->next();
}
if (((y + row->height()) > 0) &&
((y - row->height()) <= static_cast<int>(owner.height()))) {
// ok there is something visible
- LyXText::text_status st = text->status;
+ LyXText::text_status st = bv->text->status;
do {
- text->status = st;
-#if 0
- text->GetVisibleRow(owner.owner(), y, x_offset, row,
- y + text->first);
-#else
- text->GetVisibleRow(bv, y, x_offset, row,
+ bv->text->status = st;
+ text->getVisibleRow(bv, y, x_offset, row,
y + text->first);
-#endif
- } while (text->status == LyXText::CHANGED_IN_DRAW);
- text->status = st;
+ } while (bv->text->status == LyXText::CHANGED_IN_DRAW);
+ bv->text->status = st;
}
force_clear = false;
}
{
if (!cursor_visible) {
Cursor_Shape shape = BAR_SHAPE;
-#if 0
- if (text->real_current_font.language() !=
- owner.owner()->buffer()->params.language
- || text->real_current_font.isVisibleRightToLeft()
- != owner.owner()->buffer()->params.language->RightToLeft())
-#else
if (text->real_current_font.language() !=
bv->buffer()->params.language
|| text->real_current_font.isVisibleRightToLeft()
!= bv->buffer()->params.language->RightToLeft())
-#endif
shape = (text->real_current_font.isVisibleRightToLeft())
? REVERSED_L_SHAPE : L_SHAPE;
ShowManualCursor(text, text->cursor.x(), text->cursor.y(),
int y_offset, int x_offset)
{
// only if there is a selection
- if (!text->selection) return;
+ if (!text->selection.set()) return;
int const bottom = min(
- max(static_cast<int>(text->sel_end_cursor.y()
- - text->sel_end_cursor.row()->baseline()
- + text->sel_end_cursor.row()->height()),
+ max(static_cast<int>(text->selection.end.y()
+ - text->selection.end.row()->baseline()
+ + text->selection.end.row()->height()),
text->first),
static_cast<int>(text->first + owner.height()));
int const top = min(
- max(static_cast<int>(text->sel_start_cursor.y() -
- text->sel_start_cursor.row()->baseline()),
+ max(static_cast<int>(text->selection.start.y() -
+ text->selection.start.row()->baseline()),
text->first),
static_cast<int>(text->first + owner.height()));
if (kill_selection)
- text->selection = 0;
+ text->selection.set(false);
DrawFromTo(text, bv, top - text->first, bottom - text->first,
y_offset, x_offset);
expose(0, top - text->first,