diff m4/acinclude.m4 @ 29271:0348f3f57e3c stable

avoid build errors with Qt4 (bug #59813) * acinclude.m4 (OCTAVE_CHECK_FUNC_QFONTDATABASE_SYSTEMFONT, OCTAVE_CHECK_QVARIANT_CANCONVERT_ACCEPTS_QMETATYPE_TYPE): New macros. (OCTAVE_CHECK_QT_VERSION): Use them. * resource-manager.cc (resource_manager::get_default_font_family): Check availability of QFontDatabase::systemFont, fall back on QFont::setStyleHint, then global_font_family. * octave-dock-widget.cc (octave_dock_widget::handle_settings): Check whether QVariant::canConvert accepts QMetatype::Type. Use QVariant::Type as fallback. * variable-editor-model.cc (variable_editor_model::setData): Likewise.
author John W. Eaton <jwe@octave.org>
date Mon, 04 Jan 2021 13:37:34 -0500
parents 5d7a651bf0bb
children 11bc1b22b29f 0a5b15007766
line wrap: on
line diff
--- a/m4/acinclude.m4	Tue Jan 05 18:19:15 2021 +0100
+++ b/m4/acinclude.m4	Mon Jan 04 13:37:34 2021 -0500
@@ -1091,6 +1091,35 @@
   fi
 ])
 dnl
+dnl Check whether the Qt class QFontDatabase has the systemFont member
+dnl function.  This function was introduced in Qt 5.2.
+dnl
+AC_DEFUN([OCTAVE_CHECK_FUNC_QFONTDATABASE_SYSTEMFONT], [
+  AC_CACHE_CHECK([for QFontDatabase::systemFont function],
+    [octave_cv_func_qfontdatabase_systemfont],
+    [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 <QFontDatabase>
+        #include <QFont>
+        ]], [[
+        QFont font = QFontDatabase::systemFont (QFontDatabase::FixedFont);
+        ]])],
+      octave_cv_func_qfontdatabase_systemfont=yes,
+      octave_cv_func_qfontdatabase_systemfont=no)
+    CPPFLAGS="$ac_octave_save_CPPFLAGS"
+    CXXFLAGS="$ac_octave_save_CXXFLAGS"
+    AC_LANG_POP(C++)
+  ])
+  if test $octave_cv_func_qfontdatabase_systemfont = yes; then
+    AC_DEFINE(HAVE_QFONTDATABASE_SYSTEMFONT, 1,
+      [Define to 1 if you have the `QFontDatabase::systemFont' 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
@@ -1967,6 +1996,37 @@
   fi
 ])
 dnl
+dnl Check whether QVariant::canConvert accepts a QMetaType::Type
+dnl enumeration value as an argument.
+dnl
+AC_DEFUN([OCTAVE_CHECK_QVARIANT_CANCONVERT_ACCEPTS_QMETATYPE_TYPE], [
+  AC_CACHE_CHECK([whether QVariant::canConvert accepts QMetaType::Type argument],
+    [octave_cv_qvariant_canconvert_accepts_qmetatype_type],
+    [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 <QMetaType>
+        #include <QVariant>
+        ]], [[
+        QVariant var;
+        QMetaType::Type type = QMetaType::QString;
+        var.canConvert (type);
+        ]])],
+      octave_cv_qvariant_canconvert_accepts_qmetatype_type=yes,
+      octave_cv_qvariant_canconvert_accepts_qmetatype_type=no)
+    CPPFLAGS="$ac_octave_save_CPPFLAGS"
+    CXXFLAGS="$ac_octave_save_CXXFLAGS"
+    AC_LANG_POP(C++)
+  ])
+  if test $octave_cv_qvariant_canconvert_accepts_qmetatype_type = yes; then
+    AC_DEFINE(QVARIANT_CANCONVERT_ACCEPTS_QMETATYPE_TYPE, 1,
+      [Define to 1 if `QVariant::canConvert' accepts `QMetaType::Type' enumeration value as argument.])
+  fi
+])
+dnl
 dnl Check for the Qhull version.
 dnl
 AC_DEFUN([OCTAVE_CHECK_QHULL_VERSION], [
@@ -2518,6 +2578,7 @@
     ## version that we are testing now will be the one used.
 
     OCTAVE_CHECK_FUNC_QCOMBOBOX_SETCURRENTTEXT
+    OCTAVE_CHECK_FUNC_QFONTDATABASE_SYSTEMFONT
     OCTAVE_CHECK_FUNC_QFONTMETRICS_HORIZONTAL_ADVANCE
     OCTAVE_CHECK_FUNC_QGUIAPPLICATION_SETDESKTOPFILENAME
     OCTAVE_CHECK_FUNC_QHEADERVIEW_SETSECTIONRESIZEMODE
@@ -2539,6 +2600,7 @@
     OCTAVE_CHECK_FUNC_QWHEELEVENT_POSITION
     OCTAVE_CHECK_MEMBER_QFONT_FORCE_INTEGER_METRICS
     OCTAVE_CHECK_MEMBER_QFONT_MONOSPACE
+    OCTAVE_CHECK_QVARIANT_CANCONVERT_ACCEPTS_QMETATYPE_TYPE
     OCTAVE_HAVE_QGUIAPPLICATION
 
     OCTAVE_CHECK_QREGION_ITERATORS