Commit 5de056344c3bb1b9c7d8bf0b7c6642210fd84beb

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

Improving "paste" methods.

src/dialogs/load.c
... ... @@ -245,7 +245,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
245 245  
246 246 gtk_window_set_title(GTK_WINDOW(dialog),_("Paste from file"));
247 247  
248   - if(filename)
  248 + if(filename && *filename)
249 249 gtk_entry_set_text(GTK_ENTRY(dialog->filename),filename);
250 250  
251 251 gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(widget)));
... ...
src/include/v3270.h
... ... @@ -227,9 +227,12 @@
227 227 LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut);
228 228 LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut);
229 229  
230   - LIB3270_EXPORT void v3270_paste(GtkWidget *widget);
231   - LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget);
232   - LIB3270_EXPORT void v3270_paste_from_file(GtkWidget *widget);
  230 + LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url);
  231 +
  232 + LIB3270_EXPORT void v3270_paste(GtkWidget *widget) G_GNUC_DEPRECATED;
  233 + LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) G_GNUC_DEPRECATED;
  234 + LIB3270_EXPORT void v3270_paste_from_file(GtkWidget *widget) G_GNUC_DEPRECATED;
  235 +
233 236 LIB3270_EXPORT void v3270_input_text(GtkWidget *widget, const gchar *text, const gchar *encoding);
234 237  
235 238 // Colors
... ...
src/selection/linux/paste.c
... ... @@ -29,6 +29,7 @@
29 29  
30 30 #include <clipboard.h>
31 31 #include <lib3270/toggle.h>
  32 + #include <v3270/dialogs.h>
32 33  
33 34 /*--[ Implement ]------------------------------------------------------------------------------------*/
34 35  
... ... @@ -176,25 +177,47 @@ static void targets_received(GtkClipboard *clipboard, GdkAtom *atoms, gint n_ato
176 177  
177 178 }
178 179  
179   -LIB3270_EXPORT void v3270_paste(GtkWidget *widget)
  180 +LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url)
180 181 {
181 182 g_return_if_fail(GTK_IS_V3270(widget));
182 183  
183 184 GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GTK_V3270(widget)->selection.target);
184   - gtk_clipboard_request_targets(clipboard, (GtkClipboardTargetsReceivedFunc) targets_received, (gpointer) widget);
  185 +
  186 + if(!url || g_str_has_prefix(url,"clipboard://"))
  187 + {
  188 + gtk_clipboard_request_targets(
  189 + clipboard,
  190 + (GtkClipboardTargetsReceivedFunc) targets_received,
  191 + (gpointer) widget
  192 + );
  193 + }
  194 + else if(g_str_has_prefix(url,"text://"))
  195 + {
  196 + gtk_clipboard_request_text(
  197 + clipboard,
  198 + (GtkClipboardTextReceivedFunc) text_received,
  199 + (gpointer) widget
  200 + );
  201 +
  202 + }
  203 + else if(g_str_has_prefix(url,"file://"))
  204 + {
  205 + GtkWidget * dialog = v3270_load_dialog_new(widget, url+7);
  206 + gtk_widget_show_all(dialog);
  207 + v3270_load_dialog_run(dialog);
  208 + gtk_widget_destroy(dialog);
  209 + }
185 210  
186 211 }
187 212  
188   -LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget)
189   -{
190   - g_return_if_fail(GTK_IS_V3270(widget));
191   - GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GTK_V3270(widget)->selection.target);
192 213  
193   - gtk_clipboard_request_text(
194   - clipboard,
195   - (GtkClipboardTextReceivedFunc) text_received,
196   - (gpointer) widget
197   - );
  214 +LIB3270_EXPORT void v3270_paste(GtkWidget *widget)
  215 +{
  216 + v3270_paste_from_url(widget,NULL);
  217 +}
198 218  
  219 +LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget)
  220 +{
  221 + v3270_paste_from_url(widget,"text://");
199 222 }
200 223  
... ...
src/testprogram/toolbar.c
... ... @@ -157,7 +157,7 @@
157 157  
158 158 static void paste_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal)
159 159 {
160   - v3270_paste(terminal);
  160 + v3270_paste_from_url(terminal,NULL);
161 161 }
162 162  
163 163 static void copy_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal)
... ...
src/trace/exec.c
... ... @@ -237,18 +237,7 @@
237 237 gchar * arg = cmdline+5;
238 238 g_strstrip(arg);
239 239  
240   - if(!*arg)
241   - {
242   - v3270_paste(trace->terminal);
243   - }
244   - else if(!g_ascii_strcasecmp(arg,"text"))
245   - {
246   - v3270_paste_text(trace->terminal);
247   - }
248   - else
249   - {
250   - return errno = EINVAL;
251   - }
  240 + v3270_paste_from_url(trace->terminal,arg);
252 241  
253 242 return 0;
254 243 }
... ...