From 46edda6d18d9bf4a06a170ad69b2ac25d9902b9c Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 22 Aug 2014 13:20:42 +0200 Subject: [PATCH] Fix: custom commands in keytab were ignored. Removed hardcoded key combinations. --- konsole-qml-plugin/src/Screen.cpp | 10 +++++ konsole-qml-plugin/src/Screen.h | 8 ++++ konsole-qml-plugin/src/TerminalDisplay.cpp | 47 +++++----------------- konsole-qml-plugin/src/TerminalDisplay.h | 6 ++- konsole-qml-plugin/src/Vt102Emulation.cpp | 9 +++++ konsole-qml-plugin/src/Vt102Emulation.h | 2 + 6 files changed, 44 insertions(+), 38 deletions(-) diff --git a/konsole-qml-plugin/src/Screen.cpp b/konsole-qml-plugin/src/Screen.cpp index 45ddd80..e855ae7 100644 --- a/konsole-qml-plugin/src/Screen.cpp +++ b/konsole-qml-plugin/src/Screen.cpp @@ -1358,3 +1358,13 @@ void Screen::fillWithDefaultChar(Character* dest, int count) for (int i=0;iscrollBy(mode, amount); + _screenWindow->setTrackOutput(_screenWindow->atEndOfOutput()); + updateLineProperties(); + updateImage(); +} + + void KTerminalDisplay::setUsesMouse(bool usesMouse){ _mouseMarks = !usesMouse; } @@ -2144,44 +2153,10 @@ void KTerminalDisplay::drawInputMethodPreeditString(QPainter *painter , const QR void KTerminalDisplay::keyPressEvent(QKeyEvent *event) { + _screenWindow->screen()->setCurrentTerminalDisplay(this); + bool emitKeyPressSignal = true; - // Keyboard-based navigation - if ( event->modifiers() == Qt::ShiftModifier ) - { - bool update = true; - - if ( event->key() == Qt::Key_PageUp ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollPages , -1 ); - } - else if ( event->key() == Qt::Key_PageDown ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollPages , 1 ); - } - else if ( event->key() == Qt::Key_Up ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollLines , -1 ); - } - else if ( event->key() == Qt::Key_Down ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollLines , 1 ); - } - else - update = false; - - if ( update ) - { - _screenWindow->setTrackOutput( _screenWindow->atEndOfOutput() ); - - updateLineProperties(); - updateImage(); - - // do not send key press to terminal - emitKeyPressSignal = false; - } - } - _actSel=0; // Key stroke implies a screen update, so TerminalDisplay won't // know where the current selection is. diff --git a/konsole-qml-plugin/src/TerminalDisplay.h b/konsole-qml-plugin/src/TerminalDisplay.h index 831d7a5..693fb85 100644 --- a/konsole-qml-plugin/src/TerminalDisplay.h +++ b/konsole-qml-plugin/src/TerminalDisplay.h @@ -33,6 +33,8 @@ #include "Filter.h" #include "Character.h" #include "ksession.h" +#include "ScreenWindow.h" +#include "Screen.h" //#include "konsole_export.h" #define KONSOLEPRIVATE_EXPORT @@ -47,8 +49,6 @@ class QTimerEvent; extern unsigned short vt100_graphics[32]; -class ScreenWindow; - /** * A widget which displays output from a terminal emulation and sends input keypresses and mouse activity * to the terminal. @@ -317,6 +317,8 @@ public slots: void mouseDoubleClick(qreal x, qreal y); void mouseRelease(qreal x, qreal y); + void scrollScreenWindow(enum ScreenWindow::RelativeScrollMode mode, int amount); + void setUsesMouse(bool usesMouse); bool autoFocus() { return m_focusOnClick; } diff --git a/konsole-qml-plugin/src/Vt102Emulation.cpp b/konsole-qml-plugin/src/Vt102Emulation.cpp index f33010f..f38787a 100644 --- a/konsole-qml-plugin/src/Vt102Emulation.cpp +++ b/konsole-qml-plugin/src/Vt102Emulation.cpp @@ -940,8 +940,17 @@ void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) if ( entry.command() != KeyboardTranslator::NoCommand ) { + KTerminalDisplay* currentView = _currentScreen->currentTerminalDisplay(); if (entry.command() & KeyboardTranslator::EraseCommand) textToSend += eraseChar(); + else if (entry.command() & KeyboardTranslator::ScrollPageUpCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollPages, -1); + else if (entry.command() & KeyboardTranslator::ScrollPageDownCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollPages, 1); + else if (entry.command() & KeyboardTranslator::ScrollLineUpCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollLines, -1); + else if (entry.command() & KeyboardTranslator::ScrollLineDownCommand) + currentView->scrollScreenWindow(ScreenWindow::ScrollLines, 1); // TODO command handling } diff --git a/konsole-qml-plugin/src/Vt102Emulation.h b/konsole-qml-plugin/src/Vt102Emulation.h index 63e23c3..9dc6f6e 100644 --- a/konsole-qml-plugin/src/Vt102Emulation.h +++ b/konsole-qml-plugin/src/Vt102Emulation.h @@ -34,6 +34,8 @@ // Konsole #include "Emulation.h" #include "Screen.h" +#include "ScreenWindow.h" +#include "TerminalDisplay.h" #define MODE_AppScreen (MODES_SCREEN+0) // Mode #1 #define MODE_AppCuKeys (MODES_SCREEN+1) // Application cursor keys (DECCKM)