# HG changeset patch # User John W. Eaton # Date 1386001762 18000 # Node ID c97ee13f1027bfd5edde3dfea269b4079d76a7ca # Parent 8bc09600f0ed0ad2cb31c99a5da38d1125190532 fix build for systems without QFont::Monospace * acinclude.m4 (OCTAVE_CHECK_QFONT_MONOSPACE): New macro. * configure.ac: Use it. * resource-manager.cc (resource_manager::do_reload_settings): Provide fallback for default font family if QFont::Monospace is not available. diff -r 8bc09600f0ed -r c97ee13f1027 configure.ac --- a/configure.ac Sat Nov 30 08:42:24 2013 -0800 +++ b/configure.ac Mon Dec 02 11:29:22 2013 -0500 @@ -2728,6 +2728,7 @@ fi if test $build_gui = yes; then + OCTAVE_CHECK_QFONT_MONOSPACE OCTAVE_CHECK_FUNC_SETPLACEHOLDERTEXT fi diff -r 8bc09600f0ed -r c97ee13f1027 libgui/src/resource-manager.cc --- a/libgui/src/resource-manager.cc Sat Nov 30 08:42:24 2013 -0800 +++ b/libgui/src/resource-manager.cc Mon Dec 02 11:29:22 2013 -0500 @@ -192,18 +192,29 @@ qt_settings.close (); // Get the default monospaced font and replace placeholder - QFont fixed_font = QFont (); +#if defined (HAVE_QFONT_MONOSPACE) + QFont fixed_font; fixed_font.setStyleHint (QFont::Monospace); - settings_text.replace("__default_font__",fixed_font.defaultFamily ()); - settings_text.replace("__default_font_size__","10"); + QString default_family = fixed_font.defaultFamily (); +#elif defined (Q_WS_X11) || defined (Q_WS_WIN) + QString default_family = "Courier New"; +#elif defined (Q_WS_MAC) + QString default_family = "Courier"; +#else + QString default_family = "courier"; +#endif + settings_text.replace ("__default_font__", default_family); + settings_text.replace ("__default_font_size__", "10"); QFile user_settings (settings_file); - if (!user_settings.open (QIODevice::WriteOnly)) + + if (! user_settings.open (QIODevice::WriteOnly)) return; QTextStream out (&user_settings); + out << settings_text; - user_settings.flush (); + user_settings.close (); } diff -r 8bc09600f0ed -r c97ee13f1027 m4/acinclude.m4 --- a/m4/acinclude.m4 Sat Nov 30 08:42:24 2013 -0800 +++ b/m4/acinclude.m4 Mon Dec 02 11:29:22 2013 -0500 @@ -359,6 +359,30 @@ fi ]) dnl +dnl Check whether Qt provides QFont::Monospace +dnl +AC_DEFUN([OCTAVE_CHECK_QFONT_MONOSPACE], [ + AC_CACHE_CHECK([whether Qt provides QFont::Monospace], + [octave_cv_decl_qfont_monospace], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CPPFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + ]], [[ + QFont::StyleHint hint = QFont::Monospace; + ]])], + octave_cv_decl_qfont_monospace=yes, + octave_cv_decl_qfont_monospace=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_decl_qfont_monospace = yes; then + AC_DEFINE(HAVE_QFONT_MONOSPACE, 1, + [Define to 1 if Qt provides QFont::Monospace.]) + fi +]) +dnl dnl Check whether Qscintilla SetPlaceholderText function exists. dnl FIXME: This test uses a version number. It potentially could dnl be re-written to actually call the function, but is it worth it?