Character* ScreenWindow::getImage() { // reallocate internal buffer if the window size has changed int size = windowLines() * windowColumns(); if (_windowBuffer == 0 || _windowBufferSize != size) { delete[] _windowBuffer; _windowBufferSize = size; _windowBuffer = new Character[size]; _bufferNeedsUpdate = true; } if (!_bufferNeedsUpdate) return _windowBuffer; _screen->getImage(_windowBuffer,size, currentLine(),endWindowLine()); // this window may look beyond the end of the screen, in which // case there will be an unused area which needs to be filled // with blank characters fillUnusedArea(); _bufferNeedsUpdate = false; return _windowBuffer; }
void ScreenWindow::setSelectionEnd( int column , int line ) { _screen->setSelectionEnd( column , qMin(line + currentLine(),endWindowLine()) ); _bufferNeedsUpdate = true; emit selectionChanged(); }
void ScreenWindow::setSelectionStart( int column , int line , bool columnMode ) { _screen->setSelectionStart( column , qMin(line + currentLine(),endWindowLine()) , columnMode); _bufferNeedsUpdate = true; emit selectionChanged(); }
QVector<LineProperty> ScreenWindow::getLineProperties() { QVector<LineProperty> result = _screen->getLineProperties(currentLine(),endWindowLine()); if (result.count() != windowLines()) result.resize(windowLines()); return result; }
void ScreenWindow::setSelectionStart( int column , int line , bool columnMode ) { #warning "FIXME: The columnMode parameter is handled correctly when visually selecting an area, but copy/select and paste produces the wrong results." _screen->setSelectionStart( column , qMin(line + _currentLine,endWindowLine()) , columnMode); _bufferNeedsUpdate = true; emit selectionChanged(); }
bool ScreenWindow::isSelected( int column , int line ) { return _screen->isSelected( column , qMin(line + currentLine(),endWindowLine()) ); }