diff -Nru qtermwidget-0.14.1/CHANGELOG qtermwidget-0.16.1/CHANGELOG --- qtermwidget-0.14.1/CHANGELOG 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/CHANGELOG 2020-11-14 09:10:48.000000000 +0000 @@ -1,3 +1,61 @@ +qtermwidget-0.16.1 / 2020-11-14 +=============================== + * Bumped version to 0.16.1, for a point release of qterminal. + +qtermwidget-0.16.0 / 2020-11-01 +=============================== + + * Use qAsConst. + * Don't search application dir for keyboard and scheme data. + * Use Q_EMIT to call signals, instead of the emit keyword. + * Dropped the deprecated class QLinkedList. + * Don't use 0/nullptr to initialize QFlags. + * Fixed ColorEntry copy operator. + * Disabled the use of copy constructors and assignment operators. + * Check for successful ioctl() calls by testing that the call did not return -1. + * Fix find_package() developer warning in cmake. + * Use const references wherever possible. + * Handle keyboard commands properly. + +qtermwidget-0.15.0 / 2020-04-24 +=============================== + + * Bumped version to 0.15.0. + * Replaced Q_WS_MAC with Q_OS_MACOS for Qt5 compatibility. + * KPty: Don't conditionalize chownpty existence on HAVE_OPENPTY. + * cmake: set CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON for macOS. + * Fixed the default font on macOS. + * pyqt: Fixes deprecation warning (CMP0002). + * Fixed the PyQt5 binding with Qt ≥ 5.11. + * Swap Qt's ControlModifier and MetaModifier on macOS. + * C++11 code updates. + * Use braced initializer list in returns. + * Fixed the memory access violation in TerminalDisplay's method `getCharacterPosition`. + * Completed the support for transient scrollbars. + * Added `saveHistory` to QTermWidget. + * Use vanilla Qt instead of patched one. + * Don't set the selection clipboard if it's unsupported. + * Announce truecolor support via COLORTERM. + * Fixed numpad handling and added entries for numpad 5. + * Allow to disable drawing line chars. + * Use QRectF for cursor drawing and fix artifacts in hidpi. + * Fixed compilation on NetBSD. + * Added sendKeyEvent() API. + * Fixed flickering on font change. + * Select all text when opening search bar. + * Removed some debug outputs. + * Removed (duplicated) string casts definitions. + * Removed obsolete qCopy. + * Fix SearchBar light text over white background with dark themes. + * pyqt: also check for sip 5.x path. + * Prevented a c++11 range-loop might detach Qt container. + * Dropped the deprecated QString method `sprintf()`. + * Avoid buffer overflows exploits. + * Fixed build with LLVM/clang. + * Explicitly mark exported classes. + * Fixed QCharRef's deprecated behavior. + * Correctly initialize sigsets. + qtermwidget-0.14.1 / 2019-02-25 =============================== @@ -16,7 +74,7 @@ - kpty: make it work on OpenBSD - kptyprocess: ensure .bash_history is correctly written out - kb-layouts: Make Backspace behaves the same as xterm - - tools: Drop the ability to bundle kb-layouts and colorschemes + - tools: Drop the ability to bundle kb-layouts and colorschemes - SearchBar: Fix visual glitches in search-bar - TerminalDisplay: Fixed link mouseover after recent changes - TerminalDisplay: Redraw cursor after cursor type changed @@ -24,9 +82,9 @@ - qterminal: Correct deleting of HotSpot list items - qterminal: Removed unnecessary checks - ColorScheme: Fixed local variable will be copied despite being returned by name - - ColorScheme: Fixed error return-std-move + - ColorScheme: Fixed error return-std-move - Removed unnecessary checks - - Suppressed compilation warnings + - Suppressed compilation warnings - Don't use automatic string conversions - Marked some functions const - Implemented terminal margins diff -Nru qtermwidget-0.14.1/.ci/build.sh qtermwidget-0.16.1/.ci/build.sh --- qtermwidget-0.14.1/.ci/build.sh 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/.ci/build.sh 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,10 @@ +set -ex + +mkdir build +cd build +cmake \ + -DBUILD_EXAMPLE=ON \ + -DQTERMWIDGET_BUILD_PYTHON_BINDING=ON \ + -DQTERMWIDGET_USE_UTEMPTER=ON \ + .. +make diff -Nru qtermwidget-0.14.1/cmake/FindUtf8Proc.cmake qtermwidget-0.16.1/cmake/FindUtf8Proc.cmake --- qtermwidget-0.14.1/cmake/FindUtf8Proc.cmake 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/cmake/FindUtf8Proc.cmake 2020-11-14 09:10:48.000000000 +0000 @@ -47,11 +47,12 @@ # all listed variables are TRUE include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS( - UTF8PROC + Utf8Proc + FOUND_VAR Utf8Proc_FOUND REQUIRED_VARS UTF8PROC_LIBRARY UTF8PROC_INCLUDE_DIR ) -if(UTF8PROC_FOUND) +if(Utf8Proc_FOUND) set( UTF8PROC_LIBRARIES ${UTF8PROC_LIBRARY} ) set( UTF8PROC_INCLUDE_DIRS ${UTF8PROC_INCLUDE_DIR} ) endif() diff -Nru qtermwidget-0.14.1/CMakeLists.txt qtermwidget-0.16.1/CMakeLists.txt --- qtermwidget-0.14.1/CMakeLists.txt 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/CMakeLists.txt 2020-11-14 09:10:48.000000000 +0000 @@ -14,14 +14,14 @@ option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) option(BUILD_EXAMPLE "Build example application. Default OFF." OFF) -option(QTERMWIDGET_USE_UTEMPTER "Uses the libutempter library. Mainly for FreeBSD" OFF) +option(QTERMWIDGET_USE_UTEMPTER "Uses libutempter on Linux or libulog on FreeBSD for login records." OFF) option(QTERMWIDGET_BUILD_PYTHON_BINDING "Build python binding" OFF) option(USE_UTF8PROC "Use libutf8proc for better Unicode support. Default OFF" OFF) # just change version for releases set(QTERMWIDGET_VERSION_MAJOR "0") -set(QTERMWIDGET_VERSION_MINOR "14") +set(QTERMWIDGET_VERSION_MINOR "16") set(QTERMWIDGET_VERSION_PATCH "1") set(QTERMWIDGET_VERSION "${QTERMWIDGET_VERSION_MAJOR}.${QTERMWIDGET_VERSION_MINOR}.${QTERMWIDGET_VERSION_PATCH}") @@ -31,8 +31,8 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) # Minimum Versions -set(QT_MINIMUM_VERSION "5.7.1") -set(LXQTBT_MINIMUM_VERSION "0.6.0") +set(QT_MINIMUM_VERSION "5.12.0") +set(LXQTBT_MINIMUM_VERSION "0.8.0") find_package(Qt5Widgets "${QT_MINIMUM_VERSION}" REQUIRED) find_package(Qt5LinguistTools "${QT_MINIMUM_VERSION}" REQUIRED) @@ -47,6 +47,13 @@ include(LXQtCompilerSettings NO_POLICY_SCOPE) include(LXQtCreatePkgConfigFile) +if(APPLE) + if(CMAKE_VERSION VERSION_GREATER 3.9) + cmake_policy(SET CMP0068 NEW) + set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON) + endif() +endif() + set(QTERMWIDGET_LIBRARY_NAME qtermwidget5) @@ -103,6 +110,7 @@ set(HDRS_DISTRIB lib/qtermwidget.h lib/Emulation.h + lib/KeyboardTranslator.h lib/Filter.h ) @@ -165,7 +173,8 @@ target_compile_definitions(${QTERMWIDGET_LIBRARY_NAME} PRIVATE "HAVE_UTEMPTER" ) - target_link_libraries(${QTERMWIDGET_LIBRARY_NAME} ulog) + find_library(UTEMPTER_LIB NAMES utempter ulog REQUIRED) + target_link_libraries(${QTERMWIDGET_LIBRARY_NAME} ${UTEMPTER_LIB}) endif() endif() @@ -197,17 +206,12 @@ "TRANSLATIONS_DIR=\"${TRANSLATIONS_DIR}\"" "HAVE_POSIX_OPENPT" "HAVE_SYS_TIME_H" - "QT_USE_QSTRINGBUILDER" - "QT_NO_CAST_FROM_ASCII" - "QT_NO_CAST_TO_ASCII" - "QT_NO_URL_CAST_FROM_STRING" - "QT_NO_CAST_FROM_BYTEARRAY" ) generate_export_header(${QTERMWIDGET_LIBRARY_NAME} EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/lib/qtermwidget_export.h" - EXPORT_MACRO_NAME QTERMWIDGET_EXPORT + BASE_NAME QTERMWIDGET ) target_include_directories(${QTERMWIDGET_LIBRARY_NAME} @@ -238,7 +242,7 @@ ) install(FILES - ${HDRS_DISTRIB} "${CMAKE_CURRENT_BINARY_DIR}/lib/qtermwidget_export.h" + ${HDRS_DISTRIB} "${CMAKE_CURRENT_BINARY_DIR}/lib/qtermwidget_export.h" "${CMAKE_CURRENT_BINARY_DIR}/lib/qtermwidget_version.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${QTERMWIDGET_LIBRARY_NAME}" COMPONENT Devel ) @@ -275,6 +279,12 @@ @ONLY ) +configure_file( + "${PROJECT_SOURCE_DIR}/lib/qtermwidget_version.h.in" + "${CMAKE_BINARY_DIR}/lib/qtermwidget_version.h" + @ONLY +) + install(FILES "${CMAKE_BINARY_DIR}/${QTERMWIDGET_LIBRARY_NAME}-config.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${QTERMWIDGET_LIBRARY_NAME}" diff -Nru qtermwidget-0.14.1/debian/changelog qtermwidget-0.16.1/debian/changelog --- qtermwidget-0.14.1/debian/changelog 2020-02-25 16:24:33.000000000 +0000 +++ qtermwidget-0.16.1/debian/changelog 2021-01-10 14:36:41.000000000 +0000 @@ -1,10 +1,28 @@ -qtermwidget (0.14.1-3ubuntu1) focal; urgency=medium +qtermwidget (0.16.1-1ubuntu0~ppa1) focal; urgency=medium - * debian/control: Add Breaks/Replaces on qtermwidget-l10n to + * Sync with Debian, Ubuntu remaning changes: + - debian/control: Add Breaks/Replaces on qtermwidget-l10n to qtermwidget5-data. Fixes upgrade from 0.14.1-0ubuntu3 or earlier. (LP: #1864170) - -- Rik Mills Tue, 25 Feb 2020 16:24:33 +0000 + -- Julien Lavergne Sun, 10 Jan 2021 15:36:41 +0100 + +qtermwidget (0.16.1-1) unstable; urgency=medium + + * Team upload. + + [ Sophie Brun ] + * Update debian/upstream/signing-key.asc + * New upstream version 0.16.1 + * Update minimal required version of lxqt-build-tools + * Update debian/libqtermwidget5-0.symbols + * Bump Standards-Version to 4.5.0 (no changes) + + [ Raphaël Hertzog ] + * Update symbols file to use demangled names + * Sort list of symbols + + -- Raphaël Hertzog Thu, 17 Dec 2020 11:54:22 +0100 qtermwidget (0.14.1-3) unstable; urgency=medium diff -Nru qtermwidget-0.14.1/debian/control qtermwidget-0.16.1/debian/control --- qtermwidget-0.14.1/debian/control 2020-02-25 16:21:41.000000000 +0000 +++ qtermwidget-0.16.1/debian/control 2021-01-10 14:36:41.000000000 +0000 @@ -1,5 +1,6 @@ Source: qtermwidget -Maintainer: LXQt Packaging Team +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: LXQt Packaging Team Uploaders: Alf Gaida , ChangZhuo Chen (陳昌倬) , Andrew Lee (李健秋) @@ -8,9 +9,9 @@ Build-Depends: debhelper-compat (= 12), cmake, libutf8proc-dev, - lxqt-build-tools (>= 0.6.0~), + lxqt-build-tools (>= 0.8.0~), qtbase5-dev -Standards-Version: 4.5.0 +Standards-Version: 4.5.1 Vcs-Browser: https://salsa.debian.org/lxqt-team/qtermwidget Vcs-Git: https://salsa.debian.org/lxqt-team/qtermwidget.git Homepage: https://github.com/lxqt/qtermwidget @@ -46,8 +47,8 @@ Architecture: all Multi-Arch: foreign Depends: ${misc:Depends} -Breaks: qtermwidget-l10n (<< 0.14.1-2~) -Replaces: qtermwidget-l10n (<< 0.14.1-2~) +Breaks: qtermwidget-l10n +Replaces: qtermwidget-l10n Description: Terminal emulator widget for Qt 5 (data files) QTermWidget is a Unicode-enabled, embeddable Qt widget that can be used as built-in console or terminal emulation widget. diff -Nru qtermwidget-0.14.1/debian/libqtermwidget5-0.symbols qtermwidget-0.16.1/debian/libqtermwidget5-0.symbols --- qtermwidget-0.14.1/debian/libqtermwidget5-0.symbols 2019-10-26 19:41:39.000000000 +0000 +++ qtermwidget-0.16.1/debian/libqtermwidget5-0.symbols 2021-01-10 14:32:36.000000000 +0000 @@ -1,7 +1,108 @@ libqtermwidget5.so.0 libqtermwidget5-0 #MINVER# * Build-Depends-Package: libqtermwidget5-0-dev - (c++)"QTermWidget::QTermWidget(QWidget*)@Base" 0.6.0 - (c++)"QTermWidget::QTermWidget(int, QWidget*)@Base" 0.6.0 + (c++)"Konsole::Emulation::bracketedPasteModeChanged(bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::bufferedUpdate()@Base" 0.16.1 + (c++)"Konsole::Emulation::changeTabTextColorRequest(int)@Base" 0.16.1 + (c++)"Konsole::Emulation::clearHistory()@Base" 0.16.1 + (c++)"Konsole::Emulation::createWindow()@Base" 0.16.1 + (c++)"Konsole::Emulation::cursorChanged(Konsole::Emulation::KeyboardCursorShape, bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::~Emulation()@Base" 0.16.1 + (c++)"Konsole::Emulation::Emulation()@Base" 0.16.1 + (c++)"Konsole::Emulation::eraseChar() const@Base" 0.16.1 + (c++)"Konsole::Emulation::flowControlKeyPressed(bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::handleCommandFromKeyboard(Konsole::KeyboardTranslator::Command)@Base" 0.16.1 + (c++)"Konsole::Emulation::history() const@Base" 0.16.1 + (c++)"Konsole::Emulation::imageResizeRequest(QSize const&)@Base" 0.16.1 + (c++)"Konsole::Emulation::imageSizeChanged(int, int)@Base" 0.16.1 + (c++)"Konsole::Emulation::imageSize() const@Base" 0.16.1 + (c++)"Konsole::Emulation::imageSizeInitialized()@Base" 0.16.1 + (c++)"Konsole::Emulation::keyBindings() const@Base" 0.16.1 + (c++)"Konsole::Emulation::lineCount() const@Base" 0.16.1 + (c++)"Konsole::Emulation::lockPtyRequest(bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::metaObject() const@Base" 0.16.1 + (c++)"Konsole::Emulation::outputChanged()@Base" 0.16.1 + (c++)"Konsole::Emulation::profileChangeCommandReceived(QString const&)@Base" 0.16.1 + (c++)"Konsole::Emulation::programBracketedPasteModeChanged(bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::programBracketedPasteMode() const@Base" 0.16.1 + (c++)"Konsole::Emulation::programUsesMouseChanged(bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::programUsesMouse() const@Base" 0.16.1 + (c++)"Konsole::Emulation::qt_metacall(QMetaObject::Call, int, void**)@Base" 0.16.1 + (c++)"Konsole::Emulation::qt_metacast(char const*)@Base" 0.16.1 + (c++)"Konsole::Emulation::receiveChar(wchar_t)@Base" 0.16.1 + (c++)"Konsole::Emulation::receiveData(char const*, int)@Base" 0.16.1 + (c++)"Konsole::Emulation::sendData(char const*, int)@Base" 0.16.1 + (c++)"Konsole::Emulation::sendKeyEvent(QKeyEvent*)@Base" 0.16.1 + (c++)"Konsole::Emulation::sendMouseEvent(int, int, int, int)@Base" 0.16.1 + (c++)"Konsole::Emulation::sendString(char const*, int)@Base" 0.16.1 + (c++)"Konsole::Emulation::setCodec(Konsole::Emulation::EmulationCodec)@Base" 0.16.1 + (c++)"Konsole::Emulation::setCodec(QTextCodec const*)@Base" 0.16.1 + (c++)"Konsole::Emulation::setHistory(Konsole::HistoryType const&)@Base" 0.16.1 + (c++)"Konsole::Emulation::setImageSize(int, int)@Base" 0.16.1 + (c++)"Konsole::Emulation::setKeyBindings(QString const&)@Base" 0.16.1 + (c++)"Konsole::Emulation::setScreen(int)@Base" 0.16.1 + (c++)"Konsole::Emulation::showBulk()@Base" 0.16.1 + (c++)"Konsole::Emulation::stateSet(int)@Base" 0.16.1 + (c++)"Konsole::Emulation::staticMetaObject@Base" 0.16.1 + (c++)"Konsole::Emulation::titleChanged(int, QString const&)@Base" 0.16.1 + (c++)"Konsole::Emulation::usesMouseChanged(bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::useUtf8Request(bool)@Base" 0.16.1 + (c++)"Konsole::Emulation::writeToStream(Konsole::TerminalCharacterDecoder*, int, int)@Base" 0.16.1 + (c++)"Konsole::Emulation::zmodemDetected()@Base" 0.16.1 + (c++)"Konsole::Filter::addHotSpot(Konsole::Filter::HotSpot*)@Base" 0.16.1 + (c++)"Konsole::Filter::buffer()@Base" 0.16.1 + (c++)"Konsole::FilterChain::addFilter(Konsole::Filter*)@Base" 0.16.1 + (c++)"Konsole::FilterChain::clear()@Base" 0.16.1 + (c++)"Konsole::FilterChain::containsFilter(Konsole::Filter*)@Base" 0.16.1 + (c++)"Konsole::FilterChain::~FilterChain()@Base" 0.16.1 + (c++)"Konsole::FilterChain::hotSpotAt(int, int) const@Base" 0.16.1 + (c++)"Konsole::FilterChain::hotSpots() const@Base" 0.16.1 + (c++)"Konsole::FilterChain::process()@Base" 0.16.1 + (c++)"Konsole::FilterChain::removeFilter(Konsole::Filter*)@Base" 0.16.1 + (c++)"Konsole::FilterChain::reset()@Base" 0.16.1 + (c++)"Konsole::FilterChain::setBuffer(QString const*, QList const*)@Base" 0.16.1 + (c++)"Konsole::Filter::~Filter()@Base" 0.16.1 + (c++)"Konsole::Filter::Filter()@Base" 0.16.1 + (c++)"Konsole::Filter::getLineColumn(int, int&, int&)@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::actions()@Base" 0.16.1 + (c++)"Konsole::Filter::hotSpotAt(int, int) const@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::endColumn() const@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::endLine() const@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::~HotSpot()@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::HotSpot(int, int, int, int)@Base" 0.16.1 + (c++)"Konsole::Filter::hotSpotsAtLine(int) const@Base" 0.16.1 + (c++)"Konsole::Filter::hotSpots() const@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::setType(Konsole::Filter::HotSpot::Type)@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::startColumn() const@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::startLine() const@Base" 0.16.1 + (c++)"Konsole::Filter::HotSpot::type() const@Base" 0.16.1 + (c++)"Konsole::Filter::reset()@Base" 0.16.1 + (c++)"Konsole::Filter::setBuffer(QString const*, QList const*)@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::HotSpot::activate(QString const&)@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::HotSpot::capturedTexts() const@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::HotSpot::HotSpot(int, int, int, int)@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::HotSpot::setCapturedTexts(QStringList const&)@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::newHotSpot(int, int, int, int)@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::process()@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::regExp() const@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::RegExpFilter()@Base" 0.16.1 + (c++)"Konsole::RegExpFilter::setRegExp(QRegExp const&)@Base" 0.16.1 + (c++)"Konsole::UrlFilter::activated(QUrl const&, bool)@Base" 0.16.1 + (c++)"Konsole::UrlFilter::CompleteUrlRegExp@Base" 0.16.1 + (c++)"Konsole::UrlFilter::EmailAddressRegExp@Base" 0.16.1 + (c++)"Konsole::UrlFilter::FullUrlRegExp@Base" 0.16.1 + (c++)"Konsole::UrlFilter::HotSpot::actions()@Base" 0.16.1 + (c++)"Konsole::UrlFilter::HotSpot::activate(QString const&)@Base" 0.16.1 + (c++)"Konsole::UrlFilter::HotSpot::getUrlObject() const@Base" 0.16.1 + (c++)"Konsole::UrlFilter::HotSpot::~HotSpot()@Base" 0.16.1 + (c++)"Konsole::UrlFilter::HotSpot::HotSpot(int, int, int, int)@Base" 0.16.1 + (c++)"Konsole::UrlFilter::HotSpot::urlType() const@Base" 0.16.1 + (c++)"Konsole::UrlFilter::metaObject() const@Base" 0.16.1 + (c++)"Konsole::UrlFilter::newHotSpot(int, int, int, int)@Base" 0.16.1 + (c++)"Konsole::UrlFilter::qt_metacall(QMetaObject::Call, int, void**)@Base" 0.16.1 + (c++)"Konsole::UrlFilter::qt_metacast(char const*)@Base" 0.16.1 + (c++)"Konsole::UrlFilter::staticMetaObject@Base" 0.16.1 + (c++)"Konsole::UrlFilter::UrlFilter()@Base" 0.16.1 + (c++)"non-virtual thunk to QTermWidget::~QTermWidget()@Base" 0.6.0 (c++)"QTermWidget::activity()@Base" 0.6.0 (c++)"QTermWidget::addCustomColorSchemeDir(QString const&)@Base" 0.7.0 (c++)"QTermWidget::availableColorSchemes()@Base" 0.6.0 @@ -19,8 +120,8 @@ (c++)"QTermWidget::findPrevious()@Base" 0.6.0 (c++)"QTermWidget::finished()@Base" 0.6.0 (c++)"QTermWidget::flowControlEnabled()@Base" 0.6.0 - (c++)"QTermWidget::getHotSpotAt(QPoint const&) const@Base" 0.6.0 (c++)"QTermWidget::getHotSpotAt(int, int) const@Base" 0.6.0 + (c++)"QTermWidget::getHotSpotAt(QPoint const&) const@Base" 0.6.0 (c++)"QTermWidget::getMargin() const@Base" 0.14.0~ (c++)"QTermWidget::getPtySlaveFd() const@Base" 0.6.0 (c++)"QTermWidget::getSelectionEnd(int&, int&)@Base" 0.6.0 @@ -39,10 +140,14 @@ (c++)"QTermWidget::pasteClipboard()@Base" 0.6.0 (c++)"QTermWidget::pasteSelection()@Base" 0.6.0 (c++)"QTermWidget::profileChanged(QString const&)@Base" 0.8.0 + (c++)"QTermWidget::~QTermWidget()@Base" 0.6.0 + (c++)"QTermWidget::QTermWidget(int, QWidget*)@Base" 0.6.0 + (c++)"QTermWidget::QTermWidget(QWidget*)@Base" 0.6.0 (c++)"QTermWidget::qt_metacall(QMetaObject::Call, int, void**)@Base" 0.6.0 (c++)"QTermWidget::qt_metacast(char const*)@Base" 0.6.0 (c++)"QTermWidget::receivedData(QString const&)@Base" 0.8.0 (c++)"QTermWidget::resizeEvent(QResizeEvent*)@Base" 0.6.0 + (c++)"QTermWidget::saveHistory(QIODevice*)@Base" 0.16.1 (c++)"QTermWidget::screenColumnsCount()@Base" 0.6.0 (c++)"QTermWidget::screenLinesCount()@Base" 0.6.0 (c++)"QTermWidget::scrollToEnd()@Base" 0.6.0 @@ -50,13 +155,16 @@ (c++)"QTermWidget::selectedText(bool)@Base" 0.6.0 (c++)"QTermWidget::selectionChanged(bool)@Base" 0.6.0 (c++)"QTermWidget::sendData(char const*, int)@Base" 0.6.0 + (c++)"QTermWidget::sendKeyEvent(QKeyEvent*)@Base" 0.16.1 (c++)"QTermWidget::sendText(QString const&)@Base" 0.6.0 (c++)"QTermWidget::sessionFinished()@Base" 0.6.0 (c++)"QTermWidget::setArgs(QStringList const&)@Base" 0.6.0 (c++)"QTermWidget::setAutoClose(bool)@Base" 0.8.0 (c++)"QTermWidget::setBidiEnabled(bool)@Base" 0.9.0~ (c++)"QTermWidget::setBlinkingCursor(bool)@Base" 0.8.0 + (c++)"QTermWidget::setBoldIntense(bool)@Base" 0.16.1 (c++)"QTermWidget::setColorScheme(QString const&)@Base" 0.6.0 + (c++)"QTermWidget::setDrawLineChars(bool)@Base" 0.16.1 (c++)"QTermWidget::setEnvironment(QStringList const&)@Base" 0.6.0 (c++)"QTermWidget::setFlowControlEnabled(bool)@Base" 0.6.0 (c++)"QTermWidget::setFlowControlWarningEnabled(bool)@Base" 0.6.0 @@ -73,7 +181,7 @@ (c++)"QTermWidget::setShellProgram(QString const&)@Base" 0.6.0 (c++)"QTermWidget::setSilenceTimeout(int)@Base" 0.6.0 (c++)"QTermWidget::setSize(QSize const&)@Base" 0.6.0 - (c++)"QTermWidget::setTerminalBackgroundImage(QString)@Base" 0.7.1 + (c++)"QTermWidget::setTerminalBackgroundImage(QString const&)@Base" 0.16.1 (c++)"QTermWidget::setTerminalFont(QFont const&)@Base" 0.6.0 (c++)"QTermWidget::setTerminalOpacity(double)@Base" 0.6.0 (c++)"QTermWidget::setTerminalSizeHint(bool)@Base" 0.9.0~ @@ -86,19 +194,41 @@ (c++)"QTermWidget::startTerminalTeletype()@Base" 0.6.0 (c++)"QTermWidget::staticMetaObject@Base" 0.6.0 (c++)"QTermWidget::termGetFocus()@Base" 0.6.0 + (c++)"QTermWidget::terminalSizeHint()@Base" 0.9.0~ (c++)"QTermWidget::termKeyPressed(QKeyEvent*)@Base" 0.6.0 (c++)"QTermWidget::termLostFocus()@Base" 0.6.0 - (c++)"QTermWidget::terminalSizeHint()@Base" 0.9.0~ - (c++)"QTermWidget::title() const@Base" 0.7.0 (c++)"QTermWidget::titleChanged()@Base" 0.7.0 + (c++)"QTermWidget::title() const@Base" 0.7.0 (c++)"QTermWidget::toggleShowSearchBar()@Base" 0.6.0 (c++)"QTermWidget::urlActivated(QUrl const&, bool)@Base" 0.7.1 (c++)"QTermWidget::workingDirectory()@Base" 0.6.0 (c++)"QTermWidget::zoomIn()@Base" 0.6.0 (c++)"QTermWidget::zoomOut()@Base" 0.6.0 - (c++)"QTermWidget::~QTermWidget()@Base" 0.6.0 - (c++)"non-virtual thunk to QTermWidget::~QTermWidget()@Base" 0.6.0 + (c++)"typeinfo for Konsole::Emulation@Base" 0.16.1 + (c++)"typeinfo for Konsole::Filter@Base" 0.16.1 + (c++)"typeinfo for Konsole::FilterChain@Base" 0.16.1 + (c++)"typeinfo for Konsole::Filter::HotSpot@Base" 0.16.1 + (c++)"typeinfo for Konsole::RegExpFilter@Base" 0.16.1 + (c++)"typeinfo for Konsole::RegExpFilter::HotSpot@Base" 0.16.1 + (c++)"typeinfo for Konsole::UrlFilter@Base" 0.16.1 + (c++)"typeinfo for Konsole::UrlFilter::HotSpot@Base" 0.16.1 (c++)"typeinfo for QTermWidget@Base" 0.6.0 + (c++)"typeinfo name for Konsole::Emulation@Base" 0.16.1 + (c++)"typeinfo name for Konsole::Filter@Base" 0.16.1 + (c++)"typeinfo name for Konsole::FilterChain@Base" 0.16.1 + (c++)"typeinfo name for Konsole::Filter::HotSpot@Base" 0.16.1 + (c++)"typeinfo name for Konsole::RegExpFilter@Base" 0.16.1 + (c++)"typeinfo name for Konsole::RegExpFilter::HotSpot@Base" 0.16.1 + (c++)"typeinfo name for Konsole::UrlFilter@Base" 0.16.1 + (c++)"typeinfo name for Konsole::UrlFilter::HotSpot@Base" 0.16.1 (c++)"typeinfo name for QTermWidget@Base" 0.6.0 - (optional|c++)"void std::__cxx11::basic_string, std::allocator >::_M_construct(wchar_t const*, wchar_t const*, std::forward_iterator_tag)@Base" 0.9.0~ + (c++)"vtable for Konsole::Emulation@Base" 0.16.1 + (c++)"vtable for Konsole::Filter@Base" 0.16.1 + (c++)"vtable for Konsole::FilterChain@Base" 0.16.1 + (c++)"vtable for Konsole::Filter::HotSpot@Base" 0.16.1 + (c++)"vtable for Konsole::RegExpFilter@Base" 0.16.1 + (c++)"vtable for Konsole::RegExpFilter::HotSpot@Base" 0.16.1 + (c++)"vtable for Konsole::UrlFilter@Base" 0.16.1 + (c++)"vtable for Konsole::UrlFilter::HotSpot@Base" 0.16.1 (c++)"vtable for QTermWidget@Base" 0.6.0 + (optional|c++)"void std::__cxx11::basic_string, std::allocator >::_M_construct(wchar_t const*, wchar_t const*, std::forward_iterator_tag)@Base" 0.9.0~ diff -Nru qtermwidget-0.14.1/debian/upstream/signing-key.asc qtermwidget-0.16.1/debian/upstream/signing-key.asc --- qtermwidget-0.14.1/debian/upstream/signing-key.asc 2019-02-25 23:58:29.000000000 +0000 +++ qtermwidget-0.16.1/debian/upstream/signing-key.asc 2021-01-10 14:32:36.000000000 +0000 @@ -1,50 +1,53 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: Signed by Sophie Brun -mQINBFXQeMMBEACif4+9pTrC6uNmRng0ZbzLh7p3cazmbnp2YFgDQDJZ7ZNmebxy -ngRuRhjGuDcFAL/37BwJnrBpfZFK9ljoH4Fo5Jm9cOELaTy7AIcEiV9dKMyrKF1E -C76d8jHVuzuPbI92DkFdLZAdk+qjrrAy0x43PvUd+aaBGLcFs1ZMk7gOvElc2d95 -zWWSp5anjukmGbp+EsStnWJkF6VHj56qmklfYy5ioiVBOSpXo/RsACAcIlz8C8A1 -d4tNMiB2uF2OrUfrL8DD6m3nBqep+AYbIQrxMl9kUQH3I33e9kH/L+SHQyE6phS8 -Czq06WjV4TcJ9VWxm7hQCNLYSxhZYYr1AW45lS5+xmfBOq2qeLgvjbFxa8PPrsp6 -Bqgt8MjwUkXjU5IB7YulUBvFU2l0MJZWDBuNy0oNtCe1cU3JyIqLKjvzQQQ9eD5L -o3Ul704TLHz0z+67Rxh05Mi4JvyFMjnooSJkNH8/7yXoBN0ZGOh1/5zMU1gK5bmP -6hKgis2exSZNIS74mF6/PqGgcwk3PyI4T3keUQoNPj11M2EznLHxY19QZfQ5oMed -8xOlHKjpcm8PYMB4gduNXlV7gI9h7UxuC5GuPiP2lmM6wUyHu48divxDk5UYgPEC -xlPI2wHCNDsuy0EruCYIvrMSZfpYCCSrmXiOORBLO5qXkauILLkJarHqjQARAQAB -tCBBbGYgR2FpZGEgPGFnYWlkYUBzaWR1Y3Rpb24ub3JnPokCOAQTAQIAIgUCVdB4 -wwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQQsnI069epeOT2xAAgSHf -41103cnElGf6TokPl4J6hdRPy2CUAjmBtMfr8eajYvGDGgnmsh9AGYGURjfFVCCf -Ag+8b6nF3xg03UmgsuSO8H78HGv9kKzF9aHmLt+SXq3jUX+LnIkFHErZWjFAKdJr -luu1j6ltxLe9PQljxZnugzMaUbW8eEPKvcriiDn3S4/DtikW/jpGA0MTY4ZWs9pZ -L/6iRRH99L2X/cWO4sCgDXCTt4oK0f5OvwiuCoVOM+PYoIm31JICCKOlqamkCn7d -2KH3nsy0v7tXgnrnb/zr8jVGsZLzUE51AFOzb5Ec74/2SAq8X4gbTppttLXEIooq -nbepitW/PePkPY5gpfwHtFbl88qFnir+ABMefqRZkzeh0tsxJVLVHGP1KZykXpv7 -96A6Q1h7Zo9Ny7WwN5Xl02g35LVCaPyzd3A8A4315uMuP3iziq57UktKqh9d5S3t -jfK7e9UfFQZBLfxn2sNPsjdYSNUQp/PXTTk/599h359WVuUIR866T8K7N7EEon3p -qLItZljQ9Nmr/yGwKi9iQgi2LtZj5KUcF1zBLzZKf95FvoqSZqBXdFSjm+eYGaCH -Q2IBnhyP92lEknSK9ystUJXmY69tQKBFqJxScwaS+7a/rfLKssQjSWxqk+SX4QeW -e9z9FUpo71bq0Zkc/M9aOCoEEmhg4Ob/JWy08oC5Ag0EVdB4wwEQAKZDCc/C41y0 -omLFCAJybvHiFScM+jOpyGpQvceoviEhIT7h1br/pnSEMkgPQEDPWJGtKueg1/94 -sXTH24uefr3Y6JdZoBtprxl4JXUoOndgq1QH1xuUsy3/9YWU8Qboy9j8a8w0oCDE -T8Z03KHCwqzD3K+44jhmhF+0eLoaaY8ohS8ziP+DcFKVHyatmS5yCCdjVrj6PxMp -uy/y5SXT1kmiPdVAIzQlM5DlN6o46TV+BH0pPvVYjtwf31o0FckJxy5S1v0koCNB -vX2b7tTDPKzn8G18eUVhGoUTZBUCp1gg36wJ0YY4xgZ9vI/xDCeHeAkyvGtaTAoy -qP4rHoUO5KVRSDh7frSlrdbLGWHaQwOhcqoKd4qP/164wHPGkgHL1vztdOc7l1wx -q3gMh2uwmJR0NRrw4WVuaIqL9lEbGBNijlmGsuqXfsMRhc/qoqgVDWvrcCtEoOwl -TONGobW3jpCCjpa9SeGNjxuY6IVLn0lfX4hItNVY9sFA+H+yj4uBQ7zsmMUXafxt -Yllm0f98yGNg5lnJg4bLOYu3IkpogUKNA3qkZ+6vRtwH70/bJGp7qdx/3G4W5dMX -asd/rJjdELW+R/NVULAmK1ETSklaa3Z6vbTu8bN8gvP8pmMJ8f/U8+qzkuAqc201 -Z4O+s7ZsQfTiz5mm7zPGIYTnppDSno/rABEBAAGJAh8EGAECAAkFAlXQeMMCGwwA -CgkQQsnI069epeMt0g/+JrwLhULD6NOxaLgxboh/KZkh/7ViU4cB+QPT8JIcWxkZ -zj8uk85TUitEUzKmjp/ItCrhQE5WNNWbz/FBnAuLtaQuHhcHMA3Vu95UUCGi1vyZ -ZRlS3YRM6S9BOzrjG7fGQJmO/RU3g6rb0TAwGFxDHj8t4JEDTc3zASG7wV/VTn06 -d8XIH9CZOw3kUuhkQ3OR/PEj1BCeCC+caC+tBjO0fgvDp8RV7NFQQ9kH8R3/xlWd -6KMPtILE6fUft6LubWRGd1P5JBuzXivELolASajewbYtL/s87CCji3ngq0aT9raK -m02wqFzNbX1iv+w2iqPQXq6pdRyxtJ8+Q8Z7zEBGJS5nkrYjsLTduZIjJHYHYH7f -3/ydVjQ3z12iqHKElgaRI7RUmpNiNxVIr+TtuxzeC6G+CF++XNkUtJODvCmRaoJS -waYsitz8+LSv3tawZJ0iQkKc9nerQMuBD+AzIr3i4NgXiEIN513esUtnKzeyIIsL -ntUcBjXKuLCj8OZrZtexjq7edWWbN57/3ikyS2Z7y0i3O30qk5jmccSaS6kA7xTY -WCDFzbN2v2y+vGu9KYn+2HtrP2BtNa8JTh3waNeLUTpn4GV4mMrsZjOy6vhhHb91 -1TKfI1gvjk7lE9xaWmcDjdI55dw3jIq8kK9SdgORGq9/S3g7KJNRjme+6GjqQfk= -=h7ww +mQINBF6cxrwBEADfl3ydxNfLBbWGPesXty2baQgixZ3D6aCxadI2kX+aikmT8rd0 +ttDKN18cXV52Ssxnj0qhgf4hwnu/b0be6BzqSEyGM+UQR3X2CYpxrMakfW32Q18K +X5ec0RPR2ucBq9G0r9t6FYC8FkJ4uQUU3xxrLW3z302S0Makjgzm8BV9WrFQ7oFF +uJQj0BHbHYC4RyaZb2AfxY4Y92BPGTjtGekWqgw6vEXCCnvAbGYVQzvxZt3nw21/ +1YmV4g7xhGFQPbOf9v3ejFUJeJIGzuJf5NAh7kvfCdUBAGYH0gnj0GpOve4ftnaG +sAId2CQwm3oYF4Tu7yBPTOBpkaKkNaT+UdwTyeKERuCZ9ocZWX++/YF9ItRkJ5mM +zoP1GluWn2atNWpRh/K97gyAGgr2fSmrAA4d1JrVbMujZAHoHAOKwJKqX9jPziPZ +BFHfhcIOzG3ZhXAuumHsd7uwfPBVt20g+G+cOjBghbSSu9EOtMkAZl1g3ybvZixu +Jtxa5exZWEmU7vtytEb8eq9Dj5XcGoTDbErE2RpJ/20HPzhyRKg9RN4iGS+0OiHS +oRbDi5IEOizvQjp2bsBmfa3rsoDSOqF2pevp+u8I56I6bU1GFpxxNC5IGvgo2Q79 +quz0oIk5hs3eLlUdEYsLGwR6pWJaJyf36vuDsq7iLrLyvHI5irAowO4r1QARAQAB +tCVQZWRyYW0gUG91cmFuZyA8dHN1amFuMjAwMEBnbWFpbC5jb20+iQJOBBMBCAA4 +FiEEGd/fOleb1QnbtXLYvnkwB60i334FAl6cxrwCGwMFCwkIBwIGFQoJCAsCBBYC +AwECHgECF4AACgkQvnkwB60i335f9RAAgRpn8gUa/l10UkVAnpM2Cz0MuNMwwCOq +IfVnuZuPBtYYiTU5Su++/aPZe3fF5B4v61F+XjNi7qeVL2t52X3jZ/iIx9Syasb+ +vDAIfQ5t6lKXvOptWxf6vteOg6CHbXwpGHbPjUkUS2vQwRikjBnR0SnkrMoXtgSX +amPFqsitNrOhEJfeDfo0NzKESZuliWrCFt2v8c5q18G8cCZAvPLBlGuwRl58cDep +3EIibMI/9MUSJbKoiHlK+LcHtG7BQTNis/e7Pe1PkRmExfhxe1lNajtOx8FO72Tq +B6zY6drippM9VaIc1M+zp9BRpsFu8whOmapCqlXHRgAK8xTdQRIGInQFqLWPOxSC +f0B6N+EvQvgkyFQ1rW+u91OJBma46uKkhrwf+mDttVRncaIAkgE6e6pqm18yIPFk +D42rt/yHcOl+2qkcJS3gPcg5UvlCzqOwg1rKZQIk+TcPuDx3r2UghDEYZN9X6vw3 +zCBufr7ygZNf4tkbnVARFWTR4GzyCseFkWgOVZL9DccAhs8NeMy1WLkUzB75adeR +3LONmEL7xOI8FuknKY4e6EcWhmstNIDgXfRe0hwO0VBdW3unoZC/K2ZM/ZuZyMdK +TFjvYJrNewmymKge68wo0054bGZn8oz17i2AosJz7kW+ITsxmxhVcpfl4bav9Neq +RpQwhnhK9bC5Ag0EXpzGvAEQANbeRHFbpgQVIqV9WVOVnTj4FIqrTPTPKKa02vJA +7tGpgFapgvjdxnMxJfV6wuwOBUUFLR7DrXlV8EVFAYc5qTIeSQXvJsWw6gQ3+f0D +z13oGOhZPBIzIKnV/MZI/jhIio8kSPWAuM5hR2X9Hvw3/CLo+H+hZZ6cFYoCxrQS +tTzcKMkdQizLLa+WNbqUSxg6I/P5k/smUDY9gKW7RtI5t/PupA3WTnsVD6CYWa3Q +c1O/1mUgqT6nQ5N9KCPpjZQRT6D6eIMmePtS85z4PPeYMJxPsKRYWPGRxKhCSdZl +/0wsC8aRtmwYT729e0ZgTAmUnj+rQp5hboF/ZPFjIoXR9G+0HnoY0a/nqVO4lUON +AV25GnMFGVyiHHlbH/0gboywwnzEg8BZbk+Z/61oOzBIW09sfG8fn8bsbkpL+nHf +Mi/Vauge6wSfw7I5AfSiwrSDNHmKVsu39koWV6JGxEeFr2MffF+CuaoJCNOr/ZII +SYR5ku3Y/lMKyUH1Oas0RWzFrdRcInqYK90A0x083zP4V445MvCwbRPzQAkm9wOP +kILLhE5FW+9/O0/9bpx4joJUDLV4d3hFZy7GSHKiZUs1QW6BV75JQKqoi+cVt+/L ++o1S8CMNekjqdC2mWRosM3doo51zT/FWNzQA1QcoZP2hORJDfw66y+4wPq6o8y1W +jR35ABEBAAGJAjYEGAEIACAWIQQZ3986V5vVCdu1cti+eTAHrSLffgUCXpzGvAIb +DAAKCRC+eTAHrSLffgbJD/4qW5YOo/BayBhaUh2L7VP7JNlECb/2xNNOFKI1NjNr +nOmgSJLzf74Uhmt5W+iVjmJBHrDceprIPkizmPrn90kIsPIMtHIDNxzUgKZHbnza +j1vZyAeC+JV79X1hOVpprj1TJwy65lpxXNyYnGqeIOgyFokn9fOHXv8aMQwpNuUr +bdUJ1C75jYrvwy/NR1DczIFFYgsbkDGDtjVBjyMc5JAgvUBz37/iVPJfWP6dKVnf +abRnUVzHgvgK7bnab00SA1TiWvjHURGjo+5rnRtv8X/AgStc2Phjq68TMIgMn0F2 +kjUVvfQotNqzo9madNshvUDmsGtAzKh4e0dS1ear7u3nRp4Z7fqSrTEtXKNbEPwZ +wdWrWmmQLacNQBSe/FtcMzGF6xIVr4lnrL0bFjqBdQpdTC7vns3QSKk8/GFiEfpv +kzXrDbGV7jX2OWDjNHKcmXX2+E1CsNaJgS7zOgZw5jvbvlTLJUwyYNlM1VLI2OFW +Oa86l8pqli+B7rpTbsAE9Ut8qUaWjm87oUNSJbaKgqNnMaE+b/8VJaEeWHgQJwsD +bJSJ/O/vzlRtDjOJ1JDlMRLs7TnOFeUh5pgwyaJoidYbJEiGlMGJbI6BjwhDTBFO +NLJtd3SsRjc7ICtGdCvej59IvCDTjxtkhx5okF03APi1aXpHQrE18/arFD7BpoGO +sw== +=gSIv -----END PGP PUBLIC KEY BLOCK----- diff -Nru qtermwidget-0.14.1/example/main.cpp qtermwidget-0.16.1/example/main.cpp --- qtermwidget-0.14.1/example/main.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/example/main.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -28,25 +28,30 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); - QIcon::setThemeName("oxygen"); + QIcon::setThemeName(QStringLiteral("oxygen")); QMainWindow *mainWindow = new QMainWindow(); QTermWidget *console = new QTermWidget(); QMenuBar *menuBar = new QMenuBar(mainWindow); - QMenu *actionsMenu = new QMenu("Actions", menuBar); + QMenu *actionsMenu = new QMenu(QStringLiteral("Actions"), menuBar); menuBar->addMenu(actionsMenu); - actionsMenu->addAction("Find..", console, SLOT(toggleShowSearchBar()), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_F)); - actionsMenu->addAction("About Qt", &app, SLOT(aboutQt())); + actionsMenu->addAction(QStringLiteral("Find..."), console, &QTermWidget::toggleShowSearchBar, + QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_F)); + actionsMenu->addAction(QStringLiteral("Copy"), console, &QTermWidget::copyClipboard, + QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_C)); + actionsMenu->addAction(QStringLiteral("Paste"), console, &QTermWidget::pasteClipboard, + QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_V)); + actionsMenu->addAction(QStringLiteral("About Qt"), &app, &QApplication::aboutQt); mainWindow->setMenuBar(menuBar); QFont font = QApplication::font(); -#ifdef Q_WS_MAC - font.setFamily("Monaco"); +#ifdef Q_OS_MACOS + font.setFamily(QStringLiteral("Monaco")); #elif defined(Q_WS_QWS) - font.setFamily("fixed"); + font.setFamily(QStringLiteral("fixed")); #else - font.setFamily("Monospace"); + font.setFamily(QStringLiteral("Monospace")); #endif font.setPointSize(12); @@ -75,7 +80,7 @@ qDebug() << "* INFO END *********************"; // real startup - QObject::connect(console, SIGNAL(finished()), mainWindow, SLOT(close())); + QObject::connect(console, &QTermWidget::finished, mainWindow, &QMainWindow::close); mainWindow->show(); return app.exec(); diff -Nru qtermwidget-0.14.1/lib/BlockArray.cpp qtermwidget-0.16.1/lib/BlockArray.cpp --- qtermwidget-0.14.1/lib/BlockArray.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/BlockArray.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -30,7 +30,7 @@ #include #include #include -#include +#include using namespace Konsole; @@ -41,9 +41,9 @@ : size(0), current(size_t(-1)), index(size_t(-1)), - lastmap(0), + lastmap(nullptr), lastmap_index(size_t(-1)), - lastblock(0), ion(-1), + lastblock(nullptr), ion(-1), length(0) { // lastmap_index = index = current = size_t(-1); @@ -138,7 +138,7 @@ if (i > index) { qDebug() << "BlockArray::at() i > index\n"; - return 0; + return nullptr; } // if (index - i >= length) { @@ -151,11 +151,11 @@ Q_ASSERT(j < size); unmap(); - Block * block = (Block *)mmap(0, blocksize, PROT_READ, MAP_PRIVATE, ion, j * blocksize); + Block * block = (Block *)mmap(nullptr, blocksize, PROT_READ, MAP_PRIVATE, ion, j * blocksize); if (block == (Block *)-1) { perror("mmap"); - return 0; + return nullptr; } lastmap = block; @@ -172,7 +172,7 @@ perror("munmap"); } } - lastmap = 0; + lastmap = nullptr; lastmap_index = size_t(-1); } @@ -193,7 +193,7 @@ if (!newsize) { delete lastblock; - lastblock = 0; + lastblock = nullptr; if (ion >= 0) { close(ion); } diff -Nru qtermwidget-0.14.1/lib/BlockArray.h qtermwidget-0.16.1/lib/BlockArray.h --- qtermwidget-0.14.1/lib/BlockArray.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/BlockArray.h 2020-11-14 09:10:48.000000000 +0000 @@ -27,8 +27,8 @@ //#error Do not use in KDE 2.1 -#define BlockSize (1 << 12) -#define ENTRIES ((BlockSize - sizeof(size_t) ) / sizeof(unsigned char)) +#define QTERMWIDGET_BLOCKSIZE (1 << 12) +#define ENTRIES ((QTERMWIDGET_BLOCKSIZE - sizeof(size_t) ) / sizeof(unsigned char)) namespace Konsole { diff -Nru qtermwidget-0.14.1/lib/CharacterColor.h qtermwidget-0.16.1/lib/CharacterColor.h --- qtermwidget-0.14.1/lib/CharacterColor.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/CharacterColor.h 2020-11-14 09:10:48.000000000 +0000 @@ -78,16 +78,6 @@ */ ColorEntry() : transparent(false), fontWeight(UseCurrentFormat) {} - /** - * Sets the color, transparency and boldness of this color to those of @p rhs. - */ - void operator=(const ColorEntry& rhs) - { - color = rhs.color; - transparent = rhs.transparent; - fontWeight = rhs.fontWeight; - } - /** The color value of this entry for display. */ QColor color; @@ -278,7 +268,7 @@ case COLOR_SPACE_DEFAULT: return base[_u+0+(_v?BASE_COLORS:0)].color; case COLOR_SPACE_SYSTEM: return base[_u+2+(_v?BASE_COLORS:0)].color; case COLOR_SPACE_256: return color256(_u,base); - case COLOR_SPACE_RGB: return QColor(_u,_v,_w); + case COLOR_SPACE_RGB: return {_u,_v,_w}; case COLOR_SPACE_UNDEFINED: return QColor(); } diff -Nru qtermwidget-0.14.1/lib/ColorScheme.cpp qtermwidget-0.16.1/lib/ColorScheme.cpp --- qtermwidget-0.14.1/lib/ColorScheme.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/ColorScheme.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -48,27 +48,27 @@ // gamma correction for the dim colors to compensate for bright X screens. // It contains the 8 ansiterm/xterm colors in 2 intensities. { - ColorEntry( QColor(0x00,0x00,0x00), 0), ColorEntry( -QColor(0xFF,0xFF,0xFF), 1), // Dfore, Dback - ColorEntry( QColor(0x00,0x00,0x00), 0), ColorEntry( -QColor(0xB2,0x18,0x18), 0), // Black, Red - ColorEntry( QColor(0x18,0xB2,0x18), 0), ColorEntry( -QColor(0xB2,0x68,0x18), 0), // Green, Yellow - ColorEntry( QColor(0x18,0x18,0xB2), 0), ColorEntry( -QColor(0xB2,0x18,0xB2), 0), // Blue, Magenta - ColorEntry( QColor(0x18,0xB2,0xB2), 0), ColorEntry( -QColor(0xB2,0xB2,0xB2), 0), // Cyan, White + ColorEntry( QColor(0x00,0x00,0x00), false), ColorEntry( +QColor(0xFF,0xFF,0xFF), true), // Dfore, Dback + ColorEntry( QColor(0x00,0x00,0x00), false), ColorEntry( +QColor(0xB2,0x18,0x18), false), // Black, Red + ColorEntry( QColor(0x18,0xB2,0x18), false), ColorEntry( +QColor(0xB2,0x68,0x18), false), // Green, Yellow + ColorEntry( QColor(0x18,0x18,0xB2), false), ColorEntry( +QColor(0xB2,0x18,0xB2), false), // Blue, Magenta + ColorEntry( QColor(0x18,0xB2,0xB2), false), ColorEntry( +QColor(0xB2,0xB2,0xB2), false), // Cyan, White // intensive - ColorEntry( QColor(0x00,0x00,0x00), 0), ColorEntry( -QColor(0xFF,0xFF,0xFF), 1), - ColorEntry( QColor(0x68,0x68,0x68), 0), ColorEntry( -QColor(0xFF,0x54,0x54), 0), - ColorEntry( QColor(0x54,0xFF,0x54), 0), ColorEntry( -QColor(0xFF,0xFF,0x54), 0), - ColorEntry( QColor(0x54,0x54,0xFF), 0), ColorEntry( -QColor(0xFF,0x54,0xFF), 0), - ColorEntry( QColor(0x54,0xFF,0xFF), 0), ColorEntry( -QColor(0xFF,0xFF,0xFF), 0) + ColorEntry( QColor(0x00,0x00,0x00), false), ColorEntry( +QColor(0xFF,0xFF,0xFF), true), + ColorEntry( QColor(0x68,0x68,0x68), false), ColorEntry( +QColor(0xFF,0x54,0x54), false), + ColorEntry( QColor(0x54,0xFF,0x54), false), ColorEntry( +QColor(0xFF,0xFF,0x54), false), + ColorEntry( QColor(0x54,0x54,0xFF), false), ColorEntry( +QColor(0xFF,0x54,0xFF), false), + ColorEntry( QColor(0x54,0xFF,0xFF), false), ColorEntry( +QColor(0xFF,0xFF,0xFF), false) }; const char* const ColorScheme::colorNames[TABLE_COLORS] = @@ -122,25 +122,25 @@ ColorScheme::ColorScheme() { - _table = 0; - _randomTable = 0; + _table = nullptr; + _randomTable = nullptr; _opacity = 1.0; } ColorScheme::ColorScheme(const ColorScheme& other) : _opacity(other._opacity) - ,_table(0) - ,_randomTable(0) + ,_table(nullptr) + ,_randomTable(nullptr) { setName(other.name()); setDescription(other.description()); - if ( other._table != 0 ) + if ( other._table != nullptr ) { for ( int i = 0 ; i < TABLE_COLORS ; i++ ) setColorTableEntry(i,other._table[i]); } - if ( other._randomTable != 0 ) + if ( other._randomTable != nullptr ) { for ( int i = 0 ; i < TABLE_COLORS ; i++ ) { @@ -185,7 +185,7 @@ ColorEntry entry = colorTable()[index]; if ( randomSeed != 0 && - _randomTable != 0 && + _randomTable != nullptr && !_randomTable[index].isNull() ) { const RandomizationRange& range = _randomTable[index]; @@ -213,7 +213,7 @@ } bool ColorScheme::randomizedBackgroundColor() const { - return _randomTable == 0 ? false : !_randomTable[1].isNull(); + return _randomTable == nullptr ? false : !_randomTable[1].isNull(); } void ColorScheme::setRandomizedBackgroundColor(bool randomize) { @@ -238,7 +238,7 @@ Q_ASSERT( hue <= MAX_HUE ); Q_ASSERT( index >= 0 && index < TABLE_COLORS ); - if ( _randomTable == 0 ) + if ( _randomTable == nullptr ) _randomTable = new RandomizationRange[TABLE_COLORS]; _randomTable[index].hue = hue; @@ -594,7 +594,7 @@ } void ColorSchemeManager::loadAllColorSchemes() { - qDebug() << "loadAllColorSchemes"; + //qDebug() << "loadAllColorSchemes"; int failed = 0; QList nativeColorSchemes = listColorSchemes(); @@ -613,8 +613,8 @@ failed++; } - if ( failed > 0 ) - qDebug() << "failed to load " << failed << " color schemes."; + /*if ( failed > 0 ) + qDebug() << "failed to load " << failed << " color schemes.";*/ _haveLoadedAll = true; } @@ -640,7 +640,7 @@ if (scheme->name().isEmpty()) { - qDebug() << "color scheme name is not valid."; + //qDebug() << "color scheme name is not valid."; delete scheme; return false; } @@ -651,8 +651,8 @@ _colorSchemes.insert(scheme->name(),scheme); else { - qDebug() << "color scheme with name" << scheme->name() << "has already been" << - "found, ignoring."; + /*qDebug() << "color scheme with name" << scheme->name() << "has already been" << + "found, ignoring.";*/ delete scheme; } @@ -701,7 +701,7 @@ if (scheme->name().isEmpty()) { - qDebug() << "Color scheme in" << filePath << "does not have a valid name and was not loaded."; + //qDebug() << "Color scheme in" << filePath << "does not have a valid name and was not loaded."; delete scheme; return false; } @@ -712,8 +712,8 @@ } else { - qDebug() << "color scheme with name" << schemeName << "has already been" << - "found, ignoring."; + /*qDebug() << "color scheme with name" << schemeName << "has already been" << + "found, ignoring.";*/ delete scheme; } @@ -730,7 +730,7 @@ QStringList filters; filters << QLatin1String("*.schema"); dir.setNameFilters(filters); - QStringList list = dir.entryList(filters); + const QStringList list = dir.entryList(filters); for (const QString &i : list) ret << dname + QLatin1Char('/') + i; } @@ -750,7 +750,7 @@ QStringList filters; filters << QLatin1String("*.colorscheme"); dir.setNameFilters(filters); - QStringList list = dir.entryList(filters); + const QStringList list = dir.entryList(filters); for (const QString &i : list) ret << dname + QLatin1Char('/') + i; } @@ -777,7 +777,7 @@ } else { - qDebug() << "Failed to remove color scheme -" << path; + //qDebug() << "Failed to remove color scheme -" << path; return false; } } @@ -819,9 +819,9 @@ return findColorScheme(name); } - qDebug() << "Could not find color scheme - " << name; + //qDebug() << "Could not find color scheme - " << name; - return 0; + return nullptr; } } Q_GLOBAL_STATIC(ColorSchemeManager, theColorSchemeManager) diff -Nru qtermwidget-0.14.1/lib/Emulation.cpp qtermwidget-0.16.1/lib/Emulation.cpp --- qtermwidget-0.14.1/lib/Emulation.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Emulation.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -23,8 +23,8 @@ #include "Emulation.h" // System -#include -#include +#include +#include #include #include @@ -51,10 +51,10 @@ using namespace Konsole; Emulation::Emulation() : - _currentScreen(0), - _codec(0), - _decoder(0), - _keyTranslator(0), + _currentScreen(nullptr), + _codec(nullptr), + _decoder(nullptr), + _keyTranslator(nullptr), _usesMouse(false), _bracketedPasteMode(false) { @@ -109,6 +109,10 @@ connect(this , SIGNAL(outputChanged()), window , SLOT(notifyOutputChanged()) ); + + connect(this, &Emulation::handleCommandFromKeyboard, + window, &ScreenWindow::handleCommandFromKeyboard); + return window; } @@ -133,7 +137,7 @@ if (_currentScreen != old) { // tell all windows onto this emulation to switch to the newly active screen - for(ScreenWindow* window : const_cast&>(_windows)) + for(ScreenWindow* window : qAsConst(_windows)) window->setScreen(_currentScreen); } } @@ -380,7 +384,7 @@ QSize Emulation::imageSize() const { - return QSize(_currentScreen->getColumns(), _currentScreen->getLines()); + return {_currentScreen->getColumns(), _currentScreen->getLines()}; } ushort ExtendedCharTable::extendedCharHash(ushort* unicodePoints , ushort length) const @@ -398,7 +402,7 @@ // compare given length with stored sequence length ( given as the first ushort in the // stored buffer ) - if ( entry == 0 || entry[0] != length ) + if ( entry == nullptr || entry[0] != length ) return false; // if the lengths match, each character must be checked. the stored buffer starts at // entry[1] @@ -458,7 +462,7 @@ else { length = 0; - return 0; + return nullptr; } } diff -Nru qtermwidget-0.14.1/lib/Emulation.h qtermwidget-0.16.1/lib/Emulation.h --- qtermwidget-0.14.1/lib/Emulation.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Emulation.h 2020-11-14 09:10:48.000000000 +0000 @@ -24,7 +24,7 @@ #define EMULATION_H // System -#include +#include // Qt #include @@ -33,14 +33,12 @@ #include #include -// Konsole -//#include "konsole_export.h" -#define KONSOLEPRIVATE_EXPORT +#include "qtermwidget_export.h" +#include "KeyboardTranslator.h" namespace Konsole { -class KeyboardTranslator; class HistoryType; class Screen; class ScreenWindow; @@ -120,7 +118,7 @@ * how long the emulation has been active/idle for and also respond to * a 'bell' event in different ways. */ -class KONSOLEPRIVATE_EXPORT Emulation : public QObject +class QTERMWIDGET_EXPORT Emulation : public QObject { Q_OBJECT @@ -148,7 +146,7 @@ /** Constructs a new terminal emulation */ Emulation(); - ~Emulation(); + ~Emulation() override; /** * Creates a new window onto the output from this emulation. The contents @@ -444,6 +442,8 @@ */ void cursorChanged(KeyboardCursorShape cursorShape, bool blinkingCursorEnabled); + void handleCommandFromKeyboard(KeyboardTranslator::Command command); + protected: virtual void setMode(int mode) = 0; virtual void resetMode(int mode) = 0; diff -Nru qtermwidget-0.14.1/lib/Filter.cpp qtermwidget-0.16.1/lib/Filter.cpp --- qtermwidget-0.14.1/lib/Filter.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Filter.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -98,13 +98,13 @@ { Filter* filter = iter.next(); Filter::HotSpot* spot = filter->hotSpotAt(line,column); - if ( spot != 0 ) + if ( spot != nullptr ) { return spot; } } - return 0; + return nullptr; } QList FilterChain::hotSpots() const @@ -121,8 +121,8 @@ //QList FilterChain::hotSpotsAtLine(int line) const; TerminalImageFilterChain::TerminalImageFilterChain() -: _buffer(0) -, _linePositions(0) +: _buffer(nullptr) +, _linePositions(nullptr) { } @@ -180,8 +180,8 @@ } Filter::Filter() : -_linePositions(0), -_buffer(0) +_linePositions(nullptr), +_buffer(nullptr) { } @@ -275,7 +275,7 @@ return spot; } - return 0; + return nullptr; } Filter::HotSpot::HotSpot(int startLine , int startColumn , int endLine , int endColumn) diff -Nru qtermwidget-0.14.1/lib/Filter.h qtermwidget-0.16.1/lib/Filter.h --- qtermwidget-0.14.1/lib/Filter.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Filter.h 2020-11-14 09:10:48.000000000 +0000 @@ -29,6 +29,7 @@ #include // Local +#include "qtermwidget_export.h" namespace Konsole { @@ -54,7 +55,7 @@ * When processing the text they should create instances of Filter::HotSpot subclasses for sections of interest * and add them to the filter's list of hotspots using addHotSpot() */ -class Filter : public QObject +class QTERMWIDGET_EXPORT Filter : public QObject { public: /** @@ -132,7 +133,7 @@ /** Constructs a new filter. */ Filter(); - virtual ~Filter(); + ~Filter() override; /** Causes the filter to process the block of text currently in its internal buffer */ virtual void process() = 0; @@ -183,7 +184,7 @@ * Subclasses can reimplement newHotSpot() to return custom hotspot types when matches for the regular expression * are found. */ -class RegExpFilter : public Filter +class QTERMWIDGET_EXPORT RegExpFilter : public Filter { public: /** @@ -194,7 +195,7 @@ { public: HotSpot(int startLine, int startColumn, int endLine , int endColumn); - virtual void activate(const QString& action = QString()); + void activate(const QString& action = QString()) override; /** Sets the captured texts associated with this hotspot */ void setCapturedTexts(const QStringList& texts); @@ -223,7 +224,7 @@ * If regexp matches the empty string, then process() will return immediately * without finding results. */ - virtual void process(); + void process() override; protected: /** @@ -240,7 +241,7 @@ class FilterObject; /** A filter which matches URLs in blocks of text */ -class UrlFilter : public RegExpFilter +class QTERMWIDGET_EXPORT UrlFilter : public RegExpFilter { Q_OBJECT public: @@ -252,17 +253,17 @@ { public: HotSpot(int startLine,int startColumn,int endLine,int endColumn); - virtual ~HotSpot(); + ~HotSpot() override; FilterObject* getUrlObject() const; - virtual QList actions(); + QList actions() override; /** * Open a web browser at the current URL. The url itself can be determined using * the capturedTexts() method. */ - virtual void activate(const QString& action = QString()); + void activate(const QString& action = QString()) override; private: enum UrlType @@ -279,7 +280,7 @@ UrlFilter(); protected: - virtual RegExpFilter::HotSpot* newHotSpot(int,int,int,int); + RegExpFilter::HotSpot* newHotSpot(int,int,int,int) override; private: @@ -292,7 +293,7 @@ void activated(const QUrl& url, bool fromContextMenu); }; -class FilterObject : public QObject +class QTERMWIDGET_NO_EXPORT FilterObject : public QObject { Q_OBJECT public: @@ -324,7 +325,7 @@ * The hotSpots() and hotSpotsAtLine() method return all of the hotspots in the text and on * a given line respectively. */ -class FilterChain : protected QList +class QTERMWIDGET_EXPORT FilterChain : protected QList { public: virtual ~FilterChain(); @@ -358,11 +359,11 @@ }; /** A filter chain which processes character images from terminal displays */ -class TerminalImageFilterChain : public FilterChain +class QTERMWIDGET_NO_EXPORT TerminalImageFilterChain : public FilterChain { public: TerminalImageFilterChain(); - virtual ~TerminalImageFilterChain(); + ~TerminalImageFilterChain() override; /** * Set the current terminal image to @p image. diff -Nru qtermwidget-0.14.1/lib/History.cpp qtermwidget-0.16.1/lib/History.cpp --- qtermwidget-0.14.1/lib/History.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/History.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -22,13 +22,14 @@ #include "History.h" // System +#include #include -#include -#include +#include +#include #include #include #include -#include +#include #include @@ -89,7 +90,8 @@ HistoryFile::HistoryFile() : ion(-1), length(0), - fileMap(0) + fileMap(nullptr), + readWriteBalance(0) { if (tmpFile.open()) { @@ -109,15 +111,15 @@ //to avoid this. void HistoryFile::map() { - Q_ASSERT( fileMap == 0 ); + Q_ASSERT( fileMap == nullptr ); - fileMap = (char*)mmap( 0 , length , PROT_READ , MAP_PRIVATE , ion , 0 ); + fileMap = (char*)mmap( nullptr , length , PROT_READ , MAP_PRIVATE , ion , 0 ); //if mmap'ing fails, fall back to the read-lseek combination if ( fileMap == MAP_FAILED ) { readWriteBalance = 0; - fileMap = 0; + fileMap = nullptr; //qDebug() << __FILE__ << __LINE__ << ": mmap'ing history failed. errno = " << errno; } } @@ -127,12 +129,12 @@ int result = munmap( fileMap , length ); Q_ASSERT( result == 0 ); Q_UNUSED( result ); - fileMap = 0; + fileMap = nullptr; } bool HistoryFile::isMapped() const { - return (fileMap != 0); + return (fileMap != nullptr); } void HistoryFile::add(const unsigned char* bytes, int len) @@ -313,7 +315,7 @@ void HistoryScrollBuffer::addCells(const Character a[], int count) { HistoryLine newLine(count); - qCopy(a,a+count,newLine.begin()); + std::copy(a,a+count,newLine.begin()); addCellsVector(newLine); } @@ -537,7 +539,7 @@ { Q_ASSERT ( length > 0 ); if ( tail-blockStart+length > blockLength ) - return NULL; + return nullptr; void* block = tail; tail += length; @@ -628,9 +630,9 @@ //kDebug() << "number of different formats in string: " << formatLength; formatArray = (CharacterFormat*) blockList.allocate(sizeof(CharacterFormat)*formatLength); - Q_ASSERT (formatArray!=NULL); + Q_ASSERT (formatArray!=nullptr); text = (quint16*) blockList.allocate(sizeof(quint16)*line.size()); - Q_ASSERT (text!=NULL); + Q_ASSERT (text!=nullptr); length=line.size(); wrapped=false; @@ -729,7 +731,7 @@ void CompactHistoryScroll::addCells ( const Character a[], int count ) { TextLine newLine ( count ); - qCopy ( a,a+count,newLine.begin() ); + std::copy ( a,a+count,newLine.begin() ); addCellsVector ( newLine ); } @@ -923,7 +925,7 @@ HistoryScroll *newScroll = new HistoryScrollFile(m_fileName); Character line[LINE_SIZE]; - int lines = (old != 0) ? old->getLines() : 0; + int lines = (old != nullptr) ? old->getLines() : 0; for(int i = 0; i < lines; i++) { int size = old->getLineLen(i); diff -Nru qtermwidget-0.14.1/lib/History.h qtermwidget-0.16.1/lib/History.h --- qtermwidget-0.14.1/lib/History.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/History.h 2020-11-14 09:10:48.000000000 +0000 @@ -139,15 +139,15 @@ { public: HistoryScrollFile(const QString &logFileName); - virtual ~HistoryScrollFile(); + ~HistoryScrollFile() override; - virtual int getLines(); - virtual int getLineLen(int lineno); - virtual void getCells(int lineno, int colno, int count, Character res[]); - virtual bool isWrappedLine(int lineno); + int getLines() override; + int getLineLen(int lineno) override; + void getCells(int lineno, int colno, int count, Character res[]) override; + bool isWrappedLine(int lineno) override; - virtual void addCells(const Character a[], int count); - virtual void addLine(bool previousWrapped=false); + void addCells(const Character a[], int count) override; + void addLine(bool previousWrapped=false) override; private: int startOfLine(int lineno); @@ -168,16 +168,16 @@ typedef QVector HistoryLine; HistoryScrollBuffer(unsigned int maxNbLines = 1000); - virtual ~HistoryScrollBuffer(); - - virtual int getLines(); - virtual int getLineLen(int lineno); - virtual void getCells(int lineno, int colno, int count, Character res[]); - virtual bool isWrappedLine(int lineno); + ~HistoryScrollBuffer() override; - virtual void addCells(const Character a[], int count); - virtual void addCellsVector(const QVector& cells); - virtual void addLine(bool previousWrapped=false); + int getLines() override; + int getLineLen(int lineno) override; + void getCells(int lineno, int colno, int count, Character res[]) override; + bool isWrappedLine(int lineno) override; + + void addCells(const Character a[], int count) override; + void addCellsVector(const QVector& cells) override; + void addLine(bool previousWrapped=false) override; void setMaxNbLines(unsigned int nbLines); unsigned int maxNbLines() const { return _maxLineCount; } @@ -223,17 +223,17 @@ { public: HistoryScrollNone(); - virtual ~HistoryScrollNone(); + ~HistoryScrollNone() override; - virtual bool hasScroll(); + bool hasScroll() override; - virtual int getLines(); - virtual int getLineLen(int lineno); - virtual void getCells(int lineno, int colno, int count, Character res[]); - virtual bool isWrappedLine(int lineno); + int getLines() override; + int getLineLen(int lineno) override; + void getCells(int lineno, int colno, int count, Character res[]) override; + bool isWrappedLine(int lineno) override; - virtual void addCells(const Character a[], int count); - virtual void addLine(bool previousWrapped=false); + void addCells(const Character a[], int count) override; + void addLine(bool previousWrapped=false) override; }; ////////////////////////////////////////////////////////////////////// @@ -243,15 +243,15 @@ { public: HistoryScrollBlockArray(size_t size); - virtual ~HistoryScrollBlockArray(); + ~HistoryScrollBlockArray() override; - virtual int getLines(); - virtual int getLineLen(int lineno); - virtual void getCells(int lineno, int colno, int count, Character res[]); - virtual bool isWrappedLine(int lineno); + int getLines() override; + int getLineLen(int lineno) override; + void getCells(int lineno, int colno, int count, Character res[]) override; + bool isWrappedLine(int lineno) override; - virtual void addCells(const Character a[], int count); - virtual void addLine(bool previousWrapped=false); + void addCells(const Character a[], int count) override; + void addLine(bool previousWrapped=false) override; protected: BlockArray m_blockArray; @@ -293,7 +293,7 @@ CompactHistoryBlock(){ blockLength = 4096*64; // 256kb - head = (quint8*) mmap(0, blockLength, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0); + head = (quint8*) mmap(nullptr, blockLength, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0); //head = (quint8*) malloc(blockLength); Q_ASSERT(head != MAP_FAILED); tail = blockStart = head; @@ -363,16 +363,16 @@ public: CompactHistoryScroll(unsigned int maxNbLines = 1000); - virtual ~CompactHistoryScroll(); - - virtual int getLines(); - virtual int getLineLen(int lineno); - virtual void getCells(int lineno, int colno, int count, Character res[]); - virtual bool isWrappedLine(int lineno); + ~CompactHistoryScroll() override; - virtual void addCells(const Character a[], int count); - virtual void addCellsVector(const TextLine& cells); - virtual void addLine(bool previousWrapped=false); + int getLines() override; + int getLineLen(int lineno) override; + void getCells(int lineno, int colno, int count, Character res[]) override; + bool isWrappedLine(int lineno) override; + + void addCells(const Character a[], int count) override; + void addCellsVector(const TextLine& cells) override; + void addLine(bool previousWrapped=false) override; void setMaxNbLines(unsigned int nbLines); unsigned int maxNbLines() const { return _maxLineCount; } @@ -418,10 +418,10 @@ public: HistoryTypeNone(); - virtual bool isEnabled() const; - virtual int maximumLineCount() const; + bool isEnabled() const override; + int maximumLineCount() const override; - virtual HistoryScroll* scroll(HistoryScroll *) const; + HistoryScroll* scroll(HistoryScroll *) const override; }; class HistoryTypeBlockArray : public HistoryType @@ -429,10 +429,10 @@ public: HistoryTypeBlockArray(size_t size); - virtual bool isEnabled() const; - virtual int maximumLineCount() const; + bool isEnabled() const override; + int maximumLineCount() const override; - virtual HistoryScroll* scroll(HistoryScroll *) const; + HistoryScroll* scroll(HistoryScroll *) const override; protected: size_t m_size; @@ -444,11 +444,11 @@ public: HistoryTypeFile(const QString& fileName=QString()); - virtual bool isEnabled() const; + bool isEnabled() const override; virtual const QString& getFileName() const; - virtual int maximumLineCount() const; + int maximumLineCount() const override; - virtual HistoryScroll* scroll(HistoryScroll *) const; + HistoryScroll* scroll(HistoryScroll *) const override; protected: QString m_fileName; @@ -462,10 +462,10 @@ public: HistoryTypeBuffer(unsigned int nbLines); - virtual bool isEnabled() const; - virtual int maximumLineCount() const; + bool isEnabled() const override; + int maximumLineCount() const override; - virtual HistoryScroll* scroll(HistoryScroll *) const; + HistoryScroll* scroll(HistoryScroll *) const override; protected: unsigned int m_nbLines; @@ -476,10 +476,10 @@ public: CompactHistoryType(unsigned int size); - virtual bool isEnabled() const; - virtual int maximumLineCount() const; + bool isEnabled() const override; + int maximumLineCount() const override; - virtual HistoryScroll* scroll(HistoryScroll *) const; + HistoryScroll* scroll(HistoryScroll *) const override; protected: unsigned int m_nbLines; diff -Nru qtermwidget-0.14.1/lib/HistorySearch.cpp qtermwidget-0.16.1/lib/HistorySearch.cpp --- qtermwidget-0.14.1/lib/HistorySearch.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/HistorySearch.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -24,7 +24,7 @@ #include "Emulation.h" #include "HistorySearch.h" -HistorySearch::HistorySearch(EmulationPtr emulation, QRegExp regExp, +HistorySearch::HistorySearch(EmulationPtr emulation, const QRegExp& regExp, bool forwards, int startColumn, int startLine, QObject* parent) : QObject(parent), diff -Nru qtermwidget-0.14.1/lib/HistorySearch.h qtermwidget-0.16.1/lib/HistorySearch.h --- qtermwidget-0.14.1/lib/HistorySearch.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/HistorySearch.h 2020-11-14 09:10:48.000000000 +0000 @@ -38,10 +38,10 @@ Q_OBJECT public: - explicit HistorySearch(EmulationPtr emulation, QRegExp regExp, bool forwards, + explicit HistorySearch(EmulationPtr emulation, const QRegExp& regExp, bool forwards, int startColumn, int startLine, QObject* parent); - ~HistorySearch(); + ~HistorySearch() override; void search(); diff -Nru qtermwidget-0.14.1/lib/kb-layouts/default.keytab qtermwidget-0.16.1/lib/kb-layouts/default.keytab --- qtermwidget-0.14.1/lib/kb-layouts/default.keytab 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kb-layouts/default.keytab 2020-11-14 09:10:48.000000000 +0000 @@ -114,6 +114,9 @@ key PgUp -Shift+KeyPad : "\E[5~" key PgDown -Shift+KeyPad : "\E[6~" +key Clear -AnyMod+KeyPad+AppKeyPad : "\E[OE" +key Clear +AnyMod+KeyPad+AppKeyPad : "\E[1;*E" + # other grey PC keys key Enter+NewLine : "\r\n" @@ -178,4 +181,3 @@ key End +Shift-AppScreen : scrollDownToBottom key ScrollLock : scrollLock - diff -Nru qtermwidget-0.14.1/lib/KeyboardTranslator.cpp qtermwidget-0.16.1/lib/KeyboardTranslator.cpp --- qtermwidget-0.14.1/lib/KeyboardTranslator.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/KeyboardTranslator.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -23,8 +23,8 @@ #include "KeyboardTranslator.h" // System -#include -#include +#include +#include // Qt #include @@ -50,6 +50,13 @@ "key Tab : \"\\t\"" ); +#ifdef Q_OS_MAC +// On Mac, Qt::ControlModifier means Cmd, and MetaModifier means Ctrl +const Qt::KeyboardModifier KeyboardTranslator::CTRL_MOD = Qt::MetaModifier; +#else +const Qt::KeyboardModifier KeyboardTranslator::CTRL_MOD = Qt::ControlModifier; +#endif + KeyboardTranslatorManager::KeyboardTranslatorManager() : _haveLoadedAll(false) { @@ -102,7 +109,7 @@ KeyboardTranslator* translator = loadTranslator(name); - if ( translator != 0 ) + if ( translator != nullptr ) _translators[name] = translator; else if ( !name.isEmpty() ) qDebug() << "Unable to load translator" << name; @@ -148,7 +155,7 @@ QFile source(path); if (name.isEmpty() || !source.open(QIODevice::ReadOnly | QIODevice::Text)) - return 0; + return nullptr; return loadTranslator(&source,name); } @@ -185,7 +192,7 @@ else { delete translator; - return 0; + return nullptr; } } @@ -613,6 +620,11 @@ Qt::KeyboardModifiers modifiers, States testState) const { +#ifdef Q_OS_MAC + // On Mac, arrow keys are considered part of keypad. Ignore that. + modifiers &= ~Qt::KeypadModifier; +#endif + if ( _keyCode != keyCode ) return false; @@ -620,7 +632,7 @@ return false; // if modifiers is non-zero, the 'any modifier' state is implicit - if ( modifiers != 0 ) + if ( (modifiers & ~Qt::KeypadModifier) != 0 ) testState |= AnyModifierState; if ( (testState & _stateMask) != (_state & _stateMask) ) diff -Nru qtermwidget-0.14.1/lib/KeyboardTranslator.h qtermwidget-0.16.1/lib/KeyboardTranslator.h --- qtermwidget-0.14.1/lib/KeyboardTranslator.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/KeyboardTranslator.h 2020-11-14 09:10:48.000000000 +0000 @@ -314,6 +314,9 @@ /** Returns a list of all entries in the translator. */ QList entries() const; + /** The modifier code for the actual Ctrl key on this OS. */ + static const Qt::KeyboardModifier CTRL_MOD; + private: QMultiHash _entries; // entries in this keyboard translation, @@ -558,8 +561,8 @@ { int modifierValue = 1; modifierValue += oneOrZero(modifiers & Qt::ShiftModifier); - modifierValue += oneOrZero(modifiers & Qt::AltModifier) << 1; - modifierValue += oneOrZero(modifiers & Qt::ControlModifier) << 2; + modifierValue += oneOrZero(modifiers & Qt::AltModifier) << 1; + modifierValue += oneOrZero(modifiers & KeyboardTranslator::CTRL_MOD) << 2; for (int i=0;i<_text.length();i++) { diff -Nru qtermwidget-0.14.1/lib/kprocess.cpp qtermwidget-0.16.1/lib/kprocess.cpp --- qtermwidget-0.14.1/lib/kprocess.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kprocess.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -35,7 +35,7 @@ # include #else # include -# include +# include #endif #ifndef Q_OS_WIN diff -Nru qtermwidget-0.14.1/lib/kprocess.h qtermwidget-0.16.1/lib/kprocess.h --- qtermwidget-0.14.1/lib/kprocess.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kprocess.h 2020-11-14 09:10:48.000000000 +0000 @@ -77,12 +77,12 @@ /** * Constructor */ - explicit KProcess(QObject *parent = 0); + explicit KProcess(QObject *parent = nullptr); /** * Destructor */ - virtual ~KProcess(); + ~KProcess() override; /** * Set how to handle the output channels of the child process. diff -Nru qtermwidget-0.14.1/lib/kpty.cpp qtermwidget-0.16.1/lib/kpty.cpp --- qtermwidget-0.14.1/lib/kpty.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kpty.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -27,7 +27,7 @@ #include -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || defined(__DragonFly__) #define HAVE_LOGIN #define HAVE_LIBUTIL_H #endif @@ -37,6 +37,12 @@ #define HAVE_UTIL_H #endif +#if defined(__NetBSD__) +#define HAVE_LOGIN +#define HAVE_UTIL_H +#define HAVE_OPENPTY +#endif + #if defined(__APPLE__) #define HAVE_OPENPTY #define HAVE_UTIL_H @@ -70,12 +76,12 @@ #include #include -#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -174,14 +180,12 @@ { } -#ifndef HAVE_OPENPTY bool KPtyPrivate::chownpty(bool) { // return !QProcess::execute(KStandardDirs::findExe("kgrantpty"), // QStringList() << (grant?"--grant":"--revoke") << QString::number(masterFd)); return true; } -#endif ///////////////////////////// // public member functions // @@ -261,7 +265,7 @@ d->ttyName = ptsn; #else int ptyno; - if (!ioctl(d->masterFd, TIOCGPTN, &ptyno)) { + if (ioctl(d->masterFd, TIOCGPTN, &ptyno) != -1) { d->ttyName = QByteArray("/dev/pts/") + QByteArray::number(ptyno); #endif #ifdef HAVE_GRANTPT @@ -281,8 +285,8 @@ // Linux device names, FIXME: Trouble on other systems? for (const char * s3 = "pqrstuvwxyzabcde"; *s3; s3++) { for (const char * s4 = "0123456789abcdef"; *s4; s4++) { - ptyName = QString().sprintf("/dev/pty%c%c", *s3, *s4).toUtf8(); - d->ttyName = QString().sprintf("/dev/tty%c%c", *s3, *s4).toUtf8(); + ptyName = QByteArrayLiteral("/dev/pty") + *s3 + *s4; + d->ttyName = QByteArrayLiteral("/dev/tty") + *s3 + *s4; d->masterFd = ::open(ptyName.data(), O_RDWR); if (d->masterFd >= 0) { @@ -292,7 +296,7 @@ * and we need to get another one. */ int pgrp_rtn; - if (ioctl(d->masterFd, TIOCGPGRP, &pgrp_rtn) == 0 || errno != EIO) { + if (ioctl(d->masterFd, TIOCGPGRP, &pgrp_rtn) != -1 || errno != EIO) { ::close(d->masterFd); d->masterFd = -1; continue; @@ -394,9 +398,13 @@ d->ttyName = ptsn; # else int ptyno; - if (!ioctl(fd, TIOCGPTN, &ptyno)) { - char buf[32]; - sprintf(buf, "/dev/pts/%d", ptyno); + if (ioctl(fd, TIOCGPTN, &ptyno) != -1) { + const size_t sz = 32; + char buf[sz]; + const size_t r = snprintf(buf, sz, "/dev/pts/%d", ptyno); + if (sz <= r) { + qWarning("KPty::open: Buffer too small\n"); + } d->ttyName = buf; # endif } else { @@ -546,7 +554,7 @@ # ifdef HAVE_UTMPX gettimeofday(&l_struct.ut_tv, 0); # else - l_struct.ut_time = time(0); + l_struct.ut_time = time(nullptr); # endif # ifdef HAVE_LOGIN @@ -648,7 +656,7 @@ } endutxent(); # else - ut->ut_time = time(0); + ut->ut_time = time(nullptr); pututline(ut); } endutent(); @@ -682,7 +690,7 @@ memset(&winSize, 0, sizeof(winSize)); winSize.ws_row = (unsigned short)lines; winSize.ws_col = (unsigned short)columns; - return ioctl(d->masterFd, TIOCSWINSZ, (char *)&winSize) == 0; + return ioctl(d->masterFd, TIOCSWINSZ, (char *)&winSize) != -1; } bool KPty::setEcho(bool echo) diff -Nru qtermwidget-0.14.1/lib/kptydevice.cpp qtermwidget-0.16.1/lib/kptydevice.cpp --- qtermwidget-0.14.1/lib/kptydevice.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kptydevice.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -35,8 +35,8 @@ #include #include -#include -#include +#include +#include #include #include #include @@ -74,7 +74,7 @@ struct sigaction noaction; memset(&noaction, 0, sizeof(noaction)); noaction.sa_handler = SIG_IGN; - sigaction(SIGPIPE, &noaction, 0); + sigaction(SIGPIPE, &noaction, nullptr); } } @@ -90,7 +90,7 @@ #else int available; #endif - if (!::ioctl(q->masterFd(), PTY_BYTES_AVAILABLE, (char *) &available)) { + if (::ioctl(q->masterFd(), PTY_BYTES_AVAILABLE, (char *) &available) != -1) { #ifdef Q_OS_SOLARIS // A Pty is a STREAMS module, and those can be activated // with 0 bytes available. This happens either when ^C is @@ -211,7 +211,7 @@ struct timeval tv, *tvp; if (msecs < 0) - tvp = 0; + tvp = nullptr; else { tv.tv_sec = msecs / 1000; tv.tv_usec = (msecs % 1000) * 1000; @@ -243,7 +243,7 @@ } #endif - switch (select(q->masterFd() + 1, &rfds, &wfds, 0, tvp)) { + switch (select(q->masterFd() + 1, &rfds, &wfds, nullptr, tvp)) { case -1: if (errno == EINTR) break; diff -Nru qtermwidget-0.14.1/lib/kptydevice.h qtermwidget-0.16.1/lib/kptydevice.h --- qtermwidget-0.14.1/lib/kptydevice.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kptydevice.h 2020-11-14 09:10:48.000000000 +0000 @@ -55,7 +55,7 @@ /** * Constructor */ - KPtyDevice(QObject *parent = 0); + KPtyDevice(QObject *parent = nullptr); /** * Destructor: @@ -63,14 +63,14 @@ * If the pty is still open, it will be closed. Note, however, that * an utmp registration is @em not undone. */ - virtual ~KPtyDevice(); + ~KPtyDevice() override; /** * Create a pty master/slave pair. * * @return true if a pty pair was successfully opened */ - virtual bool open(OpenMode mode = ReadWrite | Unbuffered); + bool open(OpenMode mode = ReadWrite | Unbuffered) override; /** * Open using an existing pty master. The ownership of the fd @@ -90,7 +90,7 @@ /** * Close the pty master/slave pair. */ - virtual void close(); + void close() override; /** * Sets whether the KPtyDevice monitors the pty for incoming data. @@ -119,30 +119,30 @@ /** * @return always true */ - virtual bool isSequential() const; + bool isSequential() const override; /** * @reimp */ - bool canReadLine() const; + bool canReadLine() const override; /** * @reimp */ - bool atEnd() const; + bool atEnd() const override; /** * @reimp */ - qint64 bytesAvailable() const; + qint64 bytesAvailable() const override; /** * @reimp */ - qint64 bytesToWrite() const; + qint64 bytesToWrite() const override; - bool waitForBytesWritten(int msecs = -1); - bool waitForReadyRead(int msecs = -1); + bool waitForBytesWritten(int msecs = -1) override; + bool waitForReadyRead(int msecs = -1) override; Q_SIGNALS: @@ -154,9 +154,9 @@ void readEof(); protected: - virtual qint64 readData(char *data, qint64 maxSize); - virtual qint64 readLineData(char *data, qint64 maxSize); - virtual qint64 writeData(const char *data, qint64 maxSize); + qint64 readData(char *data, qint64 maxSize) override; + qint64 readLineData(char *data, qint64 maxSize) override; + qint64 writeData(const char *data, qint64 maxSize) override; private: Q_PRIVATE_SLOT(d_func(), bool _k_canRead()) @@ -168,7 +168,7 @@ ///////////////////////////////////////////////////// #include -#include +#include #define CHUNKSIZE 4096 @@ -185,14 +185,14 @@ buffers.clear(); QByteArray tmp; tmp.resize(CHUNKSIZE); - buffers << tmp; + buffers.push_back(tmp); head = tail = 0; totalSize = 0; } inline bool isEmpty() const { - return buffers.count() == 1 && !tail; + return buffers.size() == 1 && !tail; } inline int size() const @@ -202,13 +202,13 @@ inline int readSize() const { - return (buffers.count() == 1 ? tail : buffers.first().size()) - head; + return (buffers.size() == 1 ? tail : buffers.front().size()) - head; } inline const char *readPointer() const { Q_ASSERT(totalSize > 0); - return buffers.first().constData() + head; + return buffers.front().constData() + head; } void free(int bytes) @@ -221,21 +221,21 @@ if (bytes < nbs) { head += bytes; - if (head == tail && buffers.count() == 1) { - buffers.first().resize(CHUNKSIZE); + if (head == tail && buffers.size() == 1) { + buffers.front().resize(CHUNKSIZE); head = tail = 0; } break; } bytes -= nbs; - if (buffers.count() == 1) { - buffers.first().resize(CHUNKSIZE); + if (buffers.size() == 1) { + buffers.front().resize(CHUNKSIZE); head = tail = 0; break; } - buffers.removeFirst(); + buffers.pop_front(); head = 0; } } @@ -245,15 +245,15 @@ totalSize += bytes; char *ptr; - if (tail + bytes <= buffers.last().size()) { - ptr = buffers.last().data() + tail; + if (tail + bytes <= buffers.back().size()) { + ptr = buffers.back().data() + tail; tail += bytes; } else { - buffers.last().resize(tail); + buffers.back().resize(tail); QByteArray tmp; tmp.resize(qMax(CHUNKSIZE, bytes)); ptr = tmp.data(); - buffers << tmp; + buffers.push_back(tmp); tail = bytes; } return ptr; @@ -278,7 +278,7 @@ { int index = 0; int start = head; - QLinkedList::ConstIterator it = buffers.constBegin(); + std::list::const_iterator it = buffers.cbegin(); forever { if (!maxLength) return index; @@ -286,7 +286,7 @@ return -1; const QByteArray &buf = *it; ++it; - int len = qMin((it == buffers.end() ? tail : buf.size()) - start, + int len = qMin((it == buffers.cend() ? tail : buf.size()) - start, maxLength); const char *ptr = buf.data() + start; if (const char *rptr = (const char *)memchr(ptr, c, len)) @@ -327,7 +327,7 @@ } private: - QLinkedList buffers; + std::list buffers; int head, tail; int totalSize; }; @@ -339,7 +339,7 @@ KPtyDevicePrivate(KPty* parent) : KPtyPrivate(parent), emittedReadyRead(false), emittedBytesWritten(false), - readNotifier(0), writeNotifier(0) + readNotifier(nullptr), writeNotifier(nullptr) { } diff -Nru qtermwidget-0.14.1/lib/kpty.h qtermwidget-0.16.1/lib/kpty.h --- qtermwidget-0.14.1/lib/kpty.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kpty.h 2020-11-14 09:10:48.000000000 +0000 @@ -50,6 +50,9 @@ */ ~KPty(); + KPty(const KPty &) = delete; + KPty &operator=(const KPty &) = delete; + /** * Create a pty master/slave pair. * @@ -95,7 +98,7 @@ * of the client. For local logins from inside an X session it should * be the name of the X display. Otherwise it should be empty. */ - void login(const char * user = 0, const char * remotehost = 0); + void login(const char * user = nullptr, const char * remotehost = nullptr); /** * Removes the utmp entry for this tty. diff -Nru qtermwidget-0.14.1/lib/kpty_p.h qtermwidget-0.16.1/lib/kpty_p.h --- qtermwidget-0.14.1/lib/kpty_p.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kpty_p.h 2020-11-14 09:10:48.000000000 +0000 @@ -35,9 +35,7 @@ KPtyPrivate(KPty* parent); virtual ~KPtyPrivate(); -#ifndef HAVE_OPENPTY bool chownpty(bool grant); -#endif int masterFd; int slaveFd; diff -Nru qtermwidget-0.14.1/lib/kptyprocess.cpp qtermwidget-0.16.1/lib/kptyprocess.cpp --- qtermwidget-0.14.1/lib/kptyprocess.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kptyprocess.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -32,9 +32,9 @@ #include "kprocess.h" #include "kptydevice.h" -#include +#include #include -#include +#include #include KPtyProcess::KPtyProcess(QObject *parent) : diff -Nru qtermwidget-0.14.1/lib/kptyprocess.h qtermwidget-0.16.1/lib/kptyprocess.h --- qtermwidget-0.14.1/lib/kptyprocess.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/kptyprocess.h 2020-11-14 09:10:48.000000000 +0000 @@ -33,7 +33,7 @@ #include "kprocess.h" #include "kptydevice.h" -#include +#include class KPtyDevice; @@ -74,7 +74,7 @@ /** * Constructor */ - explicit KPtyProcess(QObject *parent = 0); + explicit KPtyProcess(QObject *parent = nullptr); /** * Construct a process using an open pty master. @@ -83,12 +83,12 @@ * The process does not take ownership of the descriptor; * it will not be automatically closed at any point. */ - KPtyProcess(int ptyMasterFd, QObject *parent = 0); + KPtyProcess(int ptyMasterFd, QObject *parent = nullptr); /** * Destructor */ - virtual ~KPtyProcess(); + ~KPtyProcess() override; /** * Set to which channels the PTY should be assigned. @@ -144,7 +144,7 @@ /** * @reimp */ - virtual void setupChildProcess(); + void setupChildProcess() override; private: Q_PRIVATE_SLOT(d_func(), void _k_onStateChanged(QProcess::ProcessState)) diff -Nru qtermwidget-0.14.1/lib/Pty.cpp qtermwidget-0.16.1/lib/Pty.cpp --- qtermwidget-0.14.1/lib/Pty.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Pty.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -33,9 +33,9 @@ #include #include #include -#include +#include #include -#include +#include // Qt #include @@ -56,7 +56,7 @@ } QSize Pty::windowSize() const { - return QSize(_windowColumns,_windowLines); + return {_windowColumns,_windowLines}; } void Pty::setFlowControlEnabled(bool enable) @@ -173,6 +173,7 @@ addEnvironmentVariables(environment); setEnv(QLatin1String("WINDOWID"), QString::number(winid)); + setEnv(QLatin1String("COLORTERM"), QLatin1String("truecolor")); // unless the LANGUAGE environment variable has been set explicitly // set it to a null string @@ -328,11 +329,12 @@ struct sigaction action; sigset_t sigset; sigemptyset(&action.sa_mask); + sigemptyset(&sigset); action.sa_handler = SIG_DFL; action.sa_flags = 0; for (int signal=1;signal < NSIG; signal++) { - sigaction(signal,&action,0L); + sigaction(signal,&action,nullptr); sigaddset(&sigset, signal); } - sigprocmask(SIG_UNBLOCK, &sigset, NULL); + sigprocmask(SIG_UNBLOCK, &sigset, nullptr); } diff -Nru qtermwidget-0.14.1/lib/Pty.h qtermwidget-0.16.1/lib/Pty.h --- qtermwidget-0.14.1/lib/Pty.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Pty.h 2020-11-14 09:10:48.000000000 +0000 @@ -70,15 +70,15 @@ * To start the terminal process, call the run() method with the * name of the program to start and appropriate arguments. */ - explicit Pty(QObject* parent = 0); + explicit Pty(QObject* parent = nullptr); /** * Construct a process using an open pty master. * See KPtyProcess::KPtyProcess() */ - explicit Pty(int ptyMasterFd, QObject* parent = 0); + explicit Pty(int ptyMasterFd, QObject* parent = nullptr); - ~Pty(); + ~Pty() override; /** * Starts the terminal process. @@ -189,7 +189,7 @@ void receivedData(const char* buffer, int length); protected: - void setupChildProcess(); + void setupChildProcess() override; private slots: // called when data is received from the terminal process diff -Nru qtermwidget-0.14.1/lib/qtermwidget.cpp qtermwidget-0.16.1/lib/qtermwidget.cpp --- qtermwidget-0.14.1/lib/qtermwidget.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/qtermwidget.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -33,6 +33,12 @@ #include "SearchBar.h" #include "qtermwidget.h" +#ifdef Q_OS_MACOS +// Qt does not support fontconfig on macOS, so we need to use a "real" font name. +#define DEFAULT_FONT_FAMILY "Menlo" +#else +#define DEFAULT_FONT_FAMILY "Monospace" +#endif #define STEP_ZOOM 1 @@ -43,8 +49,10 @@ return (void*) new QTermWidget(startnow, (QWidget*)parent); } -struct TermWidgetImpl { - TermWidgetImpl(QWidget* parent = 0); +class TermWidgetImpl { + +public: + TermWidgetImpl(QWidget* parent = nullptr); TerminalDisplay *m_terminalDisplay; Session *m_session; @@ -156,8 +164,8 @@ m_impl->m_terminalDisplay->screenWindow()->screen()->getSelectionStart(startColumn, startLine); } - qDebug() << "current selection starts at: " << startColumn << startLine; - qDebug() << "current cursor position: " << m_impl->m_terminalDisplay->screenWindow()->cursorPosition(); + //qDebug() << "current selection starts at: " << startColumn << startLine; + //qDebug() << "current cursor position: " << m_impl->m_terminalDisplay->screenWindow()->cursorPosition(); QRegExp regExp(m_searchBar->searchText()); regExp.setPatternSyntax(m_searchBar->useRegularExpression() ? QRegExp::RegExp : QRegExp::FixedString); @@ -175,7 +183,7 @@ void QTermWidget::matchFound(int startColumn, int startLine, int endColumn, int endLine) { ScreenWindow* sw = m_impl->m_terminalDisplay->screenWindow(); - qDebug() << "Scroll to" << startLine; + //qDebug() << "Scroll to" << startLine; sw->scrollTo(startLine); sw->setTrackOutput(false); sw->notifyOutputChanged(); @@ -268,11 +276,11 @@ m_translator = new QTranslator(this); - for (const QString& dir : dirs) { - qDebug() << "Trying to load translation file from dir" << dir; + for (const QString& dir : qAsConst(dirs)) { + //qDebug() << "Trying to load translation file from dir" << dir; if (m_translator->load(QLocale::system(), QLatin1String("qtermwidget"), QLatin1String(QLatin1String("_")), dir)) { qApp->installTranslator(m_translator); - qDebug() << "Translations found in" << dir; + //qDebug() << "Translations found in" << dir; break; } } @@ -321,7 +329,7 @@ // m_impl->m_terminalDisplay->setSize(80, 40); QFont font = QApplication::font(); - font.setFamily(QLatin1String("Monospace")); + font.setFamily(QLatin1String(DEFAULT_FONT_FAMILY)); font.setPointSize(10); font.setStyleHint(QFont::TypeWriter); setTerminalFont(font); @@ -361,7 +369,7 @@ m_impl->m_terminalDisplay->setOpacity(level); } -void QTermWidget::setTerminalBackgroundImage(QString backgroundImage) +void QTermWidget::setTerminalBackgroundImage(const QString& backgroundImage) { m_impl->m_terminalDisplay->setBackgroundImage(backgroundImage); } @@ -419,7 +427,7 @@ void QTermWidget::setColorScheme(const QString& origName) { - const ColorScheme *cs = 0; + const ColorScheme *cs = nullptr; const bool isFile = QFile::exists(origName); const QString& name = isFile ? @@ -499,6 +507,11 @@ m_impl->m_session->sendText(text); } +void QTermWidget::sendKeyEvent(QKeyEvent *e) +{ + m_impl->m_session->sendKeyEvent(e); +} + void QTermWidget::resizeEvent(QResizeEvent*) { //qDebug("global window resizing...with %d %d", this->size().width(), this->size().height()); @@ -743,3 +756,21 @@ { return m_impl->m_terminalDisplay->margin(); } + +void QTermWidget::saveHistory(QIODevice *device) +{ + QTextStream stream(device); + PlainTextDecoder decoder; + decoder.begin(&stream); + m_impl->m_session->emulation()->writeToStream(&decoder, 0, m_impl->m_session->emulation()->lineCount()); +} + +void QTermWidget::setDrawLineChars(bool drawLineChars) +{ + m_impl->m_terminalDisplay->setDrawLineChars(drawLineChars); +} + +void QTermWidget::setBoldIntense(bool boldIntense) +{ + m_impl->m_terminalDisplay->setBoldIntense(boldIntense); +} diff -Nru qtermwidget-0.14.1/lib/qtermwidget.h qtermwidget-0.16.1/lib/qtermwidget.h --- qtermwidget-0.14.1/lib/qtermwidget.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/qtermwidget.h 2020-11-14 09:10:48.000000000 +0000 @@ -25,9 +25,10 @@ #include "Emulation.h" #include "Filter.h" #include "qtermwidget_export.h" +#include "qtermwidget_version.h" class QVBoxLayout; -struct TermWidgetImpl; +class TermWidgetImpl; class SearchBar; class QUrl; @@ -51,14 +52,14 @@ //Creation of widget QTermWidget(int startnow, // 1 = start shell programm immediatelly - QWidget * parent = 0); + QWidget * parent = nullptr); // A dummy constructor for Qt Designer. startnow is 1 by default - QTermWidget(QWidget *parent = 0); + QTermWidget(QWidget *parent = nullptr); - virtual ~QTermWidget(); + ~QTermWidget() override; //Initial size - QSize sizeHint() const; + QSize sizeHint() const override; // expose TerminalDisplay::TerminalSizeHint, setTerminalSizeHint void setTerminalSizeHint(bool on); @@ -86,7 +87,7 @@ void setTerminalFont(const QFont & font); QFont getTerminalFont(); void setTerminalOpacity(qreal level); - void setTerminalBackgroundImage(QString backgroundImage); + void setTerminalBackgroundImage(const QString& backgroundImage); //environment void setEnvironment(const QStringList & environment); @@ -125,6 +126,9 @@ // Send some text to terminal void sendText(const QString & text); + // Send key event to terminal + void sendKeyEvent(QKeyEvent* e); + // Sets whether flow control is enabled void setFlowControlEnabled(bool enabled); @@ -227,6 +231,10 @@ /** Get the empty space outside the terminal */ int getMargin() const; + + void setDrawLineChars(bool drawLineChars); + + void setBoldIntense(bool boldIntense); signals: void finished(); void copyAvailable(bool); @@ -287,8 +295,9 @@ void toggleShowSearchBar(); + void saveHistory(QIODevice *device); protected: - virtual void resizeEvent(QResizeEvent *); + void resizeEvent(QResizeEvent *) override; protected slots: void sessionFinished(); diff -Nru qtermwidget-0.14.1/lib/qtermwidget_version.h.in qtermwidget-0.16.1/lib/qtermwidget_version.h.in --- qtermwidget-0.14.1/lib/qtermwidget_version.h.in 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/lib/qtermwidget_version.h.in 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,33 @@ +/* Copyright (C) 2020 Axel Kittenberger (axel.kittenberger@univie.ac.at) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + + +#ifndef _Q_TERM_WIDGET_VERSION +#define _Q_TERM_WIDGET_VERSION + +#include +#define QTERMWIDGET_VERSION_MAJOR @QTERMWIDGET_VERSION_MAJOR@ +#define QTERMWIDGET_VERSION_MINOR @QTERMWIDGET_VERSION_MINOR@ +#define QTERMWIDGET_VERSION_PATCH @QTERMWIDGET_VERSION_PATCH@ +#define QTERMWIDGET_VERSION QT_VERSION_CHECK(\ + QTERMWIDGET_VERSION_MAJOR,\ + QTERMWIDGET_VERSION_MINOR,\ + QTERMWIDGET_VERSION_PATCH) + +#endif + diff -Nru qtermwidget-0.14.1/lib/Screen.cpp qtermwidget-0.16.1/lib/Screen.cpp --- qtermwidget-0.14.1/lib/Screen.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Screen.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -24,11 +24,11 @@ #include "Screen.h" // Standard -#include -#include +#include +#include #include -#include -#include +#include +#include // Qt #include @@ -1359,7 +1359,7 @@ else { HistoryScroll* oldScroll = history; - history = t.scroll(0); + history = t.scroll(nullptr); delete oldScroll; } } diff -Nru qtermwidget-0.14.1/lib/Screen.h qtermwidget-0.16.1/lib/Screen.h --- qtermwidget-0.14.1/lib/Screen.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Screen.h 2020-11-14 09:10:48.000000000 +0000 @@ -551,6 +551,8 @@ static void fillWithDefaultChar(Character* dest, int count); private: + Screen(const Screen &) = delete; + Screen &operator=(const Screen &) = delete; //copies a line of text from the screen or history into a stream using a //specified character decoder. Returns the number of lines actually copied, @@ -637,8 +639,8 @@ int _bottomMargin; // states ---------------- - int currentModes[MODES_SCREEN]; - int savedModes[MODES_SCREEN]; + bool currentModes[MODES_SCREEN]; + bool savedModes[MODES_SCREEN]; // ---------------------------- diff -Nru qtermwidget-0.14.1/lib/ScreenWindow.cpp qtermwidget-0.16.1/lib/ScreenWindow.cpp --- qtermwidget-0.14.1/lib/ScreenWindow.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/ScreenWindow.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -30,7 +30,8 @@ ScreenWindow::ScreenWindow(QObject* parent) : QObject(parent) - , _windowBuffer(0) + , _screen(nullptr) + , _windowBuffer(nullptr) , _windowBufferSize(0) , _bufferNeedsUpdate(true) , _windowLines(1) @@ -59,7 +60,7 @@ { // reallocate internal buffer if the window size has changed int size = windowLines() * windowColumns(); - if (_windowBuffer == 0 || _windowBufferSize != size) + if (_windowBuffer == nullptr || _windowBufferSize != size) { delete[] _windowBuffer; _windowBufferSize = size; @@ -259,7 +260,7 @@ if ( atEndOfOutput() && equalToScreenSize ) return _screen->lastScrolledRegion(); else - return QRect(0,0,windowColumns(),windowLines()); + return {0,0,windowColumns(),windowLines()}; } void ScreenWindow::notifyOutputChanged() @@ -291,4 +292,51 @@ emit outputChanged(); } +void ScreenWindow::handleCommandFromKeyboard(KeyboardTranslator::Command command) +{ + // Keyboard-based navigation + bool update = false; + + // EraseCommand is handled in Vt102Emulation + if ( command & KeyboardTranslator::ScrollPageUpCommand ) + { + scrollBy( ScreenWindow::ScrollPages , -1 ); + update = true; + } + if ( command & KeyboardTranslator::ScrollPageDownCommand ) + { + scrollBy( ScreenWindow::ScrollPages , 1 ); + update = true; + } + if ( command & KeyboardTranslator::ScrollLineUpCommand ) + { + scrollBy( ScreenWindow::ScrollLines , -1 ); + update = true; + } + if ( command & KeyboardTranslator::ScrollLineDownCommand ) + { + scrollBy( ScreenWindow::ScrollLines , 1 ); + update = true; + } + if ( command & KeyboardTranslator::ScrollDownToBottomCommand ) + { + Q_EMIT scrollToEnd(); + update = true; + } + if ( command & KeyboardTranslator::ScrollUpToTopCommand) + { + scrollTo(0); + update = true; + } + // TODO: KeyboardTranslator::ScrollLockCommand + // TODO: KeyboardTranslator::SendCommand + + if ( update ) + { + setTrackOutput( atEndOfOutput() ); + + Q_EMIT outputChanged(); + } +} + //#include "ScreenWindow.moc" diff -Nru qtermwidget-0.14.1/lib/ScreenWindow.h qtermwidget-0.16.1/lib/ScreenWindow.h --- qtermwidget-0.14.1/lib/ScreenWindow.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/ScreenWindow.h 2020-11-14 09:10:48.000000000 +0000 @@ -27,6 +27,7 @@ // Konsole #include "Character.h" +#include "KeyboardTranslator.h" namespace Konsole { @@ -64,8 +65,8 @@ * to notify the window when the associated screen has changed and synchronize selection updates * between all views on a session. */ - ScreenWindow(QObject* parent = 0); - virtual ~ScreenWindow(); + ScreenWindow(QObject* parent = nullptr); + ~ScreenWindow() override; /** Sets the screen which this window looks onto */ void setScreen(Screen* screen); @@ -223,6 +224,8 @@ */ void notifyOutputChanged(); + void handleCommandFromKeyboard(KeyboardTranslator::Command command); + signals: /** * Emitted when the contents of the associated terminal screen (see screen()) changes. @@ -239,6 +242,8 @@ /** Emitted when the selection is changed. */ void selectionChanged(); + void scrollToEnd(); + private: int endWindowLine() const; void fillUnusedArea(); diff -Nru qtermwidget-0.14.1/lib/SearchBar.cpp qtermwidget-0.16.1/lib/SearchBar.cpp --- qtermwidget-0.14.1/lib/SearchBar.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/SearchBar.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -81,6 +81,7 @@ { QWidget::show(); widget.searchTextEdit->setFocus(); + widget.searchTextEdit->selectAll(); } void SearchBar::noMatchFound() @@ -97,11 +98,11 @@ { if (keyEvent->modifiers() == Qt::ShiftModifier) { - findPrevious(); + Q_EMIT findPrevious(); } else { - findNext(); + Q_EMIT findNext(); } } else if (keyEvent->key() == Qt::Key_Escape) @@ -112,8 +113,6 @@ void SearchBar::clearBackgroundColor() { - QPalette p; - p.setColor(QPalette::Base, Qt::white); - widget.searchTextEdit->setPalette(p); + widget.searchTextEdit->setPalette(QWidget::window()->palette()); } diff -Nru qtermwidget-0.14.1/lib/SearchBar.h qtermwidget-0.16.1/lib/SearchBar.h --- qtermwidget-0.14.1/lib/SearchBar.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/SearchBar.h 2020-11-14 09:10:48.000000000 +0000 @@ -27,8 +27,8 @@ class SearchBar : public QWidget { Q_OBJECT public: - SearchBar(QWidget* parent = 0); - virtual ~SearchBar(); + SearchBar(QWidget* parent = nullptr); + ~SearchBar() override; virtual void show(); QString searchText(); bool useRegularExpression(); @@ -45,7 +45,7 @@ void findPrevious(); protected: - virtual void keyReleaseEvent(QKeyEvent* keyEvent); + void keyReleaseEvent(QKeyEvent* keyEvent) override; private slots: void clearBackgroundColor(); diff -Nru qtermwidget-0.14.1/lib/Session.cpp qtermwidget-0.16.1/lib/Session.cpp --- qtermwidget-0.14.1/lib/Session.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Session.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -26,7 +26,7 @@ #include "Session.h" // Standard -#include +#include // Qt #include @@ -50,8 +50,8 @@ Session::Session(QObject* parent) : QObject(parent), - _shellProcess(0) - , _emulation(0) + _shellProcess(nullptr) + , _emulation(nullptr) , _monitorActivity(false) , _monitorSilence(false) , _notifiedActivity(false) @@ -172,7 +172,7 @@ _views.append(widget); - if ( _emulation != 0 ) { + if ( _emulation != nullptr ) { // connect emulation - view signals and slots connect( widget , SIGNAL(keyPressedSignal(QKeyEvent *)) , _emulation , SLOT(sendKeyEvent(QKeyEvent *)) ); @@ -220,19 +220,19 @@ { _views.removeAll(widget); - disconnect(widget,0,this,0); + disconnect(widget,nullptr,this,nullptr); - if ( _emulation != 0 ) { + if ( _emulation != nullptr ) { // disconnect // - key presses signals from widget // - mouse activity signals from widget // - string sending signals from widget // // ... and any other signals connected in addView() - disconnect( widget, 0, _emulation, 0); + disconnect( widget, nullptr, _emulation, nullptr); // disconnect state change signals emitted by emulation - disconnect( _emulation , 0 , widget , 0); + disconnect( _emulation , nullptr , widget , nullptr); } // close the session automatically when the last view is removed @@ -451,10 +451,7 @@ void Session::activityStateSet(int state) { if (state==NOTIFYBELL) { - QString s; - s.sprintf("Bell in session '%s'",_nameTitle.toUtf8().data()); - - emit bellRequest( s ); + emit bellRequest(tr("Bell in session '%1'").arg(_nameTitle)); } else if (state==NOTIFYACTIVITY) { if (_monitorSilence) { _monitorTimer->start(_silenceSeconds*1000); @@ -568,6 +565,11 @@ _emulation->sendText(text); } +void Session::sendKeyEvent(QKeyEvent* e) const +{ + _emulation->sendKeyEvent(e); +} + Session::~Session() { delete _emulation; @@ -593,21 +595,22 @@ return; } + // message is not being used. But in the original kpty.cpp file + // (https://cgit.kde.org/kpty.git/) it's part of a notification. + // So, we make it translatable, hoping that in the future it will + // be used in some kind of notification. QString message; if (!_wantedClose || exitStatus != 0) { if (_shellProcess->exitStatus() == QProcess::NormalExit) { - message.sprintf("Session '%s' exited with status %d.", - _nameTitle.toUtf8().data(), exitStatus); + message = tr("Session '%1' exited with status %2.").arg(_nameTitle).arg(exitStatus); } else { - message.sprintf("Session '%s' crashed.", - _nameTitle.toUtf8().data()); + message = tr("Session '%1' crashed.").arg(_nameTitle); } } if ( !_wantedClose && _shellProcess->exitStatus() != QProcess::NormalExit ) - message.sprintf("Session '%s' exited unexpectedly.", - _nameTitle.toUtf8().data()); + message = tr("Session '%1' exited unexpectedly.").arg(_nameTitle); else emit finished(); @@ -1013,8 +1016,7 @@ bool wasMaster = _sessions[session]; _sessions[session] = master; - if ((!wasMaster && !master) - || (wasMaster && master)) { + if (wasMaster == master) { return; } diff -Nru qtermwidget-0.14.1/lib/Session.h qtermwidget-0.16.1/lib/Session.h --- qtermwidget-0.14.1/lib/Session.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Session.h 2020-11-14 09:10:48.000000000 +0000 @@ -71,8 +71,8 @@ * falls back to using the program specified in the SHELL environment * variable. */ - Session(QObject* parent = 0); - virtual ~Session(); + Session(QObject* parent = nullptr); + ~Session() override; /** * Returns true if the session is currently running. This will be true @@ -314,6 +314,8 @@ */ void sendText(const QString & text) const; + void sendKeyEvent(QKeyEvent* e) const; + /** * Returns the process id of the terminal process. * This is the id used by the system API to refer to the process. @@ -583,7 +585,7 @@ /** Constructs an empty session group. */ SessionGroup(); /** Destroys the session group and removes all connections between master and slave sessions. */ - ~SessionGroup(); + ~SessionGroup() override; /** Adds a session to the group. */ void addSession( Session * session ); diff -Nru qtermwidget-0.14.1/lib/ShellCommand.cpp qtermwidget-0.16.1/lib/ShellCommand.cpp --- qtermwidget-0.14.1/lib/ShellCommand.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/ShellCommand.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -59,9 +59,8 @@ } } ShellCommand::ShellCommand(const QString & command , const QStringList & arguments) + : _arguments(arguments) { - _arguments = arguments; - if ( !_arguments.isEmpty() ) { _arguments[0] = command; } diff -Nru qtermwidget-0.14.1/lib/TerminalCharacterDecoder.cpp qtermwidget-0.16.1/lib/TerminalCharacterDecoder.cpp --- qtermwidget-0.14.1/lib/TerminalCharacterDecoder.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/TerminalCharacterDecoder.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -31,9 +31,11 @@ // Konsole #include "konsole_wcwidth.h" +#include + using namespace Konsole; PlainTextDecoder::PlainTextDecoder() - : _output(0) + : _output(nullptr) , _includeTrailingWhitespace(true) , _recordLinePositions(false) { @@ -55,7 +57,7 @@ } void PlainTextDecoder::end() { - _output = 0; + _output = nullptr; } void PlainTextDecoder::setRecordLinePositions(bool record) @@ -109,7 +111,7 @@ } HTMLDecoder::HTMLDecoder() : - _output(0) + _output(nullptr) ,_colorTable(base_color_table) ,_innerSpanOpen(false) ,_lastRendition(DEFAULT_RENDITION) @@ -139,7 +141,7 @@ *_output << QString::fromStdWString(text); - _output = 0; + _output = nullptr; } diff -Nru qtermwidget-0.14.1/lib/TerminalCharacterDecoder.h qtermwidget-0.16.1/lib/TerminalCharacterDecoder.h --- qtermwidget-0.14.1/lib/TerminalCharacterDecoder.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/TerminalCharacterDecoder.h 2020-11-14 09:10:48.000000000 +0000 @@ -92,12 +92,12 @@ /** Enables recording of character positions at which new lines are added. See linePositions() */ void setRecordLinePositions(bool record); - virtual void begin(QTextStream* output); - virtual void end(); + void begin(QTextStream* output) override; + void end() override; - virtual void decodeLine(const Character* const characters, + void decodeLine(const Character* const characters, int count, - LineProperty properties); + LineProperty properties) override; private: @@ -125,12 +125,12 @@ */ void setColorTable( const ColorEntry* table ); - virtual void decodeLine(const Character* const characters, + void decodeLine(const Character* const characters, int count, - LineProperty properties); + LineProperty properties) override; - virtual void begin(QTextStream* output); - virtual void end(); + void begin(QTextStream* output) override; + void end() override; private: void openSpan(std::wstring& text , const QString& style); diff -Nru qtermwidget-0.14.1/lib/TerminalDisplay.cpp qtermwidget-0.16.1/lib/TerminalDisplay.cpp --- qtermwidget-0.14.1/lib/TerminalDisplay.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/TerminalDisplay.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -82,17 +82,17 @@ { // Fixme: could add faint colors here, also. // normal - ColorEntry(QColor(0x00,0x00,0x00), 0), ColorEntry( QColor(0xB2,0xB2,0xB2), 1), // Dfore, Dback - ColorEntry(QColor(0x00,0x00,0x00), 0), ColorEntry( QColor(0xB2,0x18,0x18), 0), // Black, Red - ColorEntry(QColor(0x18,0xB2,0x18), 0), ColorEntry( QColor(0xB2,0x68,0x18), 0), // Green, Yellow - ColorEntry(QColor(0x18,0x18,0xB2), 0), ColorEntry( QColor(0xB2,0x18,0xB2), 0), // Blue, Magenta - ColorEntry(QColor(0x18,0xB2,0xB2), 0), ColorEntry( QColor(0xB2,0xB2,0xB2), 0), // Cyan, White + ColorEntry(QColor(0x00,0x00,0x00), false), ColorEntry( QColor(0xB2,0xB2,0xB2), true), // Dfore, Dback + ColorEntry(QColor(0x00,0x00,0x00), false), ColorEntry( QColor(0xB2,0x18,0x18), false), // Black, Red + ColorEntry(QColor(0x18,0xB2,0x18), false), ColorEntry( QColor(0xB2,0x68,0x18), false), // Green, Yellow + ColorEntry(QColor(0x18,0x18,0xB2), false), ColorEntry( QColor(0xB2,0x18,0xB2), false), // Blue, Magenta + ColorEntry(QColor(0x18,0xB2,0xB2), false), ColorEntry( QColor(0xB2,0xB2,0xB2), false), // Cyan, White // intensiv - ColorEntry(QColor(0x00,0x00,0x00), 0), ColorEntry( QColor(0xFF,0xFF,0xFF), 1), - ColorEntry(QColor(0x68,0x68,0x68), 0), ColorEntry( QColor(0xFF,0x54,0x54), 0), - ColorEntry(QColor(0x54,0xFF,0x54), 0), ColorEntry( QColor(0xFF,0xFF,0x54), 0), - ColorEntry(QColor(0x54,0x54,0xFF), 0), ColorEntry( QColor(0xFF,0x54,0xFF), 0), - ColorEntry(QColor(0x54,0xFF,0xFF), 0), ColorEntry( QColor(0xFF,0xFF,0xFF), 0) + ColorEntry(QColor(0x00,0x00,0x00), false), ColorEntry( QColor(0xFF,0xFF,0xFF), true), + ColorEntry(QColor(0x68,0x68,0x68), false), ColorEntry( QColor(0xFF,0x54,0x54), false), + ColorEntry(QColor(0x54,0xFF,0x54), false), ColorEntry( QColor(0xFF,0xFF,0x54), false), + ColorEntry(QColor(0x54,0x54,0xFF), false), ColorEntry( QColor(0xFF,0x54,0xFF), false), + ColorEntry(QColor(0x54,0xFF,0xFF), false), ColorEntry( QColor(0xFF,0xFF,0xFF), false) }; // scroll increment used when dragging selection at top/bottom of window. @@ -128,7 +128,7 @@ // disconnect existing screen window if any if ( _screenWindow ) { - disconnect( _screenWindow , 0 , this , 0 ); + disconnect( _screenWindow , nullptr , this , nullptr ); } _screenWindow = window; @@ -142,6 +142,7 @@ connect( _screenWindow , SIGNAL(outputChanged()) , this , SLOT(updateImage()) ); connect( _screenWindow , SIGNAL(outputChanged()) , this , SLOT(updateFilters()) ); connect( _screenWindow , SIGNAL(scrolled(int)) , this , SLOT(updateFilters()) ); + connect( _screenWindow , &ScreenWindow::scrollToEnd , this , &TerminalDisplay::scrollToEnd ); window->setWindowLines(_lines); } } @@ -194,10 +195,12 @@ QCodec. */ -static inline bool isLineChar(wchar_t c) { return ((c & 0xFF80) == 0x2500);} -static inline bool isLineCharString(const std::wstring& string) -{ - return (string.length() > 0) && (isLineChar(string[0])); +bool TerminalDisplay::isLineChar(wchar_t c) const { + return _drawLineChars && ((c & 0xFF80) == 0x2500); +} + +bool TerminalDisplay::isLineCharString(const std::wstring& string) const { + return (string.length() > 0) && (isLineChar(string[0])); } @@ -262,9 +265,7 @@ _drawTextAdditionHeight = 0; } - // update the original content - _drawTextTestFlag = false; - update(); + _drawTextTestFlag = false; } void TerminalDisplay::setVTFont(const QFont& f) @@ -312,9 +313,9 @@ TerminalDisplay::TerminalDisplay(QWidget *parent) :QWidget(parent) -,_screenWindow(0) +,_screenWindow(nullptr) ,_allowBell(true) -,_gridLayout(0) +,_gridLayout(nullptr) ,_fontHeight(1) ,_fontWidth(1) ,_fontAscent(1) @@ -325,7 +326,7 @@ ,_usedColumns(1) ,_contentHeight(1) ,_contentWidth(1) -,_image(0) +,_image(nullptr) ,_randomSeed(0) ,_resizing(false) ,_terminalSizeHint(false) @@ -349,10 +350,10 @@ ,_tripleClickMode(SelectWholeLine) ,_isFixedSize(false) ,_possibleTripleClick(false) -,_resizeWidget(0) -,_resizeTimer(0) +,_resizeWidget(nullptr) +,_resizeTimer(nullptr) ,_flowControlWarningEnabled(false) -,_outputSuspendedLabel(0) +,_outputSuspendedLabel(nullptr) ,_lineSpacing(0) ,_colorsInverted(false) ,_blendColor(qRgba(0,0,0,0xff)) @@ -361,6 +362,7 @@ ,mMotionAfterPasting(NoMoveScreenWindow) ,_leftBaseMargin(1) ,_topBaseMargin(1) +,_drawLineChars(true) { // variables for draw text _drawTextAdditionHeight = 0; @@ -710,7 +712,7 @@ _blendColor = color.rgba(); } -void TerminalDisplay::setBackgroundImage(QString backgroundImage) +void TerminalDisplay::setBackgroundImage(const QString& backgroundImage) { if (!backgroundImage.isEmpty()) { @@ -751,7 +753,7 @@ const QColor& /*backgroundColor*/, bool& invertCharacterColor) { - QRect cursorRect = rect; + QRectF cursorRect = rect; cursorRect.setHeight(_fontHeight - _lineSpacing - 1); if (!_cursorBlinking) @@ -765,12 +767,12 @@ { // draw the cursor outline, adjusting the area so that // it is draw entirely inside 'rect' - int penWidth = qMax(1,painter.pen().width()); + float penWidth = qMax(1,painter.pen().width()); painter.drawRect(cursorRect.adjusted(penWidth/2, penWidth/2, - - penWidth/2 - penWidth%2, - - penWidth/2 - penWidth%2)); + - penWidth/2, + - penWidth/2)); if ( hasFocus() ) { painter.fillRect(cursorRect, _cursorColor.isValid() ? _cursorColor : foregroundColor); @@ -941,7 +943,7 @@ // return if there is nothing to do if ( lines == 0 - || _image == 0 + || _image == nullptr || !region.isValid() || (region.top() + abs(lines)) >= region.bottom() || this->_lines <= region.height() ) return; @@ -960,8 +962,10 @@ // Set the QT_FLUSH_PAINT environment variable to '1' before starting the // application to monitor repainting. // - int scrollBarWidth = _scrollBar->isHidden() ? 0 : _scrollBar->width(); - const int SCROLLBAR_CONTENT_GAP = 1; + int scrollBarWidth = _scrollBar->isHidden() ? 0 : + _scrollBar->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, _scrollBar) ? + 0 : _scrollBar->width(); + const int SCROLLBAR_CONTENT_GAP = scrollBarWidth == 0 ? 0 : 1; QRect scrollRect; if ( _scrollbarLocation == QTermWidget::ScrollBarLeft ) { @@ -1371,18 +1375,16 @@ { calDrawTextAdditionHeight(paint); } - else + + const auto rects = (pe->region() & contentsRect()).rects(); + for (const QRect &rect : rects) { - const auto rects = (pe->region() & contentsRect()).rects(); - for (const QRect &rect : rects) - { - drawBackground(paint,rect,palette().background().color(), - true /* use opacity setting */); - drawContents(paint, rect); - } - drawInputMethodPreeditString(paint,preeditRect()); - paintFilters(paint); + drawBackground(paint,rect,palette().background().color(), + true /* use opacity setting */); + drawContents(paint, rect); } + drawInputMethodPreeditString(paint,preeditRect()); + paintFilters(paint); } QPoint TerminalDisplay::cursorPosition() const @@ -1390,7 +1392,7 @@ if (_screenWindow) return _screenWindow->cursorPosition(); else - return QPoint(0,0); + return {0,0}; } QRect TerminalDisplay::preeditRect() const @@ -1398,7 +1400,7 @@ const int preeditLength = string_width(_inputMethodData.preeditString); if ( preeditLength == 0 ) - return QRect(); + return {}; return QRect(_leftMargin + _fontWidth*cursorPosition().x(), _topMargin + _fontHeight*cursorPosition().y(), @@ -1560,10 +1562,10 @@ int left = _fixedFont ? _fontWidth * startColumn : textWidth(0, startColumn, line); int top = _fontHeight * line; int width = _fixedFont ? _fontWidth * length : textWidth(startColumn, length, line); - return QRect(_leftMargin + topLeftX + left, + return {_leftMargin + topLeftX + left, _topMargin + topLeftY + top, width, - _fontHeight); + _fontHeight}; } void TerminalDisplay::drawContents(QPainter &paint, const QRect &rect) @@ -2346,26 +2348,24 @@ void TerminalDisplay::getCharacterPosition(const QPoint& widgetPoint,int& line,int& column) const { line = (widgetPoint.y()-contentsRect().top()-_topMargin) / _fontHeight; + if (line < 0) + line = 0; + if (line >= _usedLines) + line = _usedLines - 1; + int x = widgetPoint.x() + _fontWidth / 2 - contentsRect().left() - _leftMargin; if ( _fixedFont ) - column = (widgetPoint.x() + _fontWidth/2 -contentsRect().left()-_leftMargin) / _fontWidth; + column = x / _fontWidth; else { - int x = contentsRect().left() + widgetPoint.x() - _fontWidth/2; column = 0; - - while(x > textWidth(0, column, line)) + while(column + 1 < _usedColumns && x > textWidth(0, column + 1, line)) column++; } - if ( line < 0 ) - line = 0; if ( column < 0 ) column = 0; - if ( line >= _usedLines ) - line = _usedLines-1; - // the column value returned can be equal to _usedColumns, which // is the position just after the last character displayed in a line. // @@ -2681,7 +2681,10 @@ void TerminalDisplay::setSelection(const QString& t) { - QApplication::clipboard()->setText(t, QClipboard::Selection); + if (QApplication::clipboard()->supportsSelection()) + { + QApplication::clipboard()->setText(t, QClipboard::Selection); + } } void TerminalDisplay::copyClipboard() @@ -2734,50 +2737,6 @@ { 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 if ( event->key() == Qt::Key_End) - { - scrollToEnd(); - } - else if ( event->key() == Qt::Key_Home) - { - _screenWindow->scrollTo(0); - } - 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 -Nru qtermwidget-0.14.1/lib/TerminalDisplay.h qtermwidget-0.16.1/lib/TerminalDisplay.h --- qtermwidget-0.14.1/lib/TerminalDisplay.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/TerminalDisplay.h 2020-11-14 09:10:48.000000000 +0000 @@ -82,8 +82,8 @@ public: /** Constructs a new terminal display widget with the specified parent. */ - TerminalDisplay(QWidget *parent=0); - virtual ~TerminalDisplay(); + TerminalDisplay(QWidget *parent=nullptr); + ~TerminalDisplay() override; /** Returns the terminal color palette used by the display. */ const ColorEntry* colorTable() const; @@ -104,7 +104,7 @@ void setOpacity(qreal opacity); /** Sets the background image of the terminal display. */ - void setBackgroundImage(QString backgroundImage); + void setBackgroundImage(const QString& backgroundImage); /** * Specifies whether the terminal display has a vertical scroll bar, and if so whether it @@ -266,7 +266,7 @@ void setFixedSize(int cols, int lins); // reimplemented - QSize sizeHint() const; + QSize sizeHint() const override; /** * Sets which characters, in addition to letters and numbers, @@ -352,6 +352,12 @@ static bool antialias() { return _antialiasText; } /** + * Specify whether line chars should be drawn by ourselves or left to + * underlying font rendering libraries. + */ + void setDrawLineChars(bool drawLineChars) { _drawLineChars = drawLineChars; } + + /** * Specifies whether characters with intense colors should be rendered * as bold. Defaults to true. */ @@ -556,30 +562,30 @@ void usesMouseChanged(); protected: - virtual bool event( QEvent * ); + bool event( QEvent * ) override; - virtual void paintEvent( QPaintEvent * ); + void paintEvent( QPaintEvent * ) override; - virtual void showEvent(QShowEvent*); - virtual void hideEvent(QHideEvent*); - virtual void resizeEvent(QResizeEvent*); + void showEvent(QShowEvent*) override; + void hideEvent(QHideEvent*) override; + void resizeEvent(QResizeEvent*) override; virtual void fontChange(const QFont &font); - virtual void focusInEvent(QFocusEvent* event); - virtual void focusOutEvent(QFocusEvent* event); - virtual void keyPressEvent(QKeyEvent* event); - virtual void mouseDoubleClickEvent(QMouseEvent* ev); - virtual void mousePressEvent( QMouseEvent* ); - virtual void mouseReleaseEvent( QMouseEvent* ); - virtual void mouseMoveEvent( QMouseEvent* ); + void focusInEvent(QFocusEvent* event) override; + void focusOutEvent(QFocusEvent* event) override; + void keyPressEvent(QKeyEvent* event) override; + void mouseDoubleClickEvent(QMouseEvent* ev) override; + void mousePressEvent( QMouseEvent* ) override; + void mouseReleaseEvent( QMouseEvent* ) override; + void mouseMoveEvent( QMouseEvent* ) override; virtual void extendSelection( const QPoint& pos ); - virtual void wheelEvent( QWheelEvent* ); + void wheelEvent( QWheelEvent* ) override; - virtual bool focusNextPrevChild( bool next ); + bool focusNextPrevChild( bool next ) override; // drag and drop - virtual void dragEnterEvent(QDragEnterEvent* event); - virtual void dropEvent(QDropEvent* event); + void dragEnterEvent(QDragEnterEvent* event) override; + void dropEvent(QDropEvent* event) override; void doDrag(); enum DragState { diNone, diPending, diDragging }; @@ -602,8 +608,8 @@ void mouseTripleClickEvent(QMouseEvent* ev); // reimplemented - virtual void inputMethodEvent ( QInputMethodEvent* event ); - virtual QVariant inputMethodQuery( Qt::InputMethodQuery query ) const; + void inputMethodEvent ( QInputMethodEvent* event ) override; + QVariant inputMethodQuery( Qt::InputMethodQuery query ) const override; protected slots: @@ -697,6 +703,9 @@ bool handleShortcutOverrideEvent(QKeyEvent* event); + bool isLineChar(wchar_t c) const; + bool isLineCharString(const std::wstring& string) const; + // the window onto the terminal screen which this display // is currently showing. QPointer _screenWindow; @@ -827,6 +836,8 @@ int _leftBaseMargin; int _topBaseMargin; + bool _drawLineChars; + public: static void setTransparencyEnabled(bool enable) { @@ -841,8 +852,8 @@ public: AutoScrollHandler(QWidget* parent); protected: - virtual void timerEvent(QTimerEvent* event); - virtual bool eventFilter(QObject* watched,QEvent* event); + void timerEvent(QTimerEvent* event) override; + bool eventFilter(QObject* watched,QEvent* event) override; private: QWidget* widget() const { return static_cast(parent()); } int _timerId; diff -Nru qtermwidget-0.14.1/lib/tools.cpp qtermwidget-0.16.1/lib/tools.cpp --- qtermwidget-0.14.1/lib/tools.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/tools.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -17,7 +17,7 @@ QString k(QLatin1String(KB_LAYOUT_DIR)); QDir d(k); - qDebug() << "default KB_LAYOUT_DIR: " << k; + //qDebug() << "default KB_LAYOUT_DIR: " << k; if (d.exists()) { @@ -25,17 +25,18 @@ return rval; } +#ifdef Q_OS_MAC // subdir in the app location d.setPath(QCoreApplication::applicationDirPath() + QLatin1String("/kb-layouts/")); //qDebug() << d.path(); if (d.exists()) return QCoreApplication::applicationDirPath() + QLatin1String("/kb-layouts/"); -#ifdef Q_WS_MAC - d.setPath(QCoreApplication::applicationDirPath() + "/../Resources/kb-layouts/"); + + d.setPath(QCoreApplication::applicationDirPath() + QLatin1String("/../Resources/kb-layouts/")); if (d.exists()) - return QCoreApplication::applicationDirPath() + "/../Resources/kb-layouts/"; + return QCoreApplication::applicationDirPath() + QLatin1String("/../Resources/kb-layouts/"); #endif - qDebug() << "Cannot find KB_LAYOUT_DIR. Default:" << k; + //qDebug() << "Cannot find KB_LAYOUT_DIR. Default:" << k; return QString(); } @@ -67,6 +68,7 @@ if (d.exists()) rval << k.append(QLatin1Char('/')); +#ifdef Q_OS_MAC // subdir in the app location d.setPath(QCoreApplication::applicationDirPath() + QLatin1String("/color-schemes/")); //qDebug() << d.path(); @@ -76,16 +78,16 @@ rval.clear(); rval << (QCoreApplication::applicationDirPath() + QLatin1String("/color-schemes/")); } -#ifdef Q_WS_MAC - d.setPath(QCoreApplication::applicationDirPath() + "/../Resources/color-schemes/"); + d.setPath(QCoreApplication::applicationDirPath() + QLatin1String("/../Resources/color-schemes/")); if (d.exists()) { if (!rval.isEmpty()) rval.clear(); - rval << (QCoreApplication::applicationDirPath() + "/../Resources/color-schemes/"); + rval << (QCoreApplication::applicationDirPath() + QLatin1String("/../Resources/color-schemes/")); } #endif - for (const QString& custom_dir : const_cast(custom_color_schemes_dirs)) + + for (const QString& custom_dir : qAsConst(custom_color_schemes_dirs)) { d.setPath(custom_dir); if (d.exists()) diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_arn.ts qtermwidget-0.16.1/lib/translations/qtermwidget_arn.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_arn.ts 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_arn.ts 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,148 @@ + + + + + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + + Konsole::TerminalDisplay + + + Size: XXX x XXX + + + + + Size: %1 x %2 + + + + + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> + + + + + Konsole::Vt102Emulation + + + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. + + + + + QObject + + + + Un-named Color Scheme + + + + + Accessible Color Scheme + + + + + Open Link + + + + + Copy Link Address + + + + + Send Email To... + + + + + Copy Email Address + + + + + QTermWidget + + + Color Scheme Error + + + + + Cannot load color scheme: %1 + + + + + SearchBar + + + Match case + + + + + Regular expression + + + + + Highlight all matches + + + + + SearchBar + + + + + X + + + + + Find: + + + + + < + + + + + > + + + + + ... + + + + diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_ast.ts qtermwidget-0.16.1/lib/translations/qtermwidget_ast.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_ast.ts 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_ast.ts 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,148 @@ + + + + + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + + Konsole::TerminalDisplay + + + Size: XXX x XXX + + + + + Size: %1 x %2 + + + + + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> + + + + + Konsole::Vt102Emulation + + + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. + + + + + QObject + + + + Un-named Color Scheme + + + + + Accessible Color Scheme + + + + + Open Link + + + + + Copy Link Address + + + + + Send Email To... + + + + + Copy Email Address + + + + + QTermWidget + + + Color Scheme Error + + + + + Cannot load color scheme: %1 + + + + + SearchBar + + + Match case + + + + + Regular expression + + + + + Highlight all matches + + + + + SearchBar + + + + + X + + + + + Find: + + + + + < + + + + + > + + + + + ... + + + + diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_ca.ts qtermwidget-0.16.1/lib/translations/qtermwidget_ca.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_ca.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_ca.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Mida: XXX x XXX - + Size: %1 x %2 Mida: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>La sortida ha estat <a href="http://en.wikipedia.org/wiki/Flow_control">suspesa</a> en prémer Ctrl+S. Premeu <b>Ctrl+Q</b> per reprendre-la.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. No hi ha disponible cap traductor de teclat. No es disposa de la informació necessària per convertir la pressió de les tecles a caràcters al terminal. @@ -41,22 +64,22 @@ Esquema de color accessible - + Open Link Obre l'enllaç - + Copy Link Address Copia l'adreça de l'enllaç - + Send Email To... Envia un correu electrònic a... - + Copy Email Address Copia l'adreça de correu electrònic @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Error de l'esquema de color - + Cannot load color scheme: %1 No es pot carregar l'esquema de color: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_cs.ts qtermwidget-0.16.1/lib/translations/qtermwidget_cs.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_cs.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_cs.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,29 +2,52 @@ + Konsole::Session + + + Bell in session '%1' + Zvonek v sezení '%1' + + + + Session '%1' exited with status %2. + Sezení '%1' ukončeno se stavem %2. + + + + Session '%1' crashed. + Sezení '%1' spadlo. + + + + Session '%1' exited unexpectedly. + Sezení '%1' neočekávaně ukončeno. + + + Konsole::TerminalDisplay - + Size: XXX x XXX Velikost: XXX x XXX - + Size: %1 x %2 Velikost: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> - <qt>Výstup byl <a href="http://en.wikipedia.org/wiki/Flow_control">pozastaven</a> stisknutím Ctrl+S. Znovu ho spustíte stisknutím <b>Ctrl+Q</b>.</qt> + <qt>Výstup byl <a href="http://en.wikipedia.org/wiki/Flow_control">pozastaven</a> stisknutím Ctrl+S. Znovu ho spustíte stisknutím <b>Ctrl+Q</b>.</qt> Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. - Není k dispozici žádný překladač klávesnice. Chybí informace pro převod kódů stisknutých kláves na znaky posílané na terminál. + Není k dispozici žádný překladač klávesnice. Chybí tak informace pro převod kódů stisknutých kláves na znaky posílané na terminál. @@ -38,25 +61,25 @@ Accessible Color Scheme - Barevné schéma pro zrakově hendikepované uživatele + Barevné schéma pro uživatele se zrakovou vadou - + Open Link Otevřít odkaz - + Copy Link Address Zkopírovat adresu odkazu - + Send Email To... Poslat e-mail na… - + Copy Email Address Zkopírovat e-mailovou adresu @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Chyba barevného schématu - + Cannot load color scheme: %1 Nedaří se načíst barevné schéma: %1 @@ -94,7 +117,7 @@ SearchBar - Pruh hledání + Lišta hledání diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_cy.ts qtermwidget-0.16.1/lib/translations/qtermwidget_cy.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_cy.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_cy.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX - + Size: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. @@ -41,22 +64,22 @@ - + Open Link - + Copy Link Address - + Send Email To... - + Copy Email Address @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error - + Cannot load color scheme: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_da.ts qtermwidget-0.16.1/lib/translations/qtermwidget_da.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_da.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_da.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Størrelse: XXX x XXX - + Size: %1 x %2 Størrelse: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>Output er blevet <a href="http://en.wikipedia.org/wiki/Flow_control">suspenderet</a> ved tryk på Ctrl+S. Tryk på <b>Ctrl+Q</b> for at genoptage.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. Ingen tastaturoversætter tilgængelig. Informationen, som er nødvendig for at konvertere tastetryk til tegn, som sendes til terminalen, mangler. @@ -41,22 +64,22 @@ Tilgængeligt farveskema - + Open Link Åbn link - + Copy Link Address Kopiér linkadresse - + Send Email To... Send e-mail til... - + Copy Email Address Kopiér e-mailadresse @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Fejl ved farveskema - + Cannot load color scheme: %1 Kan ikke indlæse farveskema: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_de.ts qtermwidget-0.16.1/lib/translations/qtermwidget_de.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_de.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_de.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,29 +2,52 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Größe: XXX x XXX - + Size: %1 x %2 Größe: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> - <qt>Ausgabe wurde <a href="http://en.wikipedia.org/wiki/Flow_control">ausgesetzt</a> beim Drücken von Strg+S. Drücke <b>Strg+Q</b> um fortzufahren.</qt> + <qt>Druch drücken von Strg+S wurde die Ausgabe <a href="http://en.wikipedia.org/wiki/Flow_control">unterbrochen</a>. <b>Strg+Q</b> drücken um fortzufahren.</qt> Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. - Kein Tastaturinterpretierer verfügbar. Die benötigte Information, um Tastenbefehle in Zeichen umzuwandeln und anschließenfd zum Terminal zu schicken, fehlt. + Kein Tastaturinterpreter verfügbar. Die benötigte Information, um Tastenbefehle in Zeichen umzuwandeln und anschließenfd zum Terminal zu senden, fehlt. @@ -33,7 +56,7 @@ Un-named Color Scheme - Unbenanntes Farbschema + Nicht benanntes Farbschema @@ -41,22 +64,22 @@ Zugängliches Farbschema - + Open Link Link öffnen - + Copy Link Address - Linkadresse kopieren + Link-Adresse kopieren - + Send Email To... E-Mail senden an... - + Copy Email Address E-Mail-Adresse kopieren @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error - Farbschemafehler + Fehler im Farbschema - + Cannot load color scheme: %1 Kann Farbschema nicht laden: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_el.ts qtermwidget-0.16.1/lib/translations/qtermwidget_el.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_el.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_el.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + Κουδούνι στην συνεδρία '%1' + + + + Session '%1' exited with status %2. + Η συνεδρία '%1' τερματίστηκε με την κατάσταση %2. + + + + Session '%1' crashed. + Η συνεδρία '%1' κατέρρευσε. + + + + Session '%1' exited unexpectedly. + Η συνεδρία '%1' τερματίστηκε απροσδόκητα. + + + Konsole::TerminalDisplay - + Size: XXX x XXX Μέγεθος: XXX x XXX - + Size: %1 x %2 Μέγεθος: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>Η έξοδος έχει <a href="http://en.wikipedia.org/wiki/Flow_control">ανασταλεί</a> με τον συνδυασμό πλήκτρων Ctrl+S. Πιέστε <b>Ctrl+Q</b> για επαναφορά.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. Δεν υπάρχει κάποιος μεταφραστής πληκτρολογίου διαθέσιμος. Η απαιτούμενη πληροφορία για την μετατροπή των πατημάτων πλήκτρων σε χαρακτήρες στο τερματικό λείπει. @@ -41,22 +64,22 @@ Προσπελάσιμος χρωματικός σχηματισμός - + Open Link Άνοιγμα του δεσμού - + Copy Link Address Αντιγραφή διεύθυνσης του δεσμού - + Send Email To... Αποστολή ηλ. αλληλογραφίας προς... - + Copy Email Address Αντιγραφή της ηλ. διεύθυνσης @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Σφάλμα του χρωματικού συνδυασμού - + Cannot load color scheme: %1 Αδύνατη η φόρτωση του χρωματικού συνδυασμού: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_es.ts qtermwidget-0.16.1/lib/translations/qtermwidget_es.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_es.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_es.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Tamaño: XXX x XXX - + Size: %1 x %2 Tamaño: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>La salida ha sido <a href="http://en.wikipedia.org/wiki/Flow_control">suspendida</a> al pulsar Ctrl+S. Pulse <b>Ctrl+Q</b> para reanudarla.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. No hay traductor de teclado disponible. La información necesaria para convertir pulsaciones de tecla en caracteres para enviarlos a la terminal está ausente. @@ -41,22 +64,22 @@ Esquema de color accesible - + Open Link Abrir el enlace - + Copy Link Address Copiar la dirección del enlace - + Send Email To... Enviar correo a... - + Copy Email Address Copiar la dirección de correo @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Error del esquema de color - + Cannot load color scheme: %1 No se puede cargar el esquema de color: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_fr.ts qtermwidget-0.16.1/lib/translations/qtermwidget_fr.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_fr.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_fr.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,29 +2,52 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + La session '%1' s'est terminée avec le statut %2. + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Taille : XXX x XXX - + Size: %1 x %2 Taille : %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> - <qt>La sortie a été <a href="http://en.wikipedia.org/wiki/Flow_control">suspendue</a> en pressant Ctrl+S. Pressez <b>Ctrl+Q</b> pour reprendre.</qt> + <qt>La sortie a été <a href="http://en.wikipedia.org/wiki/Flow_control">suspendue</a> en pressant Ctrl+S. Presser <b>Ctrl+Q</b> pour reprendre.</qt> Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. - Aucun traducteur disponible. L'information nécessaire à la conversion des touches pressées en caractères à envoyer au terminal est absente. + Aucun traducteur de clavier disponible. Les informations nécessaires pour convertir les touches utilisées en caractères à envoyer au terminal sont manquantes. @@ -33,30 +56,30 @@ Un-named Color Scheme - Schéma des couleurs non nommé + Jeu de couleurs non nommé Accessible Color Scheme - Schéma des couleur accessible + Schéma de couleur accessible - + Open Link Ouvrir le lien - + Copy Link Address Copier l'adresse du lien - + Send Email To... - Envoyer un courriel à ... + Envoyer un courriel à... - + Copy Email Address Copier l'adresse du courriel @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Erreur du schéma des couleurs - + Cannot load color scheme: %1 Impossible de charger le schéma de couleurs : %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_gl.ts qtermwidget-0.16.1/lib/translations/qtermwidget_gl.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_gl.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_gl.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Tamaño: XXX x XXX - + Size: %1 x %2 Tamaño: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>A saída foi <a href="http://en.wikipedia.org/wiki/Flow_control">suspendida</a> ao premer Ctrl+S. Prema <b>Ctrl+Q</b> para continuar.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. Non hai dispoñíbel ningún tradutor de teclado. Non está dispoñíbel a información necesaria para converter pulsacións de tecla en caracteres para envialos o terminal. @@ -41,22 +64,22 @@ Esquema de cor accesíbel - + Open Link Abrir a ligazón - + Copy Link Address Copiar o enderezo da ligazón - + Send Email To... Enviar correo a... - + Copy Email Address Copiar o enderezo de correo @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Produciuse un erro no esquema de cor - + Cannot load color scheme: %1 Non é posíbel cargar o esquema de cor: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_he.ts qtermwidget-0.16.1/lib/translations/qtermwidget_he.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_he.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_he.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + צלצול בהפעלה ‚%1’ + + + + Session '%1' exited with status %2. + ההפעלה ‚%1’ נסגרה עם הכרזת המצב %2. + + + + Session '%1' crashed. + ההפעלה ‚%1’ קרסה. + + + + Session '%1' exited unexpectedly. + ההפעלה ‚%1’ נסגרה במפתיע. + + + Konsole::TerminalDisplay - + Size: XXX x XXX גודל: XXX × XXX - + Size: %1 x %2 גודל: %1 × %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>הפלט <a href="http://en.wikipedia.org/wiki/Flow_control">הושהה</a> בלחיצה על Ctrl+S. יש ללחוץ על <b>Ctrl+Q</b> כדי להמשיך.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. אין מתרגם מקלדת זמין. המידע שנדרש לצורך המרת לחיצות מקשים לתווים לשליחה למסוף חסר. @@ -41,22 +64,22 @@ ערכת צבעים נגישה - + Open Link פתיחת קישור - + Copy Link Address העתקת כתובת קישור - + Send Email To... שליחת דוא״ל אל… - + Copy Email Address העתקת כתובת דוא״ל @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error שגיאת ערכת צבעים - + Cannot load color scheme: %1 לא ניתן לטעון ערכת צבעים: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_hr.ts qtermwidget-0.16.1/lib/translations/qtermwidget_hr.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_hr.ts 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_hr.ts 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,148 @@ + + + + + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + + Konsole::TerminalDisplay + + + Size: XXX x XXX + Veličina: XXX × XXX + + + + Size: %1 x %2 + Veličina: %1 × %2 + + + + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> + <qt>Rezultat je <a href="http://en.wikipedia.org/wiki/Flow_control">obustavljen</a> pritiskom Ctrl+S. Pritisni <b>Ctrl+Q</b> za nastavak.</qt> + + + + Konsole::Vt102Emulation + + + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. + Nema interpretera tipkovnice. Nedostaju podaci za pretvaranje tipki u znakove koji se šalju u terminal. + + + + QObject + + + + Un-named Color Scheme + Neimenovana shema boja + + + + Accessible Color Scheme + Dostupna shema boja + + + + Open Link + Otvori poveznicu + + + + Copy Link Address + Otvori adresu poveznice + + + + Send Email To... + Pošalji e-mail na … + + + + Copy Email Address + Kopiraj e-adresu + + + + QTermWidget + + + Color Scheme Error + Greška u shemi boja + + + + Cannot load color scheme: %1 + Nije moguće učitati shemu boja: %1 + + + + SearchBar + + + Match case + Razlikuj velika/mala slova + + + + Regular expression + Regularni izrazi + + + + Highlight all matches + Istakni sva poklapanja + + + + SearchBar + Traka pretrage + + + + X + X + + + + Find: + Traži: + + + + < + < + + + + > + > + + + + ... + + + + diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_hu.ts qtermwidget-0.16.1/lib/translations/qtermwidget_hu.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_hu.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_hu.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,29 +2,52 @@ + Konsole::Session + + + Bell in session '%1' + Jelzés a '%1' munkamenetben + + + + Session '%1' exited with status %2. + A(z) '%1' munkamenet %2 állapottal lépett ki. + + + + Session '%1' crashed. + A(z) '%1' munkamenet összeomlott. + + + + Session '%1' exited unexpectedly. + A '%1' munkamenet váratlanul kilépett. + + + Konsole::TerminalDisplay - + Size: XXX x XXX Méret: XXX x XXX - + Size: %1 x %2 Méret: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> - <qt>A kimenet <a href="http://en.wikipedia.org/wiki/Flow_control">el van nyomva</a> a Ctrl+S megnyomásával. Nyomj <b>Ctrl+Q -t</b> a visszatéréshez.</qt> + <qt>A kimenet <a href="http://en.wikipedia.org/wiki/Flow_control">fel van függesztve</a> a Ctrl+S megnyomásával. Nyomjon <b>Ctrl+Q-t</b> a folytatáshoz.</qt> Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. - Nincs billentyűzet átalakító. Hiányzik az információ, ami a billentyű lenyomásnak a terminálhoz küldendő karakterekké alakításához szükséges. + Nincs elérhető billentyűzet-átalakító. Hiányzik az információ, amely a billentyű lenyomások a terminálhoz küldendő karakterekké alakításához szükséges. @@ -41,37 +64,37 @@ Elérhető színséma - + Open Link - Link megnyitás + Link megnyitása - + Copy Link Address - Link cím másolás + Link másolása - + Send Email To... - Email küldés ... + Email küldése ... - + Copy Email Address - Email cím másolás + Email cím másolása QTermWidget - + Color Scheme Error Színséma hiba - + Cannot load color scheme: %1 - A %1 színséma elérhetetlen + Nem sikerült betölteni a színsémát. %1 @@ -79,12 +102,12 @@ Match case - Nagybetű érzékeny + Nagybetűérzékeny Regular expression - Szaabályos kifejezés + Reguláris kifejezés @@ -104,7 +127,7 @@ Find: - Keres: + Keresés: diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_it.ts qtermwidget-0.16.1/lib/translations/qtermwidget_it.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_it.ts 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_it.ts 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,148 @@ + + + + + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + + Konsole::TerminalDisplay + + + Size: XXX x XXX + + + + + Size: %1 x %2 + + + + + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> + + + + + Konsole::Vt102Emulation + + + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. + + + + + QObject + + + + Un-named Color Scheme + + + + + Accessible Color Scheme + + + + + Open Link + + + + + Copy Link Address + + + + + Send Email To... + + + + + Copy Email Address + + + + + QTermWidget + + + Color Scheme Error + + + + + Cannot load color scheme: %1 + + + + + SearchBar + + + Match case + + + + + Regular expression + + + + + Highlight all matches + + + + + SearchBar + + + + + X + + + + + Find: + + + + + < + + + + + > + + + + + ... + + + + diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_ja.ts qtermwidget-0.16.1/lib/translations/qtermwidget_ja.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_ja.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_ja.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,29 +2,52 @@ + Konsole::Session + + + Bell in session '%1' + セッション '%1' のベル + + + + Session '%1' exited with status %2. + セッション '%1' はステータス %2 で終了しました。 + + + + Session '%1' crashed. + セッション '%1' がクラッシュしました。 + + + + Session '%1' exited unexpectedly. + セッション '%1' が予期せず終了しました。 + + + Konsole::TerminalDisplay - + Size: XXX x XXX - + サイズ: XXX x XXX - + Size: %1 x %2 - + サイズ: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> - + <qt>Ctrl+S を押して出力を<a href="http://en.wikipedia.org/wiki/Flow_control">中断</a> しました 。再開するには <b>Ctrl+Q</b> を押します。</qt> Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. - + キーボードトランスレータがありません。押されたキーを文字に変換してターミナルへ送信するために必要な情報がありません。 @@ -33,30 +56,30 @@ Un-named Color Scheme - 名前のないカラースキーム + 名前のない配色 Accessible Color Scheme - アクセス可能なカラースキーム + アクセス可能な配色 - + Open Link リンクを開く - + Copy Link Address リンクのアドレスをコピー - + Send Email To... メールを送信... - + Copy Email Address メールアドレスをコピー @@ -64,14 +87,14 @@ QTermWidget - + Color Scheme Error - カラースキームのエラー + 配色のエラー - + Cannot load color scheme: %1 - カラースキームをロードすることができません: %1 + 配色をロードできません: %1 @@ -79,7 +102,7 @@ Match case - + 大文字と小文字の区別 @@ -89,7 +112,7 @@ Highlight all matches - 一致するものをハイライト + 一致する全ての文字列を強調表示 @@ -104,22 +127,22 @@ Find: - 探す: + 検索: < - + < > - + > ... - + ... diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_lt.ts qtermwidget-0.16.1/lib/translations/qtermwidget_lt.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_lt.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_lt.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Dydis: XXX x XXX - + Size: %1 x %2 Dydis: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>Išvestis buvo <a href="http://en.wikipedia.org/wiki/Flow_control">pristabdyta,</a> paspaudžiant Ctrl(Vald)+S. Paspauskite <b>Ctrl(Vald)+Q</b>, norėdami pratęsti.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. Nėra prieinamas joks klaviatūros vertėjas. Informacijos, kurios reikia, norint konvertuoti klavišų paspaudimus į simbolius ir siųsti į terminalą, nėra. @@ -41,22 +64,22 @@ Pasiekiamas spalvų rinkinys - + Open Link Atverti nuorodą - + Copy Link Address Kopijuoti nuorodos adresą - + Send Email To... Siųsti el. paštą... - + Copy Email Address Kopijuoti el. pašto adresą @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Spalvų rinkinio klaida - + Cannot load color scheme: %1 Nepavyksta įkelti spalvų rinkinio: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_nb_NO.ts qtermwidget-0.16.1/lib/translations/qtermwidget_nb_NO.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_nb_NO.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_nb_NO.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Størrelse: XXX x XXX - + Size: %1 x %2 Størrelse: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>Utgangssignalet ble <a href="http://en.wikipedia.org/wiki/Flow_control">stoppet</a> da Ctrl+S ble trykket. Trykk <b>Ctrl+Q</b> for å fortsette.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. Ingen tastaturoversetter er tilgjengelig. Informasjonen som trengs for å gjøre tastetrykk om til tegn å sende til terminalen mangler. @@ -41,22 +64,22 @@ Fargemønster for funksjonshemmede - + Open Link Åpne lenke - + Copy Link Address Kopier lenkeadresse - + Send Email To... Send epost til... - + Copy Email Address Kopier epostadressen @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Feil med fargemønster - + Cannot load color scheme: %1 Kan ikke åpne fargemønster: %1 @@ -94,7 +117,7 @@ SearchBar - Søkefelt + Søkelinje diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_pl.ts qtermwidget-0.16.1/lib/translations/qtermwidget_pl.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_pl.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_pl.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Rozmiar: XXX x XXX - + Size: %1 x %2 Rozmiar: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>Wyjście zostało <a href="http://en.wikipedia.org/wiki/Flow_control">wstrzymane</a> skrótem Ctrl+S. Wciśnij <b>Ctrl+Q</b> aby wznowić.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. Brak sterownika klawiatury. Nie wiadomo jak przełożyć wciśniecia przycisków na znaki wysyłane do terminalu. @@ -41,22 +64,22 @@ Paleta o zwiększonej przystępności - + Open Link Przejdź pod adres - + Copy Link Address Kopiuj adres łącza - + Send Email To... Wyślij e-mail do… - + Copy Email Address Kopiuj adres e-mail @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Błąd w palecie - + Cannot load color scheme: %1 Nie można wczytać palety: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_pt_BR.ts qtermwidget-0.16.1/lib/translations/qtermwidget_pt_BR.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_pt_BR.ts 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_pt_BR.ts 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,148 @@ + + + + + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + + Konsole::TerminalDisplay + + + Size: XXX x XXX + Tamanho: XXX x XXX + + + + Size: %1 x %2 + Tamanho: %1 x %2 + + + + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> + <qt>A saída foi <a href="http://en.wikipedia.org/wiki/Flow_control">suspensa</a> pressionando Ctrl+S. Pressione <b>Ctrl+Q</b> para continuar.</qt> + + + + Konsole::Vt102Emulation + + + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. + Nenhum tradutor de teclado disponível. A informação necessária para converter a tecla pressionada em caracteres para enviar para o terminal está faltando. + + + + QObject + + + + Un-named Color Scheme + Esquema de cor sem nome + + + + Accessible Color Scheme + Esquema de cor acessível + + + + Open Link + Abrir Link + + + + Copy Link Address + Copiar Endereço do Link + + + + Send Email To... + Enviar E-mail Para... + + + + Copy Email Address + Copiar Endereço de E-mail + + + + QTermWidget + + + Color Scheme Error + Erro no esquema de cor + + + + Cannot load color scheme: %1 + Não foi possível carregar o esquema de cor: %1 + + + + SearchBar + + + Match case + Caso de compatibilidade + + + + Regular expression + Expressão Regular + + + + Highlight all matches + Destacar todas as correspondências + + + + SearchBar + Barra de Pesquisa + + + + X + X + + + + Find: + Encontrar: + + + + < + < + + + + > + > + + + + ... + ... + + + diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_pt.ts qtermwidget-0.16.1/lib/translations/qtermwidget_pt.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_pt.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_pt.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Tamanho: XXX x XXX - + Size: %1 x %2 Tamanho: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>A saída foi <a href="http://en.wikipedia.org/wiki/Flow_control"> suspendida</a> com Ctrl+S. Prima <b>Ctrl+Q</b> para continuar.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. Não há um tradutor de teclado disponível. A informação necessária para converter a pressão da tecla nos caracteres a enviar ao terminal não existe. @@ -41,22 +64,22 @@ Esquema de cores acessível - + Open Link Abrir ligação - + Copy Link Address Copiar endereço da ligação - + Send Email To... Enviar e-mail para... - + Copy Email Address Copiar endereço de e-mail @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error Erro no esquema de cores - + Cannot load color scheme: %1 Não foi possível carregar o esquema de cores: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_tr.ts qtermwidget-0.16.1/lib/translations/qtermwidget_tr.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_tr.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_tr.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,29 +2,52 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX Boyut: XXX x XXX - + Size: %1 x %2 Boyut: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> - <qt>Çıktı <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> Ctrl+S basınız. <b>Ctrl+Q</b> bas devam etmek için.</qt> + <qt>Çıktı, Ctrl+S'ye basılarak <a href="http://en.wikipedia.org/wiki/Flow_control">durduruldu</a>. Sürdürmek için <b>Ctrl+Q</b>'a basınız.</qt> Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. - Hiçbir klavye çevirici yok. Tuş vuruşlarını karaktere dönüştürüp terminale göndermek için gereken bilgi eksik. + Hiçbir klavye çeviricisi yok. Tuş vuruşlarını karaktere dönüştürüp uçbirime göndermek için gereken bilgi eksik. @@ -33,7 +56,7 @@ Un-named Color Scheme - İsimsiz Renk Şeması + Adsız Renk Şeması @@ -41,22 +64,22 @@ Erişilebilir Renk Şeması - + Open Link Bağlantıyı Aç - + Copy Link Address Bağlantı Adresini Kopyala - + Send Email To... - E-posta gönder... + E-posta Gönder... - + Copy Email Address E-posta Adresini Kopyala @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error - Renk Şema Hatası + Renk Şeması Hatası - + Cannot load color scheme: %1 Renk şeması yüklenemedi: %1 @@ -79,7 +102,7 @@ Match case - Tam eşleştir + Büyük/küçük harf eşleştir diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget.ts qtermwidget-0.16.1/lib/translations/qtermwidget.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX - + Size: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. @@ -41,22 +64,22 @@ - + Open Link - + Copy Link Address - + Send Email To... - + Copy Email Address @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error - + Cannot load color scheme: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_zh_CN.ts qtermwidget-0.16.1/lib/translations/qtermwidget_zh_CN.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_zh_CN.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_zh_CN.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX 大小: XXX x XXX - + Size: %1 x %2 大小: %1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>输出已被 Ctrl+S <a href="http://en.wikipedia.org/wiki/Flow_control">暂停</a>。按 <b>Ctrl+Q</b> 复原。</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. 没有可用的键码转换表。找不到需要把按键转换至符号以传送至终端的信息。 @@ -41,22 +64,22 @@ 可用配色 - + Open Link 打开链接 - + Copy Link Address 复制链接地址 - + Send Email To... 发送邮件至... - + Copy Email Address 复制邮件地址 @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error 配色错误 - + Cannot load color scheme: %1 无法加载配色: %1 diff -Nru qtermwidget-0.14.1/lib/translations/qtermwidget_zh_TW.ts qtermwidget-0.16.1/lib/translations/qtermwidget_zh_TW.ts --- qtermwidget-0.14.1/lib/translations/qtermwidget_zh_TW.ts 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/translations/qtermwidget_zh_TW.ts 2020-11-14 09:10:48.000000000 +0000 @@ -2,19 +2,42 @@ + Konsole::Session + + + Bell in session '%1' + + + + + Session '%1' exited with status %2. + + + + + Session '%1' crashed. + + + + + Session '%1' exited unexpectedly. + + + + Konsole::TerminalDisplay - + Size: XXX x XXX 大小:XXX x XXX - + Size: %1 x %2 大小:%1 x %2 - + <qt>Output has been <a href="http://en.wikipedia.org/wiki/Flow_control">suspended</a> by pressing Ctrl+S. Press <b>Ctrl+Q</b> to resume.</qt> <qt>輸出已被Ctrl+S<a href="http://en.wikipedia.org/wiki/Flow_control">暫停</a>。按<b>Ctrl+Q</b>復原。</qt> @@ -22,7 +45,7 @@ Konsole::Vt102Emulation - + No keyboard translator available. The information needed to convert key presses into characters to send to the terminal is missing. 沒有可用的鍵碼轉換表。用來將按鍵轉換成終端機字元的資訊遺失。 @@ -41,22 +64,22 @@ 可用的配色 - + Open Link 開啟連結 - + Copy Link Address 複製網址 - + Send Email To... 傳送郵件給… - + Copy Email Address 複製信箱地址 @@ -64,12 +87,12 @@ QTermWidget - + Color Scheme Error 配色錯誤 - + Cannot load color scheme: %1 無法載入配色:%1 diff -Nru qtermwidget-0.14.1/lib/Vt102Emulation.cpp qtermwidget-0.16.1/lib/Vt102Emulation.cpp --- qtermwidget-0.14.1/lib/Vt102Emulation.cpp 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Vt102Emulation.cpp 2020-11-14 09:10:48.000000000 +0000 @@ -38,7 +38,7 @@ #endif // Standard -#include +#include #include // Qt @@ -343,7 +343,7 @@ if (epe( )) { processToken( TY_CSI_PE(cc), 0, 0); resetTokenizer(); return; } if (ees(DIG)) { addDigit(cc-'0'); return; } - if (eec(';')) { addArgument(); return; } + if (eec(';') || eec(':')) { addArgument(); return; } for (int i=0;i<=argc;i++) { if (epp()) @@ -413,10 +413,10 @@ return; } - QString newValue; - newValue.reserve(tokenBufferPos-i-2); - for (int j = 0; j < tokenBufferPos-i-2; j++) - newValue[j] = tokenBuffer[i+1+j]; + // copy from the first char after ';', and skipping the ending delimiter + // 0x07 or 0x92. Note that as control characters in OSC text parts are + // ignored, only the second char in ST ("\e\\") is appended to tokenBuffer. + QString newValue = QString::fromWCharArray(tokenBuffer + i + 1, tokenBufferPos-i-2); _pendingTitleUpdates[attributeToChange] = newValue; _titleUpdateTimer->start(20); @@ -870,8 +870,12 @@ void Vt102Emulation::reportCursorPosition() { - char tmp[20]; - sprintf(tmp,"\033[%d;%dR",_currentScreen->getCursorY()+1,_currentScreen->getCursorX()+1); + const size_t sz = 20; + char tmp[sz]; + const size_t r = snprintf(tmp, sz, "\033[%d;%dR",_currentScreen->getCursorY()+1,_currentScreen->getCursorX()+1); + if (sz <= r) { + qWarning("Vt102Emulation::reportCursorPosition: Buffer too small\n"); + } sendString(tmp); } @@ -901,8 +905,12 @@ void Vt102Emulation::reportTerminalParms(int p) // DECREPTPARM { - char tmp[100]; - sprintf(tmp,"\033[%d;1;1;112;112;1;0x",p); // not really true. + const size_t sz = 100; + char tmp[sz]; + const size_t r = snprintf(tmp, sz, "\033[%d;1;1;112;112;1;0x",p); // not really true. + if (sz <= r) { + qWarning("Vt102Emulation::reportTerminalParms: Buffer too small\n"); + } sendString(tmp); } @@ -1025,7 +1033,7 @@ states |= KeyboardTranslator::ApplicationKeypadState; // check flow control state - if (modifiers & Qt::ControlModifier) + if (modifiers & KeyboardTranslator::CTRL_MOD) { switch (event->key()) { case Qt::Key_S: @@ -1071,8 +1079,11 @@ if ( entry.command() != KeyboardTranslator::NoCommand ) { - if (entry.command() & KeyboardTranslator::EraseCommand) + if (entry.command() & KeyboardTranslator::EraseCommand) { textToSend += eraseChar(); + } else { + Q_EMIT handleCommandFromKeyboard(entry.command()); + } // TODO command handling } @@ -1080,7 +1091,7 @@ { textToSend += _codec->fromUnicode(QString::fromUtf8(entry.text(true,modifiers))); } - else if((modifiers & Qt::ControlModifier) && event->key() >= 0x40 && event->key() < 0x5f) { + else if((modifiers & KeyboardTranslator::CTRL_MOD) && event->key() >= 0x40 && event->key() < 0x5f) { textToSend += (event->key() & 0x1f); } else if(event->key() == Qt::Key_Tab) { @@ -1096,7 +1107,7 @@ textToSend += _codec->fromUnicode(event->text()); } - sendData( textToSend.constData() , textToSend.length() ); + Q_EMIT sendData( textToSend.constData() , textToSend.length() ); } else { @@ -1341,8 +1352,8 @@ { KeyboardTranslator::Entry entry = _keyTranslator->findEntry( Qt::Key_Backspace, - 0, - 0); + Qt::NoModifier, + KeyboardTranslator::NoState); if ( entry.text().count() > 0 ) return entry.text().at(0); else diff -Nru qtermwidget-0.14.1/lib/Vt102Emulation.h qtermwidget-0.16.1/lib/Vt102Emulation.h --- qtermwidget-0.14.1/lib/Vt102Emulation.h 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/lib/Vt102Emulation.h 2020-11-14 09:10:48.000000000 +0000 @@ -24,7 +24,7 @@ #define VT102EMULATION_H // Standard Library -#include +#include // Qt #include @@ -82,27 +82,27 @@ public: /** Constructs a new emulation */ Vt102Emulation(); - ~Vt102Emulation(); + ~Vt102Emulation() override; // reimplemented from Emulation - virtual void clearEntireScreen(); - virtual void reset(); - virtual char eraseChar() const; + void clearEntireScreen() override; + void reset() override; + char eraseChar() const override; public slots: // reimplemented from Emulation - virtual void sendString(const char*,int length = -1); - virtual void sendText(const QString& text); - virtual void sendKeyEvent(QKeyEvent*); - virtual void sendMouseEvent(int buttons, int column, int line, int eventType); + void sendString(const char*,int length = -1) override; + void sendText(const QString& text) override; + void sendKeyEvent(QKeyEvent*) override; + void sendMouseEvent(int buttons, int column, int line, int eventType) override; virtual void focusLost(); virtual void focusGained(); protected: // reimplemented from Emulation - virtual void setMode(int mode); - virtual void resetMode(int mode); - virtual void receiveChar(wchar_t cc); + void setMode(int mode) override; + void resetMode(int mode) override; + void receiveChar(wchar_t cc) override; private slots: //causes changeTitle() to be emitted for each (int,QString) pair in pendingTitleUpdates diff -Nru qtermwidget-0.14.1/pyqt/cmake/FindPyQt5.cmake qtermwidget-0.16.1/pyqt/cmake/FindPyQt5.cmake --- qtermwidget-0.14.1/pyqt/cmake/FindPyQt5.cmake 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/pyqt/cmake/FindPyQt5.cmake 2020-11-14 09:10:48.000000000 +0000 @@ -36,6 +36,7 @@ STRING(REGEX REPLACE ".*\npyqt_version_tag:([^\n]+).*$" "\\1" PYQT5_VERSION_TAG ${pyqt5_config}) STRING(REGEX REPLACE ".*\npyqt_sip_dir:([^\n]+).*$" "\\1" PYQT5_SIP_DIR ${pyqt5_config}) STRING(REGEX REPLACE ".*\npyqt_sip_flags:([^\n]+).*$" "\\1" PYQT5_SIP_FLAGS ${pyqt5_config}) + SEPARATE_ARGUMENTS(PYQT5_SIP_FLAGS) SET(PYQT5_FOUND TRUE) ENDIF(pyqt5_config) diff -Nru qtermwidget-0.14.1/pyqt/cmake/FindPyQt5.py qtermwidget-0.16.1/pyqt/cmake/FindPyQt5.py --- qtermwidget-0.14.1/pyqt/cmake/FindPyQt5.py 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/pyqt/cmake/FindPyQt5.py 2020-11-14 09:10:48.000000000 +0000 @@ -5,6 +5,7 @@ import PyQt5.Qt import sys import os.path +import site print("pyqt_version:%06.0x" % PyQt5.Qt.PYQT_VERSION) print("pyqt_version_str:%s" % PyQt5.Qt.PYQT_VERSION_STR) @@ -21,8 +22,18 @@ in_t = False print("pyqt_version_tag:%s" % pyqt_version_tag) -# FIXME This next line is just a little bit too crude. -pyqt_sip_dir = os.path.join(sys.prefix, "share", "sip", "PyQt5") +# FIXME Is there a way to query the path from sip instead of hardcoding it? +candidates = [ + os.path.join(site.getsitepackages()[0], "PyQt5", "bindings"), # sip 5.x + os.path.join(sys.prefix, "share", "sip", "PyQt5"), # sip 4.x +] +try: + pyqt_sip_dir = next( + p for p in candidates + if os.path.exists(os.path.join(p, "QtCore", "QtCoremod.sip")) + ) +except StopIteration: + raise RuntimeError("Cannot find QtCore/QtCoremod.sip from candidates: " + repr(candidates)) print("pyqt_sip_dir:%s" % pyqt_sip_dir) print("pyqt_sip_flags:%s" % PyQt5.Qt.PYQT_CONFIGURATION["sip_flags"]) diff -Nru qtermwidget-0.14.1/pyqt/CMakeLists.txt qtermwidget-0.16.1/pyqt/CMakeLists.txt --- qtermwidget-0.14.1/pyqt/CMakeLists.txt 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/pyqt/CMakeLists.txt 2020-11-14 09:10:48.000000000 +0000 @@ -1,7 +1,5 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) -# Match what's used in the main macros -cmake_policy(SET CMP0002 OLD) find_package(PythonLibrary) include(PythonMacros) @@ -40,6 +38,8 @@ endif() endif () +set(SIP_EXTRA_OPTIONS ${SIP_EXTRA_OPTIONS} ${PYQT5_SIP_FLAGS}) + include_directories( "${SIP_INCLUDE_DIR}" ) diff -Nru qtermwidget-0.14.1/README.md qtermwidget-0.16.1/README.md --- qtermwidget-0.14.1/README.md 2019-02-25 22:13:12.000000000 +0000 +++ qtermwidget-0.16.1/README.md 2020-11-14 09:10:48.000000000 +0000 @@ -52,7 +52,7 @@ ### Compiling sources -The only runtime dependency is qtbase ≥ 5.6. +The only runtime dependency is qtbase ≥ 5.7.1. In order to build CMake ≥ 3.0.2 and [lxqt-build-tools](https://github.com/lxqt/lxqt-build-tools/) >= 0.4.0 are needed as well as Git to pull translations and optionally latest VCS checkouts. Code configuration is handled by CMake. CMake variable `CMAKE_INSTALL_PREFIX` will normally have to be set to `/usr`, depending on the way library paths are dealt with on 64bit systems variables like `CMAKE_INSTALL_LIBDIR` may have to be set as well. @@ -65,8 +65,11 @@ Just use the distributions' package managers to search for string `qtermwidget`. -### Translation (Weblate) +### Translation - -Translation status +Translations can be done in [LXQt-Weblate](https://translate.lxqt-project.org/projects/lxqt-desktop/qtermwidget/) + + +Translation status + diff -Nru qtermwidget-0.14.1/.travis.yml qtermwidget-0.16.1/.travis.yml --- qtermwidget-0.14.1/.travis.yml 1970-01-01 00:00:00.000000000 +0000 +++ qtermwidget-0.16.1/.travis.yml 2020-11-14 09:10:48.000000000 +0000 @@ -0,0 +1,25 @@ +language: cpp + +sudo: required + +dist: bionic + +services: + - docker + +script: + - "curl -s https://raw.githubusercontent.com/mikkeloscar/arch-travis/master/arch-travis.sh | bash" + +archlinux: + repos: + - archlinuxcn=https://cdn.repo.archlinuxcn.org/$arch + packages: + # See *depends in https://github.com/archlinuxcn/repo/blob/master/archlinuxcn/qtermwidget-git/PKGBUILD + - git + - cmake + - lxqt-build-tools-git + - qt5-tools + - python-pyqt5 + - python-sip + - sip + script: bash ./.ci/build.sh