tUse system web browser to open URLs on Mac - vaccinewars - be a doctor and try… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 187d33f098152ae37fcd70ff1bec45f4c2bb8b60 | |
parent 4f094716ada1246cf9fb320593932bcd68526cd3 | |
Author: Ben Webb <[email protected]> | |
Date: Sun, 15 Nov 2020 01:26:56 -0800 | |
Use system web browser to open URLs on Mac | |
Ignore the WebBrowser config file parameter on Mac; | |
instead, use the system's default web browser. Closes #51. | |
Diffstat: | |
M ChangeLog | 2 +- | |
M configure.ac | 4 ++++ | |
M doc/configfile.html | 3 ++- | |
M src/Makefile.am | 8 +++++++- | |
M src/gtkport/gtkport.c | 8 +++++++- | |
A src/mac_helpers.h | 33 +++++++++++++++++++++++++++++… | |
A src/mac_helpers.m | 35 +++++++++++++++++++++++++++++… | |
7 files changed, 89 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/ChangeLog b/ChangeLog | |
t@@ -15,7 +15,7 @@ SVN | |
variable instead, as per | |
https://curl.haxx.se/libcurl/c/libcurl-tutorial.html#Environment) | |
- The default web browser on Linux has changed from 'mozilla' to | |
- 'firefox'. | |
+ 'firefox'; on Mac the system-configured default browser is used. | |
- Add sound support on Mac. | |
- Add 64-bit Windows binaries. | |
- Fix for a DOS against the server using the REQUESTJET message type | |
diff --git a/configure.ac b/configure.ac | |
t@@ -59,10 +59,14 @@ AC_ARG_WITH(sdl, | |
[ USE_SDL="$withval" ], [ USE_SDL="probe" ]) | |
if test "$host_vendor" = "apple" ; then | |
+ APPLE=yes | |
+ AC_DEFINE(APPLE, 1, [Are we building on an Apple Mac?]) | |
default_cocoa="yes" | |
else | |
+ APPLE=no | |
default_cocoa="no" | |
fi | |
+AM_CONDITIONAL(APPLE, test "$APPLE" = "yes") | |
AC_ARG_WITH(cocoa, | |
[ --without-cocoa do not support Cocoa (Mac) sound output], | |
diff --git a/doc/configfile.html b/doc/configfile.html | |
t@@ -185,7 +185,8 @@ foreground. Only supported on Unix systems.</dd> | |
<dt><b>WebBrowser=<i>/usr/bin/firefox</i></b></dt> | |
<dd>Sets the program used to display website URLs. This is used only by the | |
Unix version, as under Windows the standard mechanism for associating file | |
-types with applications is used.</dd> | |
+types with applications is used, and on MacOS the system-configured default | |
+web browser is used.</dd> | |
<dt><b>ConfigVerbose=<i>FALSE</i></b></dt> | |
<dd>Prints extra feedback information when processing the config. file if set | |
diff --git a/src/Makefile.am b/src/Makefile.am | |
t@@ -5,7 +5,6 @@ MYLINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) | |
else | |
MYLINK = $(CCLD) | |
endif | |
-LINK = $(MYLINK) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ | |
if GUI_CLIENT | |
GUISUBDIR = gui_client | |
t@@ -32,6 +31,13 @@ dopewars_SOURCES = admin.c admin.h AIPlayer.c AIPlayer.h ut… | |
serverside.c serverside.h sound.c sound.h \ | |
tstring.c tstring.h winmain.c winmain.h | |
AM_CPPFLAGS= -I../intl -I${srcdir} -I.. @GLIB_CFLAGS@ @GTK_CFLAGS@ @LIBCURL_CP… | |
+if APPLE | |
+dopewars_SOURCES += mac_helpers.m | |
+MACLDFLAGS = -framework AppKit | |
+else | |
+MACLDFLAGS = | |
+endif | |
+LINK = $(MYLINK) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) $(MACLDFLAGS) -o $@ | |
DEFS = @DEFS@ | |
PIXDIR = ${DESTDIR}${datadir}/pixmaps | |
DOPEDIR = ${DESTDIR}${bindir} | |
diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c | |
t@@ -41,6 +41,10 @@ | |
#include "gtkport.h" | |
#include "nls.h" | |
+#ifdef APPLE | |
+#include "mac_helpers.h" | |
+#endif | |
+ | |
#if CYGWIN | |
#include "unicodewrap.h" | |
const gchar *GTK_STOCK_OK = N_("_OK"); | |
t@@ -5641,7 +5645,9 @@ static void gtk_url_set_cursor(GtkWidget *widget, GtkWid… | |
void DisplayHTML(GtkWidget *parent, const gchar *bin, const gchar *target) | |
{ | |
-#ifdef HAVE_FORK | |
+#ifdef APPLE | |
+ mac_open_url(target); | |
+#elif defined(HAVE_FORK) | |
char *args[3]; | |
pid_t pid; | |
int status; | |
diff --git a/src/mac_helpers.h b/src/mac_helpers.h | |
t@@ -0,0 +1,33 @@ | |
+/************************************************************************ | |
+ * mac_helpers.h Helper functions for Mac builds * | |
+ * Copyright (C) 1998-2020 Ben Webb * | |
+ * Email: [email protected] * | |
+ * WWW: https://dopewars.sourceforge.io/ * | |
+ * * | |
+ * This program is free software; you can redistribute it and/or * | |
+ * modify it under the terms of the GNU General Public License * | |
+ * as published by the Free Software Foundation; either version 2 * | |
+ * of the License, or (at your option) any later version. * | |
+ * * | |
+ * This program is distributed in the hope that it will be useful, * | |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
+ * GNU General Public License for more details. * | |
+ * * | |
+ * You should have received a copy of the GNU General Public License * | |
+ * along with this program; if not, write to the Free Software * | |
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * | |
+ * MA 02111-1307, USA. * | |
+ ************************************************************************/ | |
+ | |
+#ifndef __DP_MAC_HELPERS_H__ | |
+#define __DP_MAC_HELPERS_H__ | |
+ | |
+#ifdef HAVE_CONFIG_H | |
+#include <config.h> | |
+#endif | |
+ | |
+/* Open the given URL using the system-configured web browser */ | |
+void mac_open_url(const char *url); | |
+ | |
+#endif /* __DP_MAC_HELPERS_H__ */ | |
diff --git a/src/mac_helpers.m b/src/mac_helpers.m | |
t@@ -0,0 +1,35 @@ | |
+/************************************************************************ | |
+ * mac_helpers.m Helper functions for Mac builds * | |
+ * Copyright (C) 1998-2020 Ben Webb * | |
+ * Email: [email protected] * | |
+ * WWW: https://dopewars.sourceforge.io/ * | |
+ * * | |
+ * This program is free software; you can redistribute it and/or * | |
+ * modify it under the terms of the GNU General Public License * | |
+ * as published by the Free Software Foundation; either version 2 * | |
+ * of the License, or (at your option) any later version. * | |
+ * * | |
+ * This program is distributed in the hope that it will be useful, * | |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
+ * GNU General Public License for more details. * | |
+ * * | |
+ * You should have received a copy of the GNU General Public License * | |
+ * along with this program; if not, write to the Free Software * | |
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * | |
+ * MA 02111-1307, USA. * | |
+ ************************************************************************/ | |
+ | |
+#ifdef HAVE_CONFIG_H | |
+#include <config.h> | |
+#endif | |
+ | |
+#import <AppKit/AppKit.h> | |
+ | |
+#include "mac_helpers.h" | |
+ | |
+void mac_open_url(const char *url) | |
+{ | |
+ NSString *urlstr = [[NSString alloc] initWithUTF8String:url]; | |
+ [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlstr]]; | |
+} |