# HG changeset patch # User John W. Eaton # Date 1596460031 14400 # Node ID 966193fa103737cd7e4a5530706535d82eb200f7 # Parent b9bf7a6bb8de1c3504d7fe0e533083baa57007b7 make change in 562902dc1bb6 conditional (bug #58867) * TerminalView.cpp (TerminalView::paintEvent): Use Qt foreach loop if QRegion does not have C++ standard iterators. * acinclude.m4 (OCTAVE_CHECK_QREGION_ITERATORS): New macro. (OCTAVE_CHECK_QT_VERSION): Use it. diff -r b9bf7a6bb8de -r 966193fa1037 libgui/qterminal/libqterminal/unix/TerminalView.cpp --- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp Thu Jul 30 00:22:26 2020 -0400 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp Mon Aug 03 09:07:11 2020 -0400 @@ -963,8 +963,12 @@ 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 b9bf7a6bb8de -r 966193fa1037 m4/acinclude.m4 --- a/m4/acinclude.m4 Thu Jul 30 00:22:26 2020 -0400 +++ b/m4/acinclude.m4 Mon Aug 03 09:07:11 2020 -0400 @@ -523,6 +523,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], [ @@ -1828,6 +1866,8 @@ OCTAVE_CHECK_FUNC_QLIST_ITERATOR_CONSTRUCTOR OCTAVE_CHECK_FUNC_QSCREEN_DEVICEPIXELRATIO + 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"])