void TerminalModel::updateTerminalSize() { QListIterator<TerminalView*> viewIter(_views); int minLines = -1; int minColumns = -1; // minimum number of lines and columns that views require for // their size to be taken into consideration ( to avoid problems // with new view widgets which haven't yet been set to their correct size ) const int VIEW_LINES_THRESHOLD = 2; const int VIEW_COLUMNS_THRESHOLD = 2; //select largest number of lines and columns that will fit in all visible views while ( viewIter.hasNext() ) { TerminalView* view = viewIter.next(); if ( view->isHidden() == false && view->lines() >= VIEW_LINES_THRESHOLD && view->columns() >= VIEW_COLUMNS_THRESHOLD ) { minLines = (minLines == -1) ? view->lines() : qMin( minLines , view->lines() ); minColumns = (minColumns == -1) ? view->columns() : qMin( minColumns , view->columns() ); } } // backend emulation must have a _terminal of at least 1 column x 1 line in size if ( minLines > 0 && minColumns > 0 ) { _emulation->setImageSize( minLines , minColumns ); _kpty->setWinSize (minLines, minColumns); //_shellProcess->setWindowSize( minLines , minColumns ); } }
void Emulation::setSelection(const bool preserve_line_breaks) { if (!connected) return; QString t = _currentScreen->selectedText(preserve_line_breaks); if (!t.isNull()) { QListIterator< TerminalDisplay* > viewIter(_views); while (viewIter.hasNext()) viewIter.next()->setSelection(t); } }