]> git.draconx.ca Git - rrace.git/commitdiff
Fix build on older Motif without XmPIXMAP_AND_STRING.
authorNick Bowler <nbowler@draconx.ca>
Wed, 16 Nov 2022 03:25:18 +0000 (22:25 -0500)
committerNick Bowler <nbowler@draconx.ca>
Wed, 16 Nov 2022 03:25:18 +0000 (22:25 -0500)
It seems that not all versions of Motif support labels with a labelType
of XmPIXMAP_AND_STRING.  This mode is used in the about dialog to
display the program's icon, but it's silly to fail compilation over
this.

Add a configure test to check if this feature is available, and fall
back to XmSTRING (which will render without the icon).

configure.ac
src/motif_ui.c

index 96dc8f22fd3c1e30649a0a3cc22dcbef36204673..9b39749c2c0001a2c45d1a721378caaa3090055d 100644 (file)
@@ -70,6 +70,29 @@ AM_COND_IF([HAVE_MOTIF],
 AH_TEMPLATE([X11_RENDER_DEBUG],
   [Define to 1 to enable visual aids for debugging X11 rendering.])
 
+# Check for XmPIXMAP_AND_STRING.
+#
+# Just checking for the existence of this identifier is sufficient, to ensure
+# that the C compiler accepts the name.  If it turns out to not actually be
+# supported by the library used at runtime, Motif itself will catch this
+# and set to the default (i.e., XmSTRING).
+AM_COND_IF([HAVE_MOTIF],
+[AC_CACHE_CHECK([whether Motif supports XmPIXMAP_AND_STRING],
+[dx_cv_motif_have_pixmap_and_string],
+[save_CFLAGS=$CFLAGS save_LIBS=$LIBS
+CFLAGS="$MOTIF_CFLAGS $CFLAGS" LIBS="$MOTIF_LIBS $LIBS"
+AC_COMPUTE_INT([dx_tmp],
+  [XmPIXMAP != XmPIXMAP_AND_STRING && XmSTRING != XmPIXMAP_AND_STRING],
+  [#include <Xm/Label.h>], [dx_tmp=0])
+AS_IF([test x"$dx_tmp" = x"1"],
+  [dx_cv_motif_have_pixmap_and_string=yes],
+  [dx_cv_motif_have_pixmap_and_string=no])
+CFLAGS=$save_CFLAGS LIBS=$save_LIBS])
+AS_IF([test x"$dx_cv_motif_have_pixmap_and_string" = x"yes"],
+  [AC_DEFINE([HAVE_MOTIF_PIXMAP_AND_STRING], [1],
+    [Define to 1 if Motif supports XmPIXMAP_AND_STRING])])
+])
+
 AC_CONFIG_TESTDIR([.], [t:.])
 DX_PROG_AUTOTEST
 AM_CONDITIONAL([HAVE_AUTOTEST], [test x"$dx_cv_autotest_works" = x"yes"])
index 7eafc643744db24bce10aeaf05bf0b3a5c01350c..127de061bbc1a84608cfe95a09a953631bc25bb1 100644 (file)
@@ -408,7 +408,10 @@ void ui_show_about(struct app_state *state, Widget shell)
 
        msg = version_format_head("rrace-motif");
        l = XmMessageBoxGetChild(w, XmDIALOG_MESSAGE_LABEL);
-       XtVaSetValues(l, XmNlabelType, XmPIXMAP_AND_STRING,
+       XtVaSetValues(l, XmNlabelType, XmSTRING,
+#if HAVE_MOTIF_PIXMAP_AND_STRING
+                        XmNlabelType, XmPIXMAP_AND_STRING,
+#endif
                         XmNlabelPixmap, state->icon_pixmap,
                         STRING_ARG(XmNlabelString, msg),
                         (char *)NULL);