Commit c014ad39084a87982e716626ad8026d2801cfb95

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

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);
... ...