diff m4/acinclude.m4 @ 24821:88665923596c

Make variable editor code compile under Qt4 (bug #53259) * variable_editor.cc (variable_dock_widget::toplevel_change): Condition the maximizing of the floated variable widget on having QGuiApplication. (variable_editor::construct_tool_bar): Use Qt::FindDirectChildrenOnly only if it is available. * acinclude.m4 (OCTAVE_HAVE_QGUIAPPLICATION, OCTAVE_QOBJECT_FINDCHILDREN_ACCEPTS_FINDCHILDOPTIONS): New macros. (OCTAVE_CHECK_QT_VERSION): Use them.
author Daniel J Sebald <daniel.sebald@ieee.org>
date Thu, 01 Mar 2018 23:19:55 -0600
parents 8a92f442c4a2
children 53f68d0fb122
line wrap: on
line diff
--- a/m4/acinclude.m4	Fri Mar 02 13:46:45 2018 +0100
+++ b/m4/acinclude.m4	Thu Mar 01 23:19:55 2018 -0600
@@ -1254,6 +1254,70 @@
   fi
 ])
 dnl
+dnl Check whether the Qt class QGuiApplication exists.  This class
+dnl was introduced in Qt 5.0.
+dnl
+dnl FIXME: Delete this entirely when we drop support for Qt 4.
+dnl
+AC_DEFUN([OCTAVE_HAVE_QGUIAPPLICATION], [
+  AC_CACHE_CHECK([for QGuiApplication],
+    [octave_cv_decl_qguiapplication],
+    [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 <QGuiApplication>
+        ]], [[
+        QScreen *pscreen = QGuiApplication::primaryScreen ();
+        ]])],
+      octave_cv_decl_qguiapplication=yes,
+      octave_cv_decl_qguiapplication=no)
+    CPPFLAGS="$ac_octave_save_CPPFLAGS"
+    CXXFLAGS="$ac_octave_save_CXXFLAGS"
+    AC_LANG_POP(C++)
+  ])
+  if test $octave_cv_decl_qguiapplication = yes; then
+    AC_DEFINE(HAVE_QGUIAPPLICATION, 1,
+      [Define to 1 if `QGuiApplication' class is available.])
+  fi
+])
+dnl
+dnl Check whether QObject::findChildren accepts Qt::FindChildOptions
+dnl argument.
+dnl
+dnl FIXME: Delete this entirely when we drop support for Qt 4.
+dnl
+AC_DEFUN([OCTAVE_QOBJECT_FINDCHILDREN_ACCEPTS_FINDCHILDOPTIONS], [
+  AC_CACHE_CHECK([whether QObject::findChildren accepts Qt::FindChildOptions],
+    [octave_cv_qobject_findchildren_accepts_findchildoptions],
+    [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 <QList>
+        #include <QObject>
+        #include <QWidget>
+        ]], [[
+        QObject obj;
+        QList<QWidget *> widgets
+          = obj.findChildren<QWidget *> ("name", Qt::FindDirectChildrenOnly);
+        ]])],
+      octave_cv_qobject_findchildren_accepts_findchildoptions=yes,
+      octave_cv_qobject_findchildren_accepts_findchildoptions=no)
+    CPPFLAGS="$ac_octave_save_CPPFLAGS"
+    CXXFLAGS="$ac_octave_save_CXXFLAGS"
+    AC_LANG_POP(C++)
+  ])
+  if test $octave_cv_qobject_findchildren_accepts_findchildoptions = yes; then
+    AC_DEFINE(QOBJECT_FINDCHILDREN_ACCEPTS_QFINDCHILDOPTIONS, 1,
+      [Define to 1 if `QObject::findChildren' accepts 'Qt::FindChildOptions' argument.])
+  fi
+])
+dnl
 dnl Check for the Qhull version.
 dnl
 AC_DEFUN([OCTAVE_CHECK_QHULL_VERSION], [
@@ -1774,6 +1838,8 @@
     OCTAVE_CHECK_FUNC_QTABWIDGET_SETMOVABLE
     OCTAVE_CHECK_MEMBER_QFONT_FORCE_INTEGER_METRICS
     OCTAVE_CHECK_MEMBER_QFONT_MONOSPACE
+    OCTAVE_HAVE_QGUIAPPLICATION
+    OCTAVE_QOBJECT_FINDCHILDREN_ACCEPTS_FINDCHILDOPTIONS
 
     if test -n "$OPENGL_LIBS"; then
       OCTAVE_CHECK_QT_OPENGL_OK([build_qt_graphics=yes],