Commit dc08a8f5f3e8a174f02b9e117466fdf96bf00030

Authored by Perry Werneck
1 parent b37993db
Exists in master and in 1 other branch develop

Updating windows clipboard module.

src/include/v3270/settings.h
... ... @@ -31,6 +31,10 @@
31 31  
32 32 #define V3270SETTINGS_H_INCLUDED 1
33 33  
  34 +#ifdef _WIN32
  35 + #include <windows.h>
  36 +#endif // _WIN32
  37 +
34 38 #include <gtk/gtk.h>
35 39  
36 40 G_BEGIN_DECLS
... ...
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  
... ...