Commit 3cf480d793c97934858e0999f6336d39c9c7af6d

Authored by perry.werneck@gmail.com
1 parent 6b58b3f6
Exists in master and in 1 other branch develop

Modificando tratamento do clipboard para permitir cópia formatada

Showing 1 changed file with 17 additions and 20 deletions   Show diff stats
@@ -129,7 +129,7 @@ static gchar * v3270_cut_selected(v3270 *widget) @@ -129,7 +129,7 @@ static gchar * v3270_cut_selected(v3270 *widget)
129 } 129 }
130 */ 130 */
131 131
132 -const gchar * v3270_get_selected_text(GtkWidget *widget, gboolean cut) 132 +gchar * v3270_get_selected(GtkWidget *widget, gboolean cut)
133 { 133 {
134 v3270 * terminal; 134 v3270 * terminal;
135 char * text; 135 char * text;
@@ -232,38 +232,37 @@ const gchar * v3270_get_selected_text(GtkWidget *widget, gboolean cut) @@ -232,38 +232,37 @@ const gchar * v3270_get_selected_text(GtkWidget *widget, gboolean cut)
232 lib3270_free(text); 232 lib3270_free(text);
233 233
234 234
235 - return terminal->clipboard; 235 + return g_strdup(terminal->clipboard);
236 } 236 }
237 237
238 -const gchar * v3270_get_copy(GtkWidget *widget) 238 +gchar * v3270_get_copy(GtkWidget *widget)
239 { 239 {
240 - v3270 *terminal;  
241 -  
242 g_return_val_if_fail(GTK_IS_V3270(widget),NULL); 240 g_return_val_if_fail(GTK_IS_V3270(widget),NULL);
243 -  
244 - terminal = GTK_V3270(widget);  
245 -  
246 - return terminal->clipboard; 241 + return g_strdup(GTK_V3270(widget)->clipboard);
247 } 242 }
248 243
249 -const gchar * v3270_copy_append(GtkWidget *widget) 244 +void v3270_copy_append(GtkWidget *widget)
250 { 245 {
251 v3270 * terminal; 246 v3270 * terminal;
252 char * str; 247 char * str;
253 gchar * text; 248 gchar * text;
254 gchar * clip; 249 gchar * clip;
255 250
256 - g_return_val_if_fail(GTK_IS_V3270(widget),NULL); 251 + g_return_if_fail(GTK_IS_V3270(widget));
257 252
258 terminal = GTK_V3270(widget); 253 terminal = GTK_V3270(widget);
259 254
260 if(!terminal->clipboard) 255 if(!terminal->clipboard)
261 - return v3270_get_selected_text(widget,FALSE); 256 + {
  257 + // Clipboard is empty, do a single copy
  258 + v3270_copy(widget, V3270_SELECT_TEXT, FALSE);
  259 + return;
  260 + }
262 261
263 str = lib3270_get_selected(terminal->host); 262 str = lib3270_get_selected(terminal->host);
264 263
265 if(!str) 264 if(!str)
266 - return terminal->clipboard; 265 + return;
267 266
268 text = g_convert(str, -1, "UTF-8", lib3270_get_charset(terminal->host), NULL, NULL, NULL); 267 text = g_convert(str, -1, "UTF-8", lib3270_get_charset(terminal->host), NULL, NULL, NULL);
269 268
@@ -280,19 +279,18 @@ const gchar * v3270_copy_append(GtkWidget *widget) @@ -280,19 +279,18 @@ const gchar * v3270_copy_append(GtkWidget *widget)
280 279
281 g_signal_emit(widget,v3270_widget_signal[SIGNAL_CLIPBOARD], 0, TRUE); 280 g_signal_emit(widget,v3270_widget_signal[SIGNAL_CLIPBOARD], 0, TRUE);
282 281
283 - return terminal->clipboard;  
284 } 282 }
285 283
286 -const gchar * v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut) 284 +void v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut)
287 { 285 {
288 - const gchar * text; 286 + gchar * text;
289 GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GDK_SELECTION_CLIPBOARD); 287 GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GDK_SELECTION_CLIPBOARD);
290 288
291 - g_return_val_if_fail(GTK_IS_V3270(widget),NULL); 289 + g_return_if_fail(GTK_IS_V3270(widget));
292 290
293 GTK_V3270(widget)->table = (mode == V3270_SELECT_TABLE ? 1 : 0); 291 GTK_V3270(widget)->table = (mode == V3270_SELECT_TABLE ? 1 : 0);
294 292
295 - text = v3270_get_selected_text(widget,cut); 293 + text = v3270_get_selected(widget,cut);
296 294
297 if(text) 295 if(text)
298 { 296 {
@@ -308,10 +306,9 @@ const gchar * v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean c @@ -308,10 +306,9 @@ const gchar * v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean c
308 } 306 }
309 307
310 g_signal_emit(widget,v3270_widget_signal[SIGNAL_CLIPBOARD], 0, TRUE); 308 g_signal_emit(widget,v3270_widget_signal[SIGNAL_CLIPBOARD], 0, TRUE);
  309 + g_free(text);
311 } 310 }
312 311
313 - return text;  
314 -  
315 } 312 }
316 313
317 void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding) 314 void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding)