Commit c014ad39084a87982e716626ad8026d2801cfb95
1 parent
60fda04e
Exists in
master
and in
1 other branch
Modificando tratamento do clipboard em windows para identificar falha no processo de "paste"
Showing
1 changed file
with
41 additions
and
10 deletions
Show diff stats
selection.c
... | ... | @@ -346,6 +346,47 @@ void v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut) |
346 | 346 | update_system_clipboard(widget); |
347 | 347 | } |
348 | 348 | |
349 | +#ifdef _WIN32 | |
350 | + | |
351 | +void v3270_paste(GtkWidget *widget) | |
352 | +{ | |
353 | + HGLOBAL hglb; | |
354 | + | |
355 | + if (!IsClipboardFormatAvailable(CF_TEXT)) | |
356 | + return; | |
357 | + | |
358 | + if (!OpenClipboard(NULL)) | |
359 | + return; | |
360 | + | |
361 | + hglb = GetClipboardData(CF_TEXT); | |
362 | + if (hglb != NULL) | |
363 | + { | |
364 | + LPTSTR lptstr = GlobalLock(hglb); | |
365 | + if (lptstr != NULL) | |
366 | + { | |
367 | + v3270_paste_string(widget,lptstr,"CP1252"); | |
368 | + GlobalUnlock(hglb); | |
369 | + } | |
370 | + } | |
371 | + | |
372 | + CloseClipboard(); | |
373 | + | |
374 | +} | |
375 | + | |
376 | +#else | |
377 | + | |
378 | +static void text_received(GtkClipboard *clipboard, const gchar *text, GtkWidget *widget) | |
379 | +{ | |
380 | + v3270_paste_string(widget,text,"UTF-8"); | |
381 | +} | |
382 | + | |
383 | +void v3270_paste(GtkWidget *widget) | |
384 | +{ | |
385 | + gtk_clipboard_request_text(gtk_widget_get_clipboard(widget,GDK_SELECTION_CLIPBOARD),(GtkClipboardTextReceivedFunc) text_received,(gpointer) widget); | |
386 | +} | |
387 | + | |
388 | +#endif // _WIN32 | |
389 | + | |
349 | 390 | void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding) |
350 | 391 | { |
351 | 392 | gchar * buffer = NULL; |
... | ... | @@ -472,16 +513,6 @@ void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encod |
472 | 513 | |
473 | 514 | } |
474 | 515 | |
475 | -static void text_received(GtkClipboard *clipboard, const gchar *text, GtkWidget *widget) | |
476 | -{ | |
477 | - v3270_paste_string(widget,text,"UTF-8"); | |
478 | -} | |
479 | - | |
480 | -void v3270_paste(GtkWidget *widget) | |
481 | -{ | |
482 | - gtk_clipboard_request_text(gtk_widget_get_clipboard(widget,GDK_SELECTION_CLIPBOARD),(GtkClipboardTextReceivedFunc) text_received,(gpointer) widget); | |
483 | -} | |
484 | - | |
485 | 516 | void v3270_unselect(GtkWidget *widget) |
486 | 517 | { |
487 | 518 | v3270_disable_updates(widget); | ... | ... |