summaryrefslogtreecommitdiffstats
path: root/academic/octave/patches/0348f3f57e3c.diff
blob: 1545797a6150d9b26b1de04b5588847d8237c63c (plain)

# HG changeset patch
# User John W. Eaton <jwe@octave.org>
# Date 1609785454 18000
# Node ID 0348f3f57e3ca6fa7c8e5112622c756d00dd7dab
# Parent  a3d92c4ad5502686daf2b34f062db6c950db30ef
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.

diff --git a/libgui/src/octave-dock-widget.cc b/libgui/src/octave-dock-widget.cc
--- a/libgui/src/octave-dock-widget.cc
+++ b/libgui/src/octave-dock-widget.cc
@@ -507,7 +507,12 @@
     QVariant dock_geom
       = settings->value (dw_dock_geometry.key.arg (objectName ()),
                          default_dock_size);
-    if (dock_geom.canConvert (QMetaType::QRect))
+#if defined (QVARIANT_CANCONVERT_ACCEPTS_QMETATYPE_TYPE)
+    QMetaType::Type rect_type = QMetaType::QRect;
+#else
+    QVariant::Type rect_type = QVariant::Rect;
+#endif
+    if (dock_geom.canConvert (rect_type))
       m_recent_dock_geom = dock_geom.toRect ();
     else
       m_recent_dock_geom = dw_dock_geometry.def.toRect ();
diff --git a/libgui/src/resource-manager.cc b/libgui/src/resource-manager.cc
--- a/libgui/src/resource-manager.cc
+++ b/libgui/src/resource-manager.cc
@@ -241,9 +241,17 @@
   // if macOS default font is not available): use QFontDatabase
   if (default_family.isEmpty ())
     {
+#if defined (HAVE_QFONTDATABASE_SYSTEMFONT)
       // Get the system's default monospaced font
       QFont fixed_font = QFontDatabase::systemFont (QFontDatabase::FixedFont);
       default_family = fixed_font.defaultFamily ();
+#elif defined (HAVE_QFONT_MONOSPACE)
+      QFont fixed_font;
+      fixed_font.setStyleHint (QFont::Monospace);
+      default_family = fixed_font.defaultFamily ();
+#else
+      default_family = global_font_family;
+#endif
     }
 
     // Test env variable which has preference
diff --git a/libgui/src/variable-editor-model.cc b/libgui/src/variable-editor-model.cc
--- a/libgui/src/variable-editor-model.cc
+++ b/libgui/src/variable-editor-model.cc
@@ -987,7 +987,12 @@
   variable_editor_model::setData (const QModelIndex& idx,
                                   const QVariant& v_user_input, int role)
   {
-    if (role != Qt::EditRole || ! v_user_input.canConvert (QVariant::String)
+#if defined (QVARIANT_CANCONVERT_ACCEPTS_QMETATYPE_TYPE)
+    QMetaType::Type string_type = QMetaType::QString;
+#else
+    QVariant::Type string_type = QVariant::String;
+#endif
+    if (role != Qt::EditRole || ! v_user_input.canConvert (string_type)
         || ! idx.isValid ())
       return false;
 
diff --git a/m4/acinclude.m4 b/m4/acinclude.m4
--- a/m4/acinclude.m4
+++ b/m4/acinclude.m4
@@ -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