You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
7.3 KiB
215 lines
7.3 KiB
From dd4c4e5152235f9f4f319cc9fdad9227ebf688c9 Mon Sep 17 00:00:00 2001
|
|
From: Jonathan Boeing <jonathan@claws-mail.org>
|
|
Date: Sat, 18 Nov 2023 18:51:30 -0700
|
|
Subject: [PATCH] Fix building on non-X11 systems
|
|
|
|
Gtk Sockets and the GDK_IS_X11_DISPLAY() macro are only available when
|
|
GDK_WINDOWING_X11 is defined
|
|
---
|
|
src/action.c | 3 ++
|
|
src/compose.c | 78 ++++++++++++++++++--------------
|
|
src/plugins/dillo/dillo_viewer.c | 5 ++
|
|
3 files changed, 53 insertions(+), 33 deletions(-)
|
|
|
|
diff --git a/src/action.c b/src/action.c
|
|
index d86294fbc..0c459aab6 100644
|
|
--- a/src/action.c
|
|
+++ b/src/action.c
|
|
@@ -30,6 +30,9 @@
|
|
#ifdef GDK_WINDOWING_X11
|
|
# include <gdk/gdkx.h>
|
|
#endif /* GDK_WINDOWING_X11 */
|
|
+#ifdef GDK_WINDOWING_QUARTZ
|
|
+# include <gdk/gdkquartz.h>
|
|
+#endif /* GDK_WINDOWING_QUARTZ */
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
diff --git a/src/compose.c b/src/compose.c
|
|
index 574d89be1..b32fa6bc7 100644
|
|
--- a/src/compose.c
|
|
+++ b/src/compose.c
|
|
@@ -375,11 +375,11 @@ static void compose_set_ext_editor_sensitive (Compose *compose,
|
|
gboolean sensitive);
|
|
static gboolean compose_get_ext_editor_cmd_valid();
|
|
static gboolean compose_get_ext_editor_uses_socket();
|
|
-#ifndef G_OS_WIN32
|
|
+#ifdef GDK_WINDOWING_X11
|
|
static gboolean compose_ext_editor_plug_removed_cb
|
|
(GtkSocket *socket,
|
|
Compose *compose);
|
|
-#endif /* G_OS_WIN32 */
|
|
+#endif /* GDK_WINDOWING_X11 */
|
|
|
|
static void compose_undo_state_changed (UndoMain *undostruct,
|
|
gint undo_state,
|
|
@@ -9623,11 +9623,11 @@ static gboolean compose_can_autosave(Compose *compose)
|
|
static void compose_exec_ext_editor(Compose *compose)
|
|
{
|
|
gchar *tmp;
|
|
-#ifndef G_OS_WIN32
|
|
+#ifdef GDK_WINDOWING_X11
|
|
GtkWidget *socket;
|
|
Window socket_wid = 0;
|
|
gchar *p, *s;
|
|
-#endif /* G_OS_WIN32 */
|
|
+#endif /* GDK_WINDOWING_X11 */
|
|
GPid pid;
|
|
GError *error = NULL;
|
|
gchar *cmd = NULL;
|
|
@@ -9643,39 +9643,43 @@ static void compose_exec_ext_editor(Compose *compose)
|
|
return;
|
|
}
|
|
|
|
- if (compose_get_ext_editor_uses_socket() && GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
|
|
-#ifndef G_OS_WIN32
|
|
- /* Only allow one socket */
|
|
- if (compose->exteditor_socket != NULL) {
|
|
- if (gtk_widget_is_focus(compose->exteditor_socket)) {
|
|
- /* Move the focus off of the socket */
|
|
- gtk_widget_child_focus(compose->window, GTK_DIR_TAB_BACKWARD);
|
|
+#ifdef GDK_WINDOWING_X11
|
|
+ if (compose_get_ext_editor_uses_socket()) {
|
|
+ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
|
|
+ /* Only allow one socket */
|
|
+ if (compose->exteditor_socket != NULL) {
|
|
+ if (gtk_widget_is_focus(compose->exteditor_socket)) {
|
|
+ /* Move the focus off of the socket */
|
|
+ gtk_widget_child_focus(compose->window, GTK_DIR_TAB_BACKWARD);
|
|
+ }
|
|
+ g_free(tmp);
|
|
+ return;
|
|
}
|
|
- g_free(tmp);
|
|
- return;
|
|
- }
|
|
- /* Create the receiving GtkSocket */
|
|
- socket = gtk_socket_new ();
|
|
- g_signal_connect (G_OBJECT(socket), "plug-removed",
|
|
- G_CALLBACK(compose_ext_editor_plug_removed_cb),
|
|
- compose);
|
|
- gtk_box_pack_start(GTK_BOX(compose->edit_vbox), socket, TRUE, TRUE, 0);
|
|
- gtk_widget_set_size_request(socket, prefs_common.compose_width, -1);
|
|
- /* Realize the socket so that we can use its ID */
|
|
- gtk_widget_realize(socket);
|
|
- socket_wid = gtk_socket_get_id(GTK_SOCKET (socket));
|
|
- compose->exteditor_socket = socket;
|
|
+ /* Create the receiving GtkSocket */
|
|
+ socket = gtk_socket_new ();
|
|
+ g_signal_connect (G_OBJECT(socket), "plug-removed",
|
|
+ G_CALLBACK(compose_ext_editor_plug_removed_cb),
|
|
+ compose);
|
|
+ gtk_box_pack_start(GTK_BOX(compose->edit_vbox), socket, TRUE, TRUE, 0);
|
|
+ gtk_widget_set_size_request(socket, prefs_common.compose_width, -1);
|
|
+ /* Realize the socket so that we can use its ID */
|
|
+ gtk_widget_realize(socket);
|
|
+ socket_wid = gtk_socket_get_id(GTK_SOCKET (socket));
|
|
+ compose->exteditor_socket = socket;
|
|
+ } else
|
|
+ debug_print("Socket communication with an external editor is only available on X11.\n");
|
|
+ }
|
|
#else
|
|
- alertpanel_error(_("Socket communication with an external editor is not available on Windows."));
|
|
+ if (compose_get_ext_editor_uses_socket()) {
|
|
+ alertpanel_error(_("Socket communication with an external editor is only available on X11."));
|
|
g_free(tmp);
|
|
return;
|
|
-#endif /* G_OS_WIN32 */
|
|
- } else
|
|
- debug_print("Socket communication with an external editor is only available on X11.\n");
|
|
+ }
|
|
+#endif /* GDK_WINDOWING_X11 */
|
|
|
|
if (compose_get_ext_editor_cmd_valid()) {
|
|
+#ifdef GDK_WINDOWING_X11
|
|
if (compose_get_ext_editor_uses_socket() && GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
|
|
-#ifndef G_OS_WIN32
|
|
p = g_strdup(prefs_common_get_ext_editor_cmd());
|
|
s = strstr(p, "%w");
|
|
s[1] = 'u';
|
|
@@ -9684,10 +9688,12 @@ static void compose_exec_ext_editor(Compose *compose)
|
|
else
|
|
cmd = g_strdup_printf(p, socket_wid, tmp);
|
|
g_free(p);
|
|
-#endif /* G_OS_WIN32 */
|
|
} else {
|
|
cmd = g_strdup_printf(prefs_common_get_ext_editor_cmd(), tmp);
|
|
}
|
|
+#else
|
|
+ cmd = g_strdup_printf(prefs_common_get_ext_editor_cmd(), tmp);
|
|
+#endif /* GDK_WINDOWING_X11 */
|
|
} else {
|
|
if (prefs_common_get_ext_editor_cmd())
|
|
g_warning("external editor command-line is invalid: '%s'",
|
|
@@ -9776,10 +9782,12 @@ static void compose_ext_editor_closed_cb(GPid pid, gint exit_status, gpointer da
|
|
compose->exteditor_file = NULL;
|
|
compose->exteditor_pid = INVALID_PID;
|
|
compose->exteditor_tag = -1;
|
|
+#ifdef GDK_WINDOWING_X11
|
|
if (compose->exteditor_socket && GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
|
|
gtk_widget_destroy(compose->exteditor_socket);
|
|
compose->exteditor_socket = NULL;
|
|
}
|
|
+#endif /* GDK_WINDOWING_X11 */
|
|
|
|
}
|
|
|
|
@@ -9887,6 +9895,7 @@ static void compose_set_ext_editor_sensitive(Compose *compose,
|
|
ext_editor_menu_entries[i], sensitive);
|
|
}
|
|
|
|
+#ifdef GDK_WINDOWING_X11
|
|
if (compose_get_ext_editor_uses_socket() && GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
|
|
if (sensitive) {
|
|
if (compose->exteditor_socket)
|
|
@@ -9910,6 +9919,9 @@ static void compose_set_ext_editor_sensitive(Compose *compose,
|
|
} else {
|
|
gtk_widget_set_sensitive(compose->text, sensitive);
|
|
}
|
|
+#else
|
|
+ gtk_widget_set_sensitive(compose->text, sensitive);
|
|
+#endif /* GDK_WINDOWING_X11 */
|
|
if (compose->toolbar->send_btn)
|
|
gtk_widget_set_sensitive(compose->toolbar->send_btn, sensitive);
|
|
if (compose->toolbar->sendl_btn)
|
|
@@ -9934,14 +9946,14 @@ static gboolean compose_get_ext_editor_uses_socket()
|
|
strstr(prefs_common_get_ext_editor_cmd(), "%w"));
|
|
}
|
|
|
|
-#ifndef G_OS_WIN32
|
|
+#ifdef GDK_WINDOWING_X11
|
|
static gboolean compose_ext_editor_plug_removed_cb(GtkSocket *socket, Compose *compose)
|
|
{
|
|
compose->exteditor_socket = NULL;
|
|
/* returning FALSE allows destruction of the socket */
|
|
return FALSE;
|
|
}
|
|
-#endif /* G_OS_WIN32 */
|
|
+#endif /* GDK_WINDOWING_X11 */
|
|
|
|
/**
|
|
* compose_undo_state_changed:
|
|
diff --git a/src/plugins/dillo/dillo_viewer.c b/src/plugins/dillo/dillo_viewer.c
|
|
index d2690bff6..8a93511d7 100644
|
|
--- a/src/plugins/dillo/dillo_viewer.c
|
|
+++ b/src/plugins/dillo/dillo_viewer.c
|
|
@@ -125,10 +125,15 @@ static void dillo_show_mimepart(MimeViewer *_viewer,
|
|
g_free(viewer->filename);
|
|
}
|
|
|
|
+#ifdef GDK_WINDOWING_X11
|
|
if (!GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
|
|
debug_print("dillo viewer only works on X11\n");
|
|
return;
|
|
}
|
|
+#else
|
|
+ debug_print("dillo viewer only works on X11\n");
|
|
+ return;
|
|
+#endif
|
|
|
|
viewer->filename = procmime_get_tmp_file_name(partinfo);
|
|
|
|
--
|
|
2.25.1
|
|
|