# HG changeset patch # User John W. Eaton # Date 1596460031 14400 # Node ID 50c112129700f53bb4afdca3f6d4215fd3ed51c7 # Parent 2df0c2d86d50e802fa5440fc6d7c6a8b95dfa1c8 avoid deprecated Qt QRegion::rects function * TerminalView.cpp: If QRegion has C++ standard iterators, use range-based for loop directly with QRegion object instead of foreach with a QVector of QRect objects returned from QRegion::rects. * acinclude.m4 (OCTAVE_CHECK_QREGION_ITERATORS): New macro. (OCTAVE_CHECK_QT_VERSION): Use it. diff -r 2df0c2d86d50 -r 50c112129700 libgui/qterminal/libqterminal/unix/TerminalView.cpp --- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp Tue Jul 14 01:19:30 2020 -0400 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp Mon Aug 03 09:07:11 2020 -0400 @@ -23,6 +23,10 @@ 02110-1301 USA. */ +#if defined (HAVE_CONFIG_H) +# include "config.h" +#endif + // Own #include "unix/TerminalView.h" @@ -956,7 +960,11 @@ QPainter paint(this); //qDebug("%s %d paintEvent %d %d", __FILE__, __LINE__, paint.window().top(), paint.window().right()); +#if defined (HAVE_QREGION_ITERATORS) + for (QRect rect : (pe->region() & contentsRect())) +#else foreach (QRect rect, (pe->region() & contentsRect()).rects()) +#endif { drawBackground(paint,rect,palette().window().color()); drawContents(paint, rect); diff -r 2df0c2d86d50 -r 50c112129700 m4/acinclude.m4 --- a/m4/acinclude.m4 Tue Jul 14 01:19:30 2020 -0400 +++ b/m4/acinclude.m4 Mon Aug 03 09:07:11 2020 -0400 @@ -896,6 +896,44 @@ fi ]) dnl +dnl Check whether the Qt class QRegion has the iterators and related +dnl functions introduced in Qt 5.8. +dnl +AC_DEFUN([OCTAVE_CHECK_QREGION_ITERATORS], [ + AC_CACHE_CHECK([for QRegion iterators and related functions], + [octave_cv_qregion_iterators], + [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 + ]], [[ + QRegion region; + QRegion::const_iterator it; + it = region.begin (); + it = region.end (); + it = region.cbegin (); + it = region.cend (); + QRegion::const_reverse_iterator rit; + rit = region.rbegin (); + rit = region.rend (); + rit = region.crbegin (); + rit = region.crend (); + ]])], + octave_cv_qregion_iterators=yes, + octave_cv_qregion_iterators=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_qregion_iterators = yes; then + AC_DEFINE(HAVE_QREGION_ITERATORS, 1, + [Define to 1 if you have the `QFontMetrics::horizontalAdvance' function.]) + fi +]) +dnl dnl Check whether HDF5 library has version 1.6 API functions. dnl AC_DEFUN([OCTAVE_CHECK_HDF5_HAS_VER_16_API], [ @@ -2308,6 +2346,8 @@ OCTAVE_CHECK_MEMBER_QFONT_MONOSPACE OCTAVE_HAVE_QGUIAPPLICATION + OCTAVE_CHECK_QREGION_ITERATORS + if test -n "$OPENGL_LIBS"; then OCTAVE_CHECK_QT_OPENGL_OK([build_qt_graphics=yes], [warn_qt_opengl="Qt does not work with the OpenGL libs (GL and GLU); disabling OpenGL graphics with Qt GUI"])