Mercurial > octave
changeset 29054:226df400639c
maint: merge stable to default.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 12 Nov 2020 02:02:39 -0500 |
parents | cde4b1d9f6ef (current diff) 0678fdb81efc (diff) |
children | dbf8a7f16c4e |
files | libgui/graphics/Canvas.cc libgui/qterminal/libqterminal/unix/TerminalView.cpp libgui/src/files-dock-widget.cc libgui/src/m-editor/octave-qscintilla.cc m4/acinclude.m4 |
diffstat | 12 files changed, 207 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/graphics/Canvas.cc Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/graphics/Canvas.cc Thu Nov 12 02:02:39 2020 -0500 @@ -920,7 +920,12 @@ if (childObj.isa ("axes")) { - graphics_object go = selectFromAxes (childObj, event->pos ()); +#if defined (HAVE_QWHEELEVENT_POSITION) + QPoint pos = event->position().toPoint (); +#else + QPoint pos = event->pos (); +#endif + graphics_object go = selectFromAxes (childObj, pos); if (go) { @@ -946,7 +951,11 @@ if (zoom_enabled (figObj)) { +#if defined (HAVE_QWHEELEVENT_ANGLEDELTA) + if (event->angleDelta().y () > 0) +#else if (event->delta () > 0) +#endif newMouseMode = ZoomInMode; else newMouseMode = ZoomOutMode; @@ -988,7 +997,11 @@ { axes::properties& ap = Utils::properties<axes> (axesObj); +#if defined (HAVE_QWHEELEVENT_ANGLEDELTA) + double factor = (event->angleDelta().y () > 0 ? 0.1 : -0.1); +#else double factor = (event->delta () > 0 ? 0.1 : -0.1); +#endif if (event->modifiers () == Qt::NoModifier && mode != "horizontal")
--- a/libgui/qterminal/libqterminal/QTerminal.cc Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/qterminal/libqterminal/QTerminal.cc Thu Nov 12 02:02:39 2020 -0500 @@ -174,7 +174,11 @@ QTerminal::run_selection () { QStringList commands = selectedText ().split (QRegExp ("[\r\n]"), +#if defined (HAVE_QT_SPLITBEHAVIOR_ENUM) + Qt::SkipEmptyParts); +#else QString::SkipEmptyParts); +#endif for (int i = 0; i < commands.size (); i++) emit execute_command_in_terminal_signal (commands.at (i));
--- a/libgui/qterminal/libqterminal/unix/KeyboardTranslator.cpp Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/qterminal/libqterminal/unix/KeyboardTranslator.cpp Thu Nov 12 02:02:39 2020 -0500 @@ -829,13 +829,13 @@ void KeyboardTranslator::addEntry(const Entry& entry) { const int keyCode = entry.keyCode(); - _entries.insertMulti(keyCode,entry); + _entries.insert(keyCode,entry); } void KeyboardTranslator::replaceEntry(const Entry& existing , const Entry& replacement) { if ( !existing.isNull() ) _entries.remove(existing.keyCode()); - _entries.insertMulti(replacement.keyCode(),replacement); + _entries.insert(replacement.keyCode(),replacement); } void KeyboardTranslator::removeEntry(const Entry& entry) {
--- a/libgui/qterminal/libqterminal/unix/KeyboardTranslator.h Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/qterminal/libqterminal/unix/KeyboardTranslator.h Thu Nov 12 02:02:39 2020 -0500 @@ -26,6 +26,7 @@ // Qt #include <QtCore/QHash> +#include <QtCore/QMultiHash> #include <QtCore/QList> #include <QKeySequence> #include <QtCore/QMetaType> @@ -383,7 +384,7 @@ private: - QHash<int,Entry> _entries; // entries in this keyboard translation, + QMultiHash<int,Entry> _entries; // entries in this keyboard translation, // entries are indexed according to // their keycode QString _name;
--- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp Thu Nov 12 02:02:39 2020 -0500 @@ -2051,8 +2051,13 @@ void TerminalView::wheelEvent( QWheelEvent* ev ) { +#if defined (HAVE_QWHEELEVENT_ANGLEDELTA) + if (ev->angleDelta().y() == 0) + return; +#else if (ev->orientation() != Qt::Vertical) return; +#endif if ( _mouseMarks ) _scrollBar->event(ev); @@ -2060,9 +2065,19 @@ { int charLine; int charColumn; - getCharacterPosition( ev->pos() , charLine , charColumn ); - - emit mouseSignal( ev->delta() > 0 ? 4 : 5, +#if defined (HAVE_QWHEELEVENT_POSITION) + QPoint pos = ev->position().toPoint(); +#else + QPoint pos = ev->pos(); +#endif + getCharacterPosition( pos , charLine , charColumn ); + +#if defined (HAVE_QWHEELEVENT_ANGLEDELTA) + int delta = ev->angleDelta().y(); +#else + int delta = ev->delta(); +#endif + emit mouseSignal( delta > 0 ? 4 : 5, charColumn + 1, charLine + 1 +_scrollBar->value() -_scrollBar->maximum() , 0);
--- a/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp Thu Nov 12 02:02:39 2020 -0500 @@ -1213,8 +1213,8 @@ { KeyboardTranslator::Entry entry = _keyTranslator->findEntry( Qt::Key_Backspace, - nullptr, - nullptr); + Qt::NoModifier); + if ( entry.text().count() > 0 ) return entry.text()[0]; else
--- a/libgui/src/dialog.cc Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/src/dialog.cc Thu Nov 12 02:02:39 2020 -0500 @@ -352,7 +352,7 @@ const QString& defbutton, const QStringList& role) : QMessageBox (QMessageBox::NoIcon, title.isEmpty () ? " " : title, - message, nullptr, nullptr) + message) { // Create a NonModal message. setWindowModality (Qt::NonModal);
--- a/libgui/src/documentation.cc Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/src/documentation.cc Thu Nov 12 02:02:39 2020 -0500 @@ -443,7 +443,11 @@ if (rx.indexIn (query_string, 0) != -1) m_internal_search = rx.cap (1); else +#if defined (HAVE_QT_SPLITBEHAVIOR_ENUM) + m_internal_search = query_string.split (" ", Qt::SkipEmptyParts).first (); +#else m_internal_search = query_string.split (" ", QString::SkipEmptyParts).first (); +#endif m_help_engine->searchEngine ()->search (queries); } @@ -628,14 +632,23 @@ return; // First search in the function index +#if defined (HAVE_QHELPENGINE_DOCUMENTSFORIDENTIFIER) + QList<QHelpLink> found_links + = m_help_engine->documentsForIdentifier (ref_name); + + QUrl first_url = found_links.constFirst().url; +#else QMap<QString, QUrl> found_links = m_help_engine->linksForIdentifier (ref_name); - QTabWidget *navi = static_cast<QTabWidget*> (widget (0)); + QUrl first_url = found_links.constBegin().value (); +#endif + + QTabWidget *navi = static_cast<QTabWidget*> (widget (0)); if (found_links.count() > 0) { - m_doc_browser->setSource (found_links.constBegin().value()); + m_doc_browser->setSource (first_url); // Switch to function index tab m_help_engine->indexWidget()->filterIndices (ref_name); @@ -721,7 +734,7 @@ if (! m_help_engine) return; - QTextDocument::FindFlags find_flags = 0; + QTextDocument::FindFlags find_flags; if (backward) find_flags = QTextDocument::FindBackward; @@ -969,7 +982,11 @@ { if (we->modifiers () == Qt::ControlModifier) { - if (we->delta () > 0) +#if defined (HAVE_QWHEELEVENT_ANGLEDELTA) + if (we->angleDelta().y () > 0) +#else + if (we->delta() > 0) +#endif zoom_in (); else zoom_out ();
--- a/libgui/src/external-editor-interface.cc Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/src/external-editor-interface.cc Thu Nov 12 02:02:39 2020 -0500 @@ -59,8 +59,10 @@ editor.replace ("%f", file); editor.replace ("%l", QString::number (line)); + QStringList arguments; + // start the process and check for success - bool started_ok = QProcess::startDetached (editor); + bool started_ok = QProcess::startDetached (editor, arguments); if (started_ok != true) {
--- a/libgui/src/files-dock-widget.cc Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/src/files-dock-widget.cc Thu Nov 12 02:02:39 2020 -0500 @@ -409,8 +409,11 @@ resource_manager& rmgr = m_octave_qobj.get_resource_manager (); gui_settings *settings = rmgr.get_settings (); QString ext = settings->value (fb_txt_file_ext).toString (); +#if defined (HAVE_QT_SPLITBEHAVIOR_ENUM) + QStringList extensions = ext.split (";", Qt::SkipEmptyParts); +#else QStringList extensions = ext.split (";", QString::SkipEmptyParts); - +#endif if (QFile::exists (abs_fname)) { if (extensions.contains (suffix))
--- a/libgui/src/m-editor/octave-qscintilla.cc Wed Nov 11 14:55:09 2020 -0500 +++ b/libgui/src/m-editor/octave-qscintilla.cc Thu Nov 12 02:02:39 2020 -0500 @@ -815,8 +815,12 @@ // Split contents into single lines and complete commands QStringList lines = selectedText ().split (QRegExp ("[\r\n]"), +#if defined (HAVE_QT_SPLITBEHAVIOR_ENUM) + Qt::SkipEmptyParts); +#else QString::SkipEmptyParts); - for (int i = 0; i < lines.count (); i++) +#endif + for (int i = 0; i < lines.count (); i++) { QString line = lines.at (i); if (line.trimmed ().isEmpty ())
--- a/m4/acinclude.m4 Wed Nov 11 14:55:09 2020 -0500 +++ b/m4/acinclude.m4 Thu Nov 12 02:02:39 2020 -0500 @@ -493,6 +493,103 @@ fi ]) dnl +dnl Check whether the Qt class QHelpEngine has the documentsForIdentifier +dnl function. dnl This member function was introduced in Qt 5.15. +dnl +AC_DEFUN([OCTAVE_CHECK_FUNC_QHELPENGINE_DOCUMENTSFORIDENTIFIER], [ + AC_CACHE_CHECK([for QHelpEngine::documentsForIdentifier in <QHelpEngine>], + [octave_cv_func_qhelpengine_documentsforidentifier], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <QHelpEngine> + #include <QHelpLink> + #include <QList> + #include <QString> + #include <QUrl> + ]], [[ + QString collection_file; + QHelpEngine eng (collection_file); + QString id; + eng.documentsForIdentifier (id); + ]])], + octave_cv_func_qhelpengine_documentsforidentifier=yes, + octave_cv_func_qhelpengine_documentsforidentifier=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_func_qhelpengine_documentsforidentifier = yes; then + AC_DEFINE(HAVE_QHELPENGINE_DOCUMENTSFORIDENTIFIER, 1, + [Define to 1 if you have the `QHelpEngine::documentsForIdentifier' member function.]) + fi +]) +dnl +dnl Check whether the Qt class QWheelEvent has the angleDelta member function. +dnl This member function was introduced in Qt 5. +dnl +dnl FIXME: Delete this entirely when we drop support for Qt 4. +dnl +AC_DEFUN([OCTAVE_CHECK_FUNC_QWHEELEVENT_ANGLEDELTA], [ + AC_CACHE_CHECK([for QWheelEvent::angleDelta in <QWheelEvent>], + [octave_cv_func_qwheelevent_angledelta], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <QWheelEvent> + void foo (const QWheelEvent& ev) + { + ev.angleDelta (); + }; + ]])], + octave_cv_func_qwheelevent_angledelta=yes, + octave_cv_func_qwheelevent_angledelta=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_func_qwheelevent_angledelta = yes; then + AC_DEFINE(HAVE_QWHEELEVENT_ANGLEDELTA, 1, + [Define to 1 if you have the `QWheelEvent::angleDelta' member function.]) + fi +]) +dnl +dnl Check whether the Qt class QWheelEvent has the position member function. +dnl This member function was introduced in Qt 5.14. +dnl +AC_DEFUN([OCTAVE_CHECK_FUNC_QWHEELEVENT_POSITION], [ + AC_CACHE_CHECK([for QWheelEvent::position in <QWheelEvent>], + [octave_cv_func_qwheelevent_position], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <QWheelEvent> + void foo (const QWheelEvent& ev) + { + ev.position (); + }; + ]])], + octave_cv_func_qwheelevent_position=yes, + octave_cv_func_qwheelevent_position=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_func_qwheelevent_position = yes; then + AC_DEFINE(HAVE_QWHEELEVENT_POSITION, 1, + [Define to 1 if you have the `QWheelEvent::position' member function.]) + fi +]) +dnl dnl Check whether the Qt class QList has a constructor that accepts dnl a pair of iterators. This constructor was introduced in Qt 5.14. dnl @@ -593,6 +690,36 @@ fi ]) dnl +dnl Check whether the Qt::SplitBehavior enum exists and has +dnl Qt::KeepEmptyParts and Qt::SkipEmptyParts members. This enum +dnl was introduced or modified in Qt 5.14. +dnl +AC_DEFUN([OCTAVE_CHECK_QT_SPLITBEHAVIOR_ENUM], [ + AC_CACHE_CHECK([for Qt::SplitBehavior enum], + [octave_cv_qt_splitbehavior_enum], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <Qt> + ]], [[ + Qt::SplitBehavior sb_keep = Qt::KeepEmptyParts; + Qt::SplitBehavior sb_skip = Qt::SkipEmptyParts; + ]])], + octave_cv_qt_splitbehavior_enum=yes, + octave_cv_qt_splitbehavior_enum=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_qt_splitbehavior_enum = yes; then + AC_DEFINE(HAVE_QT_SPLITBEHAVIOR_ENUM, 1, + [Define to 1 if you have the `Qt::SplitBehavior' enum.]) + fi +]) +dnl dnl Check whether HDF5 library has version 1.6 API functions. dnl AC_DEFUN([OCTAVE_CHECK_HDF5_HAS_VER_16_API], [ @@ -1898,8 +2025,12 @@ OCTAVE_CHECK_NEW_QHELPINDEXWIDGET_API OCTAVE_CHECK_FUNC_QLIST_ITERATOR_CONSTRUCTOR OCTAVE_CHECK_FUNC_QSCREEN_DEVICEPIXELRATIO + OCTAVE_CHECK_FUNC_QHELPENGINE_DOCUMENTSFORIDENTIFIER + OCTAVE_CHECK_FUNC_QWHEELEVENT_ANGLEDELTA + OCTAVE_CHECK_FUNC_QWHEELEVENT_POSITION OCTAVE_CHECK_QREGION_ITERATORS + OCTAVE_CHECK_QT_SPLITBEHAVIOR_ENUM if test -n "$OPENGL_LIBS"; then OCTAVE_CHECK_QT_OPENGL_OK([build_qt_graphics=yes],