summaryrefslogtreecommitdiff
path: root/mail-client/claws-mail/files/claws-mail-4.2.0-gtksocket.patch
blob: db28228cc3a9c7a474d991417cbb3e38972a4402 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
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