Commit dc08a8f5f3e8a174f02b9e117466fdf96bf00030
1 parent
b37993db
Exists in
master
and in
1 other branch
Updating windows clipboard module.
Showing
2 changed files
with
53 additions
and
0 deletions
Show diff stats
src/include/v3270/settings.h
src/selection/windows/paste.c
... | ... | @@ -28,6 +28,7 @@ |
28 | 28 | */ |
29 | 29 | |
30 | 30 | #include <clipboard.h> |
31 | + #include <v3270/dialogs.h> | |
31 | 32 | |
32 | 33 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
33 | 34 | |
... | ... | @@ -172,6 +173,7 @@ static void targets_received(GtkClipboard *clipboard, GdkAtom *atoms, gint n_ato |
172 | 173 | |
173 | 174 | } |
174 | 175 | |
176 | +/* | |
175 | 177 | LIB3270_EXPORT void v3270_paste(GtkWidget *widget) |
176 | 178 | { |
177 | 179 | g_return_if_fail(GTK_IS_V3270(widget)); |
... | ... | @@ -194,4 +196,51 @@ LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) |
194 | 196 | ); |
195 | 197 | |
196 | 198 | } |
199 | +*/ | |
200 | + | |
201 | +LIB3270_EXPORT void v3270_clipboard_get_from_url(GtkWidget *widget, const gchar *url) | |
202 | +{ | |
203 | + g_return_if_fail(GTK_IS_V3270(widget)); | |
204 | + | |
205 | + GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GTK_V3270(widget)->selection.target); | |
206 | + | |
207 | + if(!url || !*url || g_str_has_prefix(url,"clipboard://") || g_str_has_prefix(url,"tn3270://")) | |
208 | + { | |
209 | + gtk_clipboard_request_targets( | |
210 | + clipboard, | |
211 | + (GtkClipboardTargetsReceivedFunc) targets_received, | |
212 | + (gpointer) widget | |
213 | + ); | |
214 | + } | |
215 | + else if(g_str_has_prefix(url,"text://")) | |
216 | + { | |
217 | + gtk_clipboard_request_text( | |
218 | + clipboard, | |
219 | + (GtkClipboardTextReceivedFunc) text_received, | |
220 | + (gpointer) widget | |
221 | + ); | |
222 | + | |
223 | + } | |
224 | + else if(g_str_has_prefix(url,"file://")) | |
225 | + { | |
226 | + GtkWidget * dialog = v3270_load_dialog_new(widget, url+7); | |
227 | + gtk_widget_show_all(dialog); | |
228 | + v3270_load_dialog_run(dialog); | |
229 | + gtk_widget_destroy(dialog); | |
230 | + } | |
231 | + | |
232 | +} | |
233 | + | |
234 | + | |
235 | +LIB3270_EXPORT void v3270_paste(GtkWidget *widget) | |
236 | +{ | |
237 | + v3270_clipboard_get_from_url(widget,NULL); | |
238 | +} | |
239 | + | |
240 | +LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) | |
241 | +{ | |
242 | + v3270_clipboard_get_from_url(widget,"text://"); | |
243 | +} | |
244 | + | |
245 | + | |
197 | 246 | ... | ... |