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
selection.c
... ... @@ -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 134 v3270 * terminal;
135 135 char * text;
... ... @@ -232,38 +232,37 @@ const gchar * v3270_get_selected_text(GtkWidget *widget, gboolean cut)
232 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 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 246 v3270 * terminal;
252 247 char * str;
253 248 gchar * text;
254 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 253 terminal = GTK_V3270(widget);
259 254  
260 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 262 str = lib3270_get_selected(terminal->host);
264 263  
265 264 if(!str)
266   - return terminal->clipboard;
  265 + return;
267 266  
268 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 279  
281 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 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 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 295 if(text)
298 296 {
... ... @@ -308,10 +306,9 @@ const gchar * v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean c
308 306 }
309 307  
310 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 314 void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding)
... ...