diff --git a/src/Vt102Emulation.cpp b/src/Vt102Emulation.cpp index c9a0038f..b5b71086 100644 --- a/src/Vt102Emulation.cpp +++ b/src/Vt102Emulation.cpp @@ -1416,11 +1416,24 @@ void Vt102Emulation::setMode(int m) case MODE_Mouse1001: case MODE_Mouse1002: case MODE_Mouse1003: + _currentModes.mode[MODE_Mouse1000] = false; + _currentModes.mode[MODE_Mouse1001] = false; + _currentModes.mode[MODE_Mouse1002] = false; + _currentModes.mode[MODE_Mouse1003] = false; + _currentModes.mode[m] = true; Q_EMIT programRequestsMouseTracking(true); break; case MODE_Mouse1007: Q_EMIT enableAlternateScrolling(true); break; + case MODE_Mouse1005: + case MODE_Mouse1006: + case MODE_Mouse1015: + _currentModes.mode[MODE_Mouse1005] = false; + _currentModes.mode[MODE_Mouse1006] = false; + _currentModes.mode[MODE_Mouse1015] = false; + _currentModes.mode[m] = true; + break; case MODE_BracketedPaste: Q_EMIT programBracketedPasteModeChanged(true); @@ -1453,6 +1466,12 @@ void Vt102Emulation::resetMode(int m) case MODE_Mouse1001: case MODE_Mouse1002: case MODE_Mouse1003: + // Same behavior as xterm, these modes are mutually exclusive, + // and disabling any disables mouse tracking. + _currentModes.mode[MODE_Mouse1000] = false; + _currentModes.mode[MODE_Mouse1001] = false; + _currentModes.mode[MODE_Mouse1002] = false; + _currentModes.mode[MODE_Mouse1003] = false; Q_EMIT programRequestsMouseTracking(false); break; case MODE_Mouse1007: