diff --git a/lib/qtermwidget/Emulation.h b/lib/qtermwidget/Emulation.h index f70963fb..0caea434 100644 --- a/lib/qtermwidget/Emulation.h +++ b/lib/qtermwidget/Emulation.h @@ -408,7 +408,7 @@ public slots: * Emitted after receiving the escape sequence which asks to change * the terminal emulator's size */ - void imageResizeRequest(const QSize& sizz); + void imageResizeRequest(const QSize& size); /** * Emitted when the terminal program requests to change various properties diff --git a/lib/qtermwidget/Session.cpp b/lib/qtermwidget/Session.cpp index 65951962..9d6298c9 100644 --- a/lib/qtermwidget/Session.cpp +++ b/lib/qtermwidget/Session.cpp @@ -58,29 +58,27 @@ Session::Session(QObject* parent) : //create emulation backend _emulation = new Vt102Emulation(); - connect( _emulation, SIGNAL( titleChanged( int, const QString & ) ), - this, SLOT( setUserTitle( int, const QString & ) ) ); - connect( _emulation, SIGNAL( stateSet(int) ), - this, SLOT( activityStateSet(int) ) ); - connect( _emulation, SIGNAL( changeTabTextColorRequest( int ) ), - this, SIGNAL( changeTabTextColorRequest( int ) ) ); - connect( _emulation, SIGNAL(profileChangeCommandReceived(const QString &)), - this, SIGNAL( profileChangeCommandReceived(const QString &)) ); - - connect(_emulation, &Emulation::primaryScreenInUse, - this, &Session::onPrimaryScreenInUse); - connect(_emulation, SIGNAL(imageResizeRequest(QSize)), - this, SLOT(onEmulationSizeChange(QSize))); - connect(_emulation, SIGNAL(imageSizeChanged(int, int)), - this, SLOT(onViewSizeChange(int, int))); - connect(_emulation, &Vt102Emulation::cursorChanged, - this, &Session::cursorChanged); - + connect( _emulation, &Emulation::titleChanged, this, &Session::setUserTitle); + connect( _emulation, &Emulation::stateSet, this, &Session::activityStateSet); + connect( _emulation, &Emulation::changeTabTextColorRequest, this, &Session::changeTabTextColorRequest); + connect( _emulation, &Emulation::profileChangeCommandReceived, this, &Session::profileChangeCommandReceived); + + connect(_emulation, &Emulation::primaryScreenInUse, this, [this](bool use){ + _isPrimaryScreen = use; + emit primaryScreenInUse(use); + }); + connect(_emulation, &Emulation::imageResizeRequest, this, [this](const QSize& size){ + setSize(size); + }); + connect(_emulation, &Emulation::imageSizeChanged, this, [this](int /*height*/, int /*width*/){ + updateTerminalSize(); + }); + connect(_emulation, &Vt102Emulation::cursorChanged, this, &Session::cursorChanged); //setup timer for monitoring session activity _monitorTimer = new QTimer(this); _monitorTimer->setSingleShot(true); - connect(_monitorTimer, SIGNAL(timeout()), this, SLOT(monitorTimerDone())); + connect(_monitorTimer, &QTimer::timeout, this, &Session::monitorTimerDone); } WId Session::windowId() const @@ -120,36 +118,29 @@ void Session::addView(TerminalDisplay * widget) if ( _emulation != nullptr ) { // connect emulation - view signals and slots - connect( widget , &TerminalDisplay::keyPressedSignal, _emulation , - &Emulation::sendKeyEvent); - connect( widget , SIGNAL(mouseSignal(int,int,int,int)) , _emulation , - SLOT(sendMouseEvent(int,int,int,int)) ); - connect( widget , SIGNAL(sendStringToEmu(const char *)) , _emulation , - SLOT(sendString(const char *)) ); + connect(widget, &TerminalDisplay::keyPressedSignal, _emulation, &Emulation::sendKeyEvent); + connect(widget, &TerminalDisplay::mouseSignal, _emulation, &Emulation::sendMouseEvent); + connect(widget, &TerminalDisplay::sendStringToEmu, this, [this](const char* s){ + _emulation->sendString(s); + }); // allow emulation to notify view when the foreground process // indicates whether or not it is interested in mouse signals - connect( _emulation , SIGNAL(programUsesMouseChanged(bool)) , widget , - SLOT(setUsesMouse(bool)) ); - - widget->setUsesMouse( _emulation->programUsesMouse() ); - - connect( _emulation , SIGNAL(programBracketedPasteModeChanged(bool)) , - widget , SLOT(setBracketedPasteMode(bool)) ); - + connect(_emulation, &Emulation::programUsesMouseChanged, widget, &TerminalDisplay::setUsesMouse); + widget->setUsesMouse(_emulation->programUsesMouse() ); + connect(_emulation, &Emulation::programBracketedPasteModeChanged, widget, &TerminalDisplay::setBracketedPasteMode); widget->setBracketedPasteMode(_emulation->programBracketedPasteMode()); - widget->setScreenWindow(_emulation->createWindow()); } //connect view signals and slots - QObject::connect( widget ,SIGNAL(changedContentSizeSignal(int,int)),this, - SLOT(onViewSizeChange(int,int))); + QObject::connect(widget, &TerminalDisplay::changedContentSizeSignal, this, [this](int /*height*/, int /*width*/){ + updateTerminalSize(); + }); - QObject::connect( widget ,SIGNAL(destroyed(QObject *)) , this , - SLOT(viewDestroyed(QObject *)) ); + QObject::connect(widget, &TerminalDisplay::destroyed, this, &Session::viewDestroyed); //slot for close - QObject::connect(this, SIGNAL(finished()), widget, SLOT(close())); + QObject::connect(this, &Session::finished, widget, &TerminalDisplay::close); //slot for primaryScreen QObject::connect(this, &Session::primaryScreenInUse, widget, &TerminalDisplay::usingPrimaryScreen); } @@ -343,20 +334,6 @@ void Session::activityStateSet(int state) emit stateChanged(state); } -void Session::onViewSizeChange(int /*height*/, int /*width*/) -{ - updateTerminalSize(); -} -void Session::onEmulationSizeChange(QSize size) -{ - setSize(size); -} - -void Session::onPrimaryScreenInUse(bool use) -{ - _isPrimaryScreen = use; - emit primaryScreenInUse(use); -} void Session::updateTerminalSize() { @@ -606,121 +583,3 @@ int Session::recvData(const char *buff, int len) return len; } -SessionGroup::SessionGroup() - : _masterMode(0) -{ -} -SessionGroup::~SessionGroup() -{ - // disconnect all - connectAll(false); -} -int SessionGroup::masterMode() const -{ - return _masterMode; -} -QList SessionGroup::sessions() const -{ - return _sessions.keys(); -} -bool SessionGroup::masterStatus(Session * session) const -{ - return _sessions[session]; -} - -void SessionGroup::addSession(Session * session) -{ - _sessions.insert(session,false); - - QListIterator masterIter(masters()); - - while ( masterIter.hasNext() ) { - connectPair(masterIter.next(),session); - } -} -void SessionGroup::removeSession(Session * session) -{ - setMasterStatus(session,false); - - QListIterator masterIter(masters()); - - while ( masterIter.hasNext() ) { - disconnectPair(masterIter.next(),session); - } - - _sessions.remove(session); -} -void SessionGroup::setMasterMode(int mode) -{ - _masterMode = mode; - - connectAll(false); - connectAll(true); -} -QList SessionGroup::masters() const -{ - return _sessions.keys(true); -} -void SessionGroup::connectAll(bool connect) -{ - QListIterator masterIter(masters()); - - while ( masterIter.hasNext() ) { - Session * master = masterIter.next(); - - QListIterator otherIter(_sessions.keys()); - while ( otherIter.hasNext() ) { - Session * other = otherIter.next(); - - if ( other != master ) { - if ( connect ) { - connectPair(master,other); - } else { - disconnectPair(master,other); - } - } - } - } -} -void SessionGroup::setMasterStatus(Session * session, bool master) -{ - bool wasMaster = _sessions[session]; - _sessions[session] = master; - - if (wasMaster == master) { - return; - } - - QListIterator iter(_sessions.keys()); - while (iter.hasNext()) { - Session * other = iter.next(); - - if (other != session) { - if (master) { - connectPair(session, other); - } else { - disconnectPair(session, other); - } - } - } -} - -void SessionGroup::connectPair(Session * master , Session * other) const -{ - if ( _masterMode & CopyInputToAll ) { - qDebug() << "Connection session " << master->nameTitle() << "to" << other->nameTitle(); - - connect( master->emulation() , SIGNAL(sendData(const char *,int)) , other->emulation() , - SLOT(sendString(const char *,int)) ); - } -} -void SessionGroup::disconnectPair(Session * master , Session * other) const -{ - if ( _masterMode & CopyInputToAll ) { - qDebug() << "Disconnecting session " << master->nameTitle() << "from" << other->nameTitle(); - - disconnect( master->emulation() , SIGNAL(sendData(const char *,int)) , other->emulation() , - SLOT(sendString(const char *,int)) ); - } -} - diff --git a/lib/qtermwidget/Session.h b/lib/qtermwidget/Session.h index da8ed512..f7bde7f2 100644 --- a/lib/qtermwidget/Session.h +++ b/lib/qtermwidget/Session.h @@ -317,7 +317,6 @@ public slots: void setUserTitle( int, const QString & caption ); signals: - /** Emitted when the terminal process starts. */ void started(); @@ -408,23 +407,10 @@ public slots: private slots: void onReceiveBlock( const char * buffer, int len ); void monitorTimerDone(); - - void onViewSizeChange(int height, int width); - void onEmulationSizeChange(QSize); - void activityStateSet(int); - //automatically detach views from sessions when view is destroyed void viewDestroyed(QObject * view); -// void zmodemReadStatus(); -// void zmodemReadAndSendBlock(); -// void zmodemRcvBlock(const char *data, int len); -// void zmodemFinished(); - - // Relays the signal from Emulation and sets _isPrimaryScreen - void onPrimaryScreenInUse(bool use); - private: void updateTerminalSize(); WId windowId() const; @@ -456,97 +442,14 @@ private slots: bool _isTitleChanged; ///< flag if the title/icon was changed by user bool _flowControl; bool _fullScripting; - int _sessionId; - // ZModem -// bool _zmodemBusy; -// KProcess* _zmodemProc; -// ZModemDialog* _zmodemProgress; - // Color/Font Changes by ESC Sequences - QColor _modifiedBackground; // as set by: echo -en '\033]11;Color\007 - QString _profileKey; - bool _hasDarkBackground; - static int lastSessionId; - bool _isPrimaryScreen; }; -/** - * Provides a group of sessions which is divided into master and slave sessions. - * Activity in master sessions can be propagated to all sessions within the group. - * The type of activity which is propagated and method of propagation is controlled - * by the masterMode() flags. - */ -class SessionGroup : public QObject { - Q_OBJECT - -public: - /** Constructs an empty session group. */ - SessionGroup(); - /** Destroys the session group and removes all connections between master and slave sessions. */ - ~SessionGroup() override; - - /** Adds a session to the group. */ - void addSession( Session * session ); - /** Removes a session from the group. */ - void removeSession( Session * session ); - - /** Returns the list of sessions currently in the group. */ - QList sessions() const; - - /** - * Sets whether a particular session is a master within the group. - * Changes or activity in the group's master sessions may be propagated - * to all the sessions in the group, depending on the current masterMode() - * - * @param session The session whose master status should be changed. - * @param master True to make this session a master or false otherwise - */ - void setMasterStatus( Session * session , bool master ); - /** Returns the master status of a session. See setMasterStatus() */ - bool masterStatus( Session * session ) const; - - /** - * This enum describes the options for propagating certain activity or - * changes in the group's master sessions to all sessions in the group. - */ - enum MasterMode { - /** - * Any input key presses in the master sessions are sent to all - * sessions in the group. - */ - CopyInputToAll = 1 - }; - - /** - * Specifies which activity in the group's master sessions is propagated - * to all sessions in the group. - * - * @param mode A bitwise OR of MasterMode flags. - */ - void setMasterMode( int mode ); - /** - * Returns a bitwise OR of the active MasterMode flags for this group. - * See setMasterMode() - */ - int masterMode() const; - -private: - void connectPair(Session * master , Session * other) const; - void disconnectPair(Session * master , Session * other) const; - void connectAll(bool connect); - QList masters() const; - - // maps sessions to their master status - QHash _sessions; - - int _masterMode; -}; - #endif diff --git a/lib/qtermwidget/TerminalDisplay.cpp b/lib/qtermwidget/TerminalDisplay.cpp index 15312371..815297d4 100644 --- a/lib/qtermwidget/TerminalDisplay.cpp +++ b/lib/qtermwidget/TerminalDisplay.cpp @@ -2864,7 +2864,7 @@ void TerminalDisplay::mouseDoubleClickEvent(QMouseEvent* ev) _possibleTripleClick=true; QTimer::singleShot(QApplication::doubleClickInterval(),this, - SLOT(tripleClickTimeout())); + &TerminalDisplay::tripleClickTimeout); } void TerminalDisplay::wheelEvent( QWheelEvent* ev ) @@ -3354,7 +3354,7 @@ void TerminalDisplay::bell(const QString& message) if ( _allowBell ) { _allowBell = false; - QTimer::singleShot(500,this,SLOT(enableBell())); + QTimer::singleShot(500,this,&TerminalDisplay::enableBell); if (_bellMode==SystemBeepBell) { @@ -3367,7 +3367,7 @@ void TerminalDisplay::bell(const QString& message) else if (_bellMode==VisualBell) { swapColorTable(); - QTimer::singleShot(200,this,SLOT(swapColorTable())); + QTimer::singleShot(200,this,&TerminalDisplay::swapColorTable); } } } diff --git a/lib/qtermwidget/TerminalDisplay.h b/lib/qtermwidget/TerminalDisplay.h index 07894c9c..3a2da2b7 100644 --- a/lib/qtermwidget/TerminalDisplay.h +++ b/lib/qtermwidget/TerminalDisplay.h @@ -576,7 +576,7 @@ public slots: // this is a bad hack, but it works #if defined(Q_OS_LINUX) this->hide(); - QTimer::singleShot(100, this, SLOT(show())); + QTimer::singleShot(100, this, [this](){ this->show(); }); #endif } void setMessageParentWidget(QWidget *parent) { messageParentWidget = parent; } diff --git a/lib/qtermwidget/qtermwidget.cpp b/lib/qtermwidget/qtermwidget.cpp index bbce1c7e..5a029225 100644 --- a/lib/qtermwidget/qtermwidget.cpp +++ b/lib/qtermwidget/qtermwidget.cpp @@ -68,17 +68,17 @@ QTermWidget::QTermWidget(QWidget *messageParentWidget, QWidget *parent) m_terminalDisplay->setObjectName("terminalDisplay"); setMessageParentWidget(messageParentWidget?messageParentWidget:this); - connect(m_session, SIGNAL(bellRequest(QString)), m_terminalDisplay, SLOT(bell(QString))); - connect(m_terminalDisplay, SIGNAL(notifyBell(QString)), this, SIGNAL(bell(QString))); - connect(m_terminalDisplay, SIGNAL(handleCtrlC()), this, SIGNAL(handleCtrlC())); - connect(m_terminalDisplay, SIGNAL(changedContentCountSignal(int,int)),this, SLOT(sizeChange(int,int))); - connect(m_terminalDisplay, SIGNAL(mousePressEventForwarded(QMouseEvent*)), this, SIGNAL(mousePressEventForwarded(QMouseEvent*))); - connect(m_session, SIGNAL(activity()), this, SIGNAL(activity())); - connect(m_session, SIGNAL(silence()), this, SIGNAL(silence())); + connect(m_session, &Session::bellRequest, m_terminalDisplay, &TerminalDisplay::bell); + connect(m_terminalDisplay, &TerminalDisplay::notifyBell, this, &QTermWidget::bell); + connect(m_terminalDisplay, &TerminalDisplay::handleCtrlC, this, &QTermWidget::handleCtrlC); + connect(m_terminalDisplay, &TerminalDisplay::changedContentCountSignal, this, &QTermWidget::termSizeChange); + connect(m_terminalDisplay, &TerminalDisplay::mousePressEventForwarded, this, &QTermWidget::mousePressEventForwarded); + connect(m_session, &Session::activity, this, &QTermWidget::activity); + connect(m_session, &Session::silence, this, &QTermWidget::silence); connect(m_session, &Session::profileChangeCommandReceived, this, &QTermWidget::profileChanged); connect(m_session, &Session::receivedData, this, &QTermWidget::receivedData); - connect(m_session->emulation(), SIGNAL(zmodemRecvDetected()), this, SIGNAL(zmodemRecvDetected()) ); - connect(m_session->emulation(), SIGNAL(zmodemSendDetected()), this, SIGNAL(zmodemSendDetected()) ); + connect(m_session->emulation(), &Emulation::zmodemRecvDetected, this, &QTermWidget::zmodemRecvDetected); + connect(m_session->emulation(), &Emulation::zmodemSendDetected, this, &QTermWidget::zmodemSendDetected); // That's OK, FilterChain's dtor takes care of UrlFilter. urlFilter = new UrlFilter(); @@ -88,9 +88,15 @@ QTermWidget::QTermWidget(QWidget *messageParentWidget, QWidget *parent) m_searchBar = new SearchBar(this); m_searchBar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum); - connect(m_searchBar, SIGNAL(searchCriteriaChanged()), this, SLOT(find())); - connect(m_searchBar, SIGNAL(findNext()), this, SLOT(findNext())); - connect(m_searchBar, SIGNAL(findPrevious()), this, SLOT(findPrevious())); + connect(m_searchBar, &SearchBar::searchCriteriaChanged, this, [this](){ + search(true, false); + }); + connect(m_searchBar, &SearchBar::findNext, this, [this](){ + search(true, true); + }); + connect(m_searchBar, &SearchBar::findPrevious, this, [this](){ + search(false, false); + }); m_layout->addWidget(m_searchBar); m_searchBar->hide(); QString style_sheet = qApp->styleSheet(); @@ -101,14 +107,14 @@ QTermWidget::QTermWidget(QWidget *messageParentWidget, QWidget *parent) m_terminalDisplay->resize(this->size()); this->setFocusProxy(m_terminalDisplay); - connect(m_terminalDisplay, SIGNAL(copyAvailable(bool)), - this, SLOT(selectionChanged(bool))); - connect(m_terminalDisplay, SIGNAL(termGetFocus()), - this, SIGNAL(termGetFocus())); - connect(m_terminalDisplay, SIGNAL(termLostFocus()), - this, SIGNAL(termLostFocus())); + connect(m_terminalDisplay, &TerminalDisplay::copyAvailable, + this, &QTermWidget::copyAvailable); + connect(m_terminalDisplay, &TerminalDisplay::termGetFocus, + this, &QTermWidget::termGetFocus); + connect(m_terminalDisplay, &TerminalDisplay::termLostFocus, + this, &QTermWidget::termLostFocus); connect(m_terminalDisplay, &TerminalDisplay::keyPressedSignal, this, - [this] (QKeyEvent* e, bool) { Q_EMIT termKeyPressed(e); }); + [this] (QKeyEvent* e, bool) { emit termKeyPressed(e); }); QFont font = QApplication::font(); font.setFamily(QLatin1String(DEFAULT_FONT_FAMILY)); @@ -122,8 +128,10 @@ QTermWidget::QTermWidget(QWidget *messageParentWidget, QWidget *parent) m_session->addView(m_terminalDisplay); - connect(m_session, SIGNAL(resizeRequest(QSize)), this, SLOT(setSize(QSize))); - connect(m_session, SIGNAL(finished()), this, SLOT(sessionFinished())); + connect(m_session, &Session::resizeRequest, this, [this](const QSize & size){ + setSize(size); + }); + connect(m_session, &Session::finished, this, &QTermWidget::finished); connect(m_session, &Session::titleChanged, this, &QTermWidget::titleChanged); connect(m_session, &Session::cursorChanged, this, &QTermWidget::cursorChanged); } @@ -141,21 +149,6 @@ void QTermWidget::selectionChanged(bool textSelected) emit copyAvailable(textSelected); } -void QTermWidget::find() -{ - search(true, false); -} - -void QTermWidget::findNext() -{ - search(true, true); -} - -void QTermWidget::findPrevious() -{ - search(false, false); -} - void QTermWidget::search(bool forwards, bool next) { int startColumn, startLine; @@ -183,29 +176,22 @@ void QTermWidget::search(bool forwards, bool next) HistorySearch *historySearch = new HistorySearch(m_session->emulation(), regExp, forwards, startColumn, startLine, this); - connect(historySearch, SIGNAL(matchFound(int, int, int, int)), this, SLOT(matchFound(int, int, int, int))); - connect(historySearch, SIGNAL(noMatchFound()), this, SLOT(noMatchFound())); - connect(historySearch, SIGNAL(noMatchFound()), m_searchBar, SLOT(noMatchFound())); + connect(historySearch, &HistorySearch::matchFound, this, [this](int startColumn, int startLine, int endColumn, int endLine){ + ScreenWindow* sw = m_terminalDisplay->screenWindow(); + //qDebug() << "Scroll to" << startLine; + sw->scrollTo(startLine); + sw->setTrackOutput(false); + sw->notifyOutputChanged(); + sw->setSelectionStart(startColumn, startLine - sw->currentLine(), false); + sw->setSelectionEnd(endColumn, endLine - sw->currentLine()); + }); + connect(historySearch, &HistorySearch::noMatchFound, this, [this](){ + m_terminalDisplay->screenWindow()->clearSelection(); + }); + connect(historySearch, &HistorySearch::noMatchFound, m_searchBar, &SearchBar::noMatchFound); historySearch->search(); } - -void QTermWidget::matchFound(int startColumn, int startLine, int endColumn, int endLine) -{ - ScreenWindow* sw = m_terminalDisplay->screenWindow(); - //qDebug() << "Scroll to" << startLine; - sw->scrollTo(startLine); - sw->setTrackOutput(false); - sw->notifyOutputChanged(); - sw->setSelectionStart(startColumn, startLine - sw->currentLine(), false); - sw->setSelectionEnd(endColumn, endLine - sw->currentLine()); -} - -void QTermWidget::noMatchFound() -{ - m_terminalDisplay->screenWindow()->clearSelection(); -} - QSize QTermWidget::sizeHint() const { QSize size = m_terminalDisplay->sizeHint(); diff --git a/lib/qtermwidget/qtermwidget.h b/lib/qtermwidget/qtermwidget.h index cbee2383..97b1e16d 100644 --- a/lib/qtermwidget/qtermwidget.h +++ b/lib/qtermwidget/qtermwidget.h @@ -281,82 +281,58 @@ class QTermWidget : public QWidget { signals: void finished(); void copyAvailable(bool); - void termGetFocus(); void termLostFocus(); - void termKeyPressed(QKeyEvent *); - void urlActivated(const QUrl&, uint32_t opcode); - void bell(const QString& message); - - void handleCtrlC(void); - void activity(); void silence(); - /** * Emitted when emulator send data to the terminal process * (redirected for external recipient). It can be used for * control and display the remote terminal. */ void sendData(const char *,int); - void dupDisplayOutput(const char* data,int len); - void profileChanged(const QString & profile); - void titleChanged(int title,const QString& newTitle); - void termSizeChange(int lines, int columns); - void mousePressEventForwarded(QMouseEvent* event); - /** * Signals that we received new data from the process running in the * terminal emulator */ void receivedData(const QString &text); - void zmodemSendDetected(); void zmodemRecvDetected(); + void handleCtrlC(void); public slots: // Copy terminal to clipboard void copyClipboard(); - // Copy terminal to selection void copySelection(); - // Paste clipboard to terminal void pasteClipboard(); - // Paste selection to terminal void pasteSelection(); - // Select all text void selectAll(); - // Set zoom int zoomIn(); int zoomOut(); - // Set size void setSize(const QSize &); - /*! Set named key binding for given widget */ void setKeyBindings(const QString & kb); - /*! Clear the terminal content and move to home position */ void clearScrollback(); void clearScreen(); void clear(); - void toggleShowSearchBar(); - void saveHistory(QIODevice *device, int format = 0, int start = -1, int end = -1); void saveHistory(QTextStream *stream, int format = 0, int start = -1, int end = -1); void screenShot(QPixmap *pixmap); @@ -371,19 +347,11 @@ protected slots: void selectionChanged(bool textSelected); private slots: - void find(); - void findNext(); - void findPrevious(); - void matchFound(int startColumn, int startLine, int endColumn, int endLine); - void noMatchFound(); /** * Emulation::cursorChanged() signal propagates to here and QTermWidget * sends the specified cursor states to the terminal display */ void cursorChanged(Emulation::KeyboardCursorShape cursorShape, bool blinkingCursorEnabled); - void sizeChange(int lines, int columns){ - emit termSizeChange(lines, columns); - } private: class HighLightText {