# HG changeset patch # User John W. Eaton # Date 1470815682 14400 # Node ID 2fd4f1a3f4a8fa3799ebf44ce47e4ac2d88c1759 # Parent da201af35c9720bf58c53936d6330cbff6416f8f allow building with Qt5 (bug #40252) * acinclude.m4 (OCTAVE_CHECK_QT_VERSION): Define HAVE_QT4 or HAVE_QT5. Also check for Qt5PrintSupport when using Qt5. * Canvas.cc, Object.cc, QTerminal.cc, TerminalView.cpp, Vt102Emulation.cpp, konsole_wcwidth.h, find-files-dialog.cc, file-editor-tab.cc, file-editor.cc, find-dialog.cc, octave-gui.cc, resource-manager.cc, shortcut-manager.cc, workspace-model.cc, workspace-view.cc: Adapt to Qt5 API changes. diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/graphics/Canvas.cc --- a/libgui/graphics/Canvas.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/graphics/Canvas.cc Wed Aug 10 03:54:42 2016 -0400 @@ -393,7 +393,13 @@ QRectF r (bb(0), bb(1), bb(2), bb(3)); r.adjust (-5, -5, 5, 5); - if (r.contains (event->posF ())) + +#if (HAVE_QT4) + bool rect_contains_pos = r.contains (event->posF ()); +#else + bool rect_contains_pos = r.contains (event->localPos ()); +#endif + if (rect_contains_pos) { currentObj = childObj; break; @@ -442,7 +448,12 @@ Matrix bb = it->get_properties ().get_boundingbox (true); QRectF r (bb(0), bb(1), bb(2), bb(3)); - if (r.contains (event->posF ())) +#if defined (HAVE_QT4) + bool rect_contains_pos = r.contains (event->posF ()); +#else + bool rect_contains_pos = r.contains (event->localPos ()); +#endif + if (rect_contains_pos) axesObj = *it; } diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/graphics/Object.cc --- a/libgui/graphics/Object.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/graphics/Object.cc Wed Aug 10 03:54:42 2016 -0400 @@ -183,7 +183,7 @@ QVariant v = obj->property ("QtHandles::Object"); if (v.isValid ()) - return reinterpret_cast (qVariantValue (v)); + return reinterpret_cast (qvariant_cast (v)); return 0; } diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/qterminal/libqterminal/QTerminal.cc --- a/libgui/qterminal/libqterminal/QTerminal.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/qterminal/libqterminal/QTerminal.cc Wed Aug 10 03:54:42 2016 -0400 @@ -83,9 +83,9 @@ else { _interrupt_action->setShortcut ( - QKeySequence (Qt::ControlModifier + Qt::Key_C)); + QKeySequence (Qt::ControlModifier | Qt::Key_C)); _nop_action->setShortcut ( - QKeySequence (Qt::ControlModifier + Qt::Key_D)); + QKeySequence (Qt::ControlModifier | Qt::Key_D)); } } @@ -194,7 +194,7 @@ sc = QKeySequence::Copy; // settings->value () does not work! // dis- or enable extra interrupt action - bool extra_ir_action = (sc != QKeySequence (Qt::ControlModifier + Qt::Key_C)); + bool extra_ir_action = (sc != QKeySequence (Qt::ControlModifier | Qt::Key_C)); _interrupt_action->setEnabled (extra_ir_action); has_extra_interrupt (extra_ir_action); diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/qterminal/libqterminal/unix/TerminalView.cpp --- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp Wed Aug 10 03:54:42 2016 -0400 @@ -41,6 +41,7 @@ #include #include #include +#include #include #include diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp --- a/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/qterminal/libqterminal/unix/Vt102Emulation.cpp Wed Aug 10 03:54:42 2016 -0400 @@ -994,7 +994,7 @@ "is missing."); reset(); - receiveData( translatorError.toAscii().constData() , translatorError.count() ); + receiveData( translatorError.toLatin1().constData() , translatorError.count() ); } } diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/qterminal/libqterminal/unix/konsole_wcwidth.h --- a/libgui/qterminal/libqterminal/unix/konsole_wcwidth.h Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/qterminal/libqterminal/unix/konsole_wcwidth.h Wed Aug 10 03:54:42 2016 -0400 @@ -11,7 +11,6 @@ #define _KONSOLE_WCWIDTH_H_ // Qt -#include #include int konsole_wcwidth(quint16 ucs); diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/find-files-dialog.cc --- a/libgui/src/find-files-dialog.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/find-files-dialog.cc Wed Aug 10 03:54:42 2016 -0400 @@ -125,7 +125,11 @@ _file_list->horizontalHeader ()->restoreState ( settings->value ("findfiles/column_state").toByteArray ()); _file_list->horizontalHeader ()->setSortIndicatorShown (true); +#if defined (HAVE_QT4) _file_list->horizontalHeader ()->setClickable (true); +#else + _file_list->horizontalHeader ()->setSectionsClickable (true); +#endif _file_list->horizontalHeader ()->setStretchLastSection (true); _file_list->sortByColumn ( settings->value ("findfiles/sort_files_by_column",0).toInt (), diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/m-editor/file-editor-tab.cc --- a/libgui/src/m-editor/file-editor-tab.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/m-editor/file-editor-tab.cc Wed Aug 10 03:54:42 2016 -0400 @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -591,10 +592,15 @@ bool update_apis_file = false; // flag, whether update of apis files // get path to prepared api info - QDesktopServices desktopServices; +#if defined (HAVE_QT4) QString prep_apis_path - = desktopServices.storageLocation (QDesktopServices::HomeLocation) + = QDesktopServices::storageLocation (QDesktopServices::HomeLocation) + "/.config/octave/" + QString(OCTAVE_VERSION) + "/qsci/"; +#else + QString prep_apis_path + = QStandardPaths::writableLocation (QStandardPaths::HomeLocation) + + "/.config/octave/" + QString(OCTAVE_VERSION) + "/qsci/"; +#endif // get settings which infos are used for octave bool octave_builtins = settings->value ( @@ -627,9 +633,16 @@ // compare to local package list // FIXME: How to get user chosen location? - QFileInfo local_pkg_list = QFileInfo ( - desktopServices.storageLocation (QDesktopServices::HomeLocation) - + "/.octave_packages"); +#if defined (HAVE_QT4) + QFileInfo local_pkg_list + = QFileInfo (QDesktopServices::storageLocation (QDesktopServices::HomeLocation) + + "/.octave_packages"); +#else + QFileInfo local_pkg_list + = QFileInfo (QStandardPaths::writableLocation (QStandardPaths::HomeLocation) + + "/.octave_packages"); +#endif + if (local_pkg_list.exists () & (apis_date < local_pkg_list.lastModified ()) ) update_apis_file = true; @@ -1578,7 +1591,7 @@ // read the file QTextStream in (&file); // set the desired codec - QTextCodec *codec = QTextCodec::codecForName (_encoding.toAscii ()); + QTextCodec *codec = QTextCodec::codecForName (_encoding.toLatin1 ()); in.setCodec(codec); QApplication::setOverrideCursor (Qt::WaitCursor); @@ -1617,7 +1630,7 @@ QsciScintilla::EolMode file_editor_tab::detect_eol_mode () { - QByteArray text = _edit_area->text ().toAscii (); + QByteArray text = _edit_area->text ().toLatin1 (); QByteArray eol_lf = QByteArray (1,0x0a); QByteArray eol_cr = QByteArray (1,0x0d); @@ -1859,7 +1872,7 @@ _encoding = _new_encoding; // consider a possible new encoding // set the desired codec (if suitable for contents) - QTextCodec *codec = QTextCodec::codecForName (_encoding.toAscii ()); + QTextCodec *codec = QTextCodec::codecForName (_encoding.toLatin1 ()); if (check_valid_codec (codec)) { diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/m-editor/file-editor.cc --- a/libgui/src/m-editor/file-editor.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/m-editor/file-editor.cc Wed Aug 10 03:54:42 2016 -0400 @@ -30,17 +30,18 @@ #include "resource-manager.h" #include "shortcut-manager.h" -#include #include #include +#include #include -#include +#include #include +#include +#include #include +#include #include -#include -#include -#include +#include #include #include "octave-link.h" diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/m-editor/find-dialog.cc --- a/libgui/src/m-editor/find-dialog.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/m-editor/find-dialog.cc Wed Aug 10 03:54:42 2016 -0400 @@ -65,8 +65,17 @@ #if defined (HAVE_QSCINTILLA) -#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include + #include "find-dialog.h" find_dialog::find_dialog (QsciScintilla* edit_area, diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/octave-gui.cc --- a/libgui/src/octave-gui.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/octave-gui.cc Wed Aug 10 03:54:42 2016 -0400 @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -60,7 +61,11 @@ // Disable all Qt messages by default. static void +#if defined (HAVE_QT4) message_handler (QtMsgType, const char *) +#else +message_handler (QtMsgType, const QMessageLogContext &, const QString &) +#endif { } @@ -128,7 +133,13 @@ // Installing our handler suppresses the messages. if (show_gui_msgs.empty ()) - qInstallMsgHandler (message_handler); + { +#if defined (HAVE_QT4) + qInstallMsgHandler (message_handler); +#else + qInstallMessageHandler (message_handler); +#endif + } #if defined (HAVE_QT_GRAPHICS) install___init_qt___functions (); @@ -144,7 +155,7 @@ // Set the codec for all strings (before wizard or any GUI object) #if ! defined (Q_OS_WIN32) - QTextCodec::setCodecForCStrings (QTextCodec::codecForName ("UTF-8")); + QTextCodec::setCodecForLocale (QTextCodec::codecForName ("UTF-8")); #endif bool start_gui = start_gui_p (); diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/resource-manager.cc --- a/libgui/src/resource-manager.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/resource-manager.cc Wed Aug 10 03:54:42 2016 -0400 @@ -31,6 +31,9 @@ #include #include #include +#if defined (HAVE_QT5) +# include +#endif #include #include "error.h" @@ -61,10 +64,13 @@ : settings_directory (), settings_file (), settings (0), default_settings (0) { - QDesktopServices desktopServices; - +#if defined (HAVE_QT4) QString home_path - = desktopServices.storageLocation (QDesktopServices::HomeLocation); + = QDesktopServices::storageLocation (QDesktopServices::HomeLocation); +#else + QString home_path + = QStandardPaths::writableLocation (QStandardPaths::HomeLocation); +#endif settings_directory = home_path + "/.config/octave"; diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/shortcut-manager.cc --- a/libgui/src/shortcut-manager.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/shortcut-manager.cc Wed Aug 10 03:54:42 2016 -0400 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -80,7 +81,7 @@ void shortcut_manager::do_init_data () { - QKeySequence ctrl; + Qt::KeyboardModifier ctrl; int prefix; #if defined (Q_OS_MAC) // Use CMD key as an equivalent of Ctrl key on other platforms @@ -94,8 +95,8 @@ prefix = Qt::NoModifier; #endif - QKeySequence ctrl_shift = ctrl + Qt::ShiftModifier; - QKeySequence ctrl_alt = ctrl + Qt::AltModifier; + Qt::KeyboardModifiers ctrl_shift = ctrl | Qt::ShiftModifier; + Qt::KeyboardModifiers ctrl_alt = ctrl | Qt::AltModifier; // actions of the main window @@ -362,7 +363,11 @@ _dialog = 0; _level_hash.clear (); +#if defined (HAVE_QT4) tree_view->header ()->setResizeMode (QHeaderView::ResizeToContents); +#else + tree_view->header ()->setSectionResizeMode (QHeaderView::ResizeToContents); +#endif QTreeWidgetItem *main = new QTreeWidgetItem (tree_view); main->setText (0, tr ("Global")); @@ -430,8 +435,8 @@ // write the shortcuts tree_item->setText (0, sc.description); - tree_item->setText (1, sc.default_sc); - tree_item->setText (2, sc.actual_sc); + tree_item->setText (1, sc.default_sc.toString ()); + tree_item->setText (2, sc.actual_sc.toString ()); _item_index_hash[tree_item] = i + 1; // index+1 to avoid 0 _index_item_hash[i] = tree_item; @@ -555,8 +560,8 @@ } - _edit_actual->setText (_sc.at (index).actual_sc); - _label_default->setText (_sc.at (index).default_sc); + _edit_actual->setText (_sc.at (index).actual_sc.toString ()); + _label_default->setText (_sc.at (index).default_sc.toString ()); _handled_index = index; _edit_actual->setFocus (); @@ -589,7 +594,7 @@ shortcut_t double_shortcut = _sc.at (double_index); double_shortcut.actual_sc = QKeySequence (); _sc.replace (double_index, double_shortcut); - _index_item_hash[double_index]->setText (2, QKeySequence ()); + _index_item_hash[double_index]->setText (2, QString ()); } else return; @@ -601,7 +606,7 @@ shortcut.actual_sc = _edit_actual->text(); _sc.replace (_handled_index, shortcut); - _index_item_hash[_handled_index]->setText (2, shortcut.actual_sc); + _index_item_hash[_handled_index]->setText (2, shortcut.actual_sc.toString ()); if (! shortcut.actual_sc.isEmpty ()) _shortcut_hash[shortcut.actual_sc.toString ()] = _handled_index + 1; @@ -634,7 +639,7 @@ // update the tree view QTreeWidgetItem* tree_item = _index_item_hash[i]; // get related tree item - tree_item->setText (2, sc.actual_sc); // display new shortcut + tree_item->setText (2, sc.actual_sc.toString ()); // display new shortcut } } @@ -773,6 +778,6 @@ if (modifiers & Qt::MetaModifier) key += Qt::META; - setText (QKeySequence(key)); + setText (QKeySequence(key).toString ()); } } diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/workspace-model.cc --- a/libgui/src/workspace-model.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/workspace-model.cc Wed Aug 10 03:54:42 2016 -0400 @@ -131,7 +131,7 @@ { QString class_chars = resource_manager::storage_class_chars (); int actual_class - = class_chars.indexOf (_scopes[idx.row ()].toAscii ()); + = class_chars.indexOf (_scopes[idx.row ()].toLatin1 ()); if (actual_class >= 0) return QVariant (_storage_class_colors.at (actual_class)); else @@ -171,7 +171,7 @@ QString class_chars = resource_manager::storage_class_chars (); int actual_class - = class_chars.indexOf (_scopes[idx.row ()].toAscii ()); + = class_chars.indexOf (_scopes[idx.row ()].toLatin1 ()); if (actual_class >= 0) { diff -r da201af35c97 -r 2fd4f1a3f4a8 libgui/src/workspace-view.cc --- a/libgui/src/workspace-view.cc Wed Aug 10 09:09:41 2016 +0200 +++ b/libgui/src/workspace-view.cc Wed Aug 10 03:54:42 2016 -0400 @@ -108,9 +108,15 @@ view->setSortingEnabled (true); // Initialize column order and width of the workspace view->horizontalHeader ()->restoreState (settings->value ("workspaceview/column_state").toByteArray ()); + // Set header properties for sorting +#if defined (HAVE_QT4) view->horizontalHeader ()->setClickable (true); view->horizontalHeader ()->setMovable (true); +#else + view->horizontalHeader ()->setSectionsClickable (true); + view->horizontalHeader ()->setSectionsMovable (true); +#endif view->horizontalHeader ()->setSortIndicator (settings->value ("workspaceview/sort_by_column",0).toInt (), static_cast (settings->value ("workspaceview/sort_order", Qt::AscendingOrder).toUInt ())); diff -r da201af35c97 -r 2fd4f1a3f4a8 m4/acinclude.m4 --- a/m4/acinclude.m4 Wed Aug 10 09:09:41 2016 +0200 +++ b/m4/acinclude.m4 Wed Aug 10 03:54:42 2016 -0400 @@ -1350,7 +1350,7 @@ LIBQSCINTILLA=qscintilla2 ;; 5) - QT_MODULES="Qt5Core Qt5Gui Qt5Network Qt5OpenGL" + QT_MODULES="Qt5Core Qt5Gui Qt5Network Qt5OpenGL Qt5PrintSupport" LIBQSCINTILLA=qt5scintilla2 ;; *) @@ -1523,7 +1523,7 @@ QT_LIBS="$QT_LIBS -l$LIBQSCINTILLA" OCTAVE_CHECK_QSCINTILLA_VERSION AC_DEFINE(HAVE_QSCINTILLA, 1, - [Define to 1 if the QScintilla library and header files are available]) + [Define to 1 if the QScintilla library and header files are available.]) save_CPPFLAGS="$CPPFLAGS" save_CXXFLAGS="$CXXFLAGS" @@ -1557,11 +1557,19 @@ for ver in $octave_qt_versions; do OCTAVE_CHECK_QT_VERSION([$ver]) if test $build_qt_gui = yes; then + have_qt_version=$ver break fi done - if test $build_qt_gui = no; then + if test $build_qt_gui = yes; then + if test x"$have_qt_version" = x4; then + AC_DEFINE(HAVE_QT4, 1, [Define if you are using Qt version 4.]) + fi + if test x"$have_qt_version" = x5; then + AC_DEFINE(HAVE_QT5, 1, [Define if you are using Qt version 5.]) + fi + else if test -n "$warn_qt_libraries"; then OCTAVE_CONFIGURE_WARNING([warn_qt_libraries]) fi