Commit e0247aab6186c5f94da8aa4b89c0efe3862e3b26
1 parent
eb4db366
Exists in
master
and in
1 other branch
Adding smart copy options.
Showing
7 changed files
with
85 additions
and
40 deletions
Show diff stats
locale/pt_BR.po
@@ -5,8 +5,8 @@ msgid "" | @@ -5,8 +5,8 @@ msgid "" | ||
5 | msgstr "" | 5 | msgstr "" |
6 | "Project-Id-Version: pw3270 5.0\n" | 6 | "Project-Id-Version: pw3270 5.0\n" |
7 | "Report-Msgid-Bugs-To: \n" | 7 | "Report-Msgid-Bugs-To: \n" |
8 | -"POT-Creation-Date: 2020-01-27 11:29-0300\n" | ||
9 | -"PO-Revision-Date: 2020-01-27 11:31-0300\n" | 8 | +"POT-Creation-Date: 2020-01-28 08:48-0300\n" |
9 | +"PO-Revision-Date: 2020-01-28 10:09-0300\n" | ||
10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" | 10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" |
11 | "Language-Team: Português <>\n" | 11 | "Language-Team: Português <>\n" |
12 | "Language: pt_BR\n" | 12 | "Language: pt_BR\n" |
@@ -257,7 +257,7 @@ msgstr "Clique para carregar arquivo" | @@ -257,7 +257,7 @@ msgstr "Clique para carregar arquivo" | ||
257 | msgid "Click to save file" | 257 | msgid "Click to save file" |
258 | msgstr "Clique para salvar arquivo" | 258 | msgstr "Clique para salvar arquivo" |
259 | 259 | ||
260 | -#: src/dialogs/settings/clipboard.c:385 | 260 | +#: src/dialogs/settings/clipboard.c:409 |
261 | msgid "Clipboard" | 261 | msgid "Clipboard" |
262 | msgstr "Área de transferência" | 262 | msgstr "Área de transferência" |
263 | 263 | ||
@@ -265,7 +265,7 @@ msgstr "Área de transferência" | @@ -265,7 +265,7 @@ msgstr "Área de transferência" | ||
265 | msgid "Clipboard name" | 265 | msgid "Clipboard name" |
266 | msgstr "Nome da área de transferência" | 266 | msgstr "Nome da área de transferência" |
267 | 267 | ||
268 | -#: src/dialogs/settings/clipboard.c:384 | 268 | +#: src/dialogs/settings/clipboard.c:408 |
269 | msgid "Clipboard properties" | 269 | msgid "Clipboard properties" |
270 | msgstr "Configuração da área de transferência" | 270 | msgstr "Configuração da área de transferência" |
271 | 271 | ||
@@ -317,7 +317,7 @@ msgstr "Copiar como texto puro" | @@ -317,7 +317,7 @@ msgstr "Copiar como texto puro" | ||
317 | msgid "Copy as table" | 317 | msgid "Copy as table" |
318 | msgstr "Copiar como tabela" | 318 | msgstr "Copiar como tabela" |
319 | 319 | ||
320 | -#: src/dialogs/settings/clipboard.c:217 | 320 | +#: src/dialogs/settings/clipboard.c:239 |
321 | msgid "Copy options" | 321 | msgid "Copy options" |
322 | msgstr "Opções da cópia" | 322 | msgstr "Opções da cópia" |
323 | 323 | ||
@@ -523,7 +523,7 @@ msgstr "Cinza" | @@ -523,7 +523,7 @@ msgstr "Cinza" | ||
523 | msgid "Green" | 523 | msgid "Green" |
524 | msgstr "Verde" | 524 | msgstr "Verde" |
525 | 525 | ||
526 | -#: src/dialogs/settings/clipboard.c:219 | 526 | +#: src/dialogs/settings/clipboard.c:241 |
527 | msgid "HTML options" | 527 | msgid "HTML options" |
528 | msgstr "Opções HTML" | 528 | msgstr "Opções HTML" |
529 | 529 | ||
@@ -689,11 +689,11 @@ msgstr "Nenhuma transferência" | @@ -689,11 +689,11 @@ msgstr "Nenhuma transferência" | ||
689 | msgid "No transfer in progress" | 689 | msgid "No transfer in progress" |
690 | msgstr "Nenhuma transferência em andamento" | 690 | msgstr "Nenhuma transferência em andamento" |
691 | 691 | ||
692 | -#: src/dialogs/settings/clipboard.c:282 | 692 | +#: src/dialogs/settings/clipboard.c:306 |
693 | msgid "None (Don't export color)" | 693 | msgid "None (Don't export color)" |
694 | msgstr "Nenhum (Não exporta cores)" | 694 | msgstr "Nenhum (Não exporta cores)" |
695 | 695 | ||
696 | -#: src/dialogs/settings/clipboard.c:402 | 696 | +#: src/dialogs/settings/clipboard.c:426 |
697 | msgid "None (Don't export font name)" | 697 | msgid "None (Don't export font name)" |
698 | msgstr "Nenhuma (Não exporta fontes)" | 698 | msgstr "Nenhuma (Não exporta fontes)" |
699 | 699 | ||
@@ -801,7 +801,7 @@ msgstr "Colar de um arquivo" | @@ -801,7 +801,7 @@ msgstr "Colar de um arquivo" | ||
801 | msgid "Paste from text file" | 801 | msgid "Paste from text file" |
802 | msgstr "Colar de um arquivo texto" | 802 | msgstr "Colar de um arquivo texto" |
803 | 803 | ||
804 | -#: src/dialogs/settings/clipboard.c:218 | 804 | +#: src/dialogs/settings/clipboard.c:240 |
805 | msgid "Paste options" | 805 | msgid "Paste options" |
806 | msgstr "Opções para colar" | 806 | msgstr "Opções para colar" |
807 | 807 | ||
@@ -825,7 +825,7 @@ msgstr "Rosa" | @@ -825,7 +825,7 @@ msgstr "Rosa" | ||
825 | msgid "Plain text" | 825 | msgid "Plain text" |
826 | msgstr "Texto puro" | 826 | msgstr "Texto puro" |
827 | 827 | ||
828 | -#: src/dialogs/settings/clipboard.c:350 | 828 | +#: src/dialogs/settings/clipboard.c:374 |
829 | msgid "Plain text only" | 829 | msgid "Plain text only" |
830 | msgstr "Apenas texto puro" | 830 | msgstr "Apenas texto puro" |
831 | 831 | ||
@@ -982,7 +982,7 @@ msgstr "" | @@ -982,7 +982,7 @@ msgstr "" | ||
982 | "SPACE can be specified in units of TRACKS, CYLINDERS, or AVBLOCK, and only " | 982 | "SPACE can be specified in units of TRACKS, CYLINDERS, or AVBLOCK, and only " |
983 | "one option can be used." | 983 | "one option can be used." |
984 | 984 | ||
985 | -#: src/dialogs/settings/clipboard.c:283 src/dialogs/settings/clipboard.c:403 | 985 | +#: src/dialogs/settings/clipboard.c:307 src/dialogs/settings/clipboard.c:427 |
986 | msgid "Same of the screen" | 986 | msgid "Same of the screen" |
987 | msgstr "Igual ao terminal" | 987 | msgstr "Igual ao terminal" |
988 | 988 | ||
@@ -1056,7 +1056,7 @@ msgstr "Guarda fila de transferência num arquivo XML externo" | @@ -1056,7 +1056,7 @@ msgstr "Guarda fila de transferência num arquivo XML externo" | ||
1056 | msgid "Save transfer queue to file" | 1056 | msgid "Save transfer queue to file" |
1057 | msgstr "Salvar fila de transferências para arquivo" | 1057 | msgstr "Salvar fila de transferências para arquivo" |
1058 | 1058 | ||
1059 | -#: src/dialogs/settings/clipboard.c:351 | 1059 | +#: src/dialogs/settings/clipboard.c:375 |
1060 | msgid "Screen with terminal attributes" | 1060 | msgid "Screen with terminal attributes" |
1061 | msgstr "Completa incluindo atributos do terminal" | 1061 | msgstr "Completa incluindo atributos do terminal" |
1062 | 1062 | ||
@@ -1156,6 +1156,10 @@ msgstr "Skip" | @@ -1156,6 +1156,10 @@ msgstr "Skip" | ||
1156 | msgid "Skip this transfer, keep the file on queue." | 1156 | msgid "Skip this transfer, keep the file on queue." |
1157 | msgstr "Skip this transfer, keep the file on queue." | 1157 | msgstr "Skip this transfer, keep the file on queue." |
1158 | 1158 | ||
1159 | +#: src/dialogs/settings/clipboard.c:163 | ||
1160 | +msgid "Smart copy" | ||
1161 | +msgstr "Cópia inteligente" | ||
1162 | + | ||
1159 | #: src/filetransfer/v3270ft.c:341 src/filetransfer/settings.c:544 | 1163 | #: src/filetransfer/v3270ft.c:341 src/filetransfer/settings.c:544 |
1160 | msgid "Space allocation units" | 1164 | msgid "Space allocation units" |
1161 | msgstr "Unidades de alocação de espaço" | 1165 | msgstr "Unidades de alocação de espaço" |
@@ -1515,6 +1519,15 @@ msgstr "" | @@ -1515,6 +1519,15 @@ msgstr "" | ||
1515 | "Quando ativo pesquisa a área de transferência por uma tela similar, se " | 1519 | "Quando ativo pesquisa a área de transferência por uma tela similar, se " |
1516 | "encontrar coloca os campos desprotegidos e restaura a posição do cursor" | 1520 | "encontrar coloca os campos desprotegidos e restaura a posição do cursor" |
1517 | 1521 | ||
1522 | +#: src/dialogs/settings/clipboard.c:164 | ||
1523 | +msgid "" | ||
1524 | +"When set the first copy operation after the selection will set the clipboard " | ||
1525 | +"contents and the next ones will append" | ||
1526 | +msgstr "" | ||
1527 | +"Quando selecionado a primeira operação de cópia após a seleção definirá o " | ||
1528 | +"conteúdo da área de transferência enquanto as operações subsequentes " | ||
1529 | +"acrescentaram conteúdo" | ||
1530 | + | ||
1518 | #: src/dialogs/settings/clipboard.c:144 | 1531 | #: src/dialogs/settings/clipboard.c:144 |
1519 | msgid "" | 1532 | msgid "" |
1520 | "When set the terminal spaces are exported as non-breaking spaces to prevent " | 1533 | "When set the terminal spaces are exported as non-breaking spaces to prevent " |
src/dialogs/settings/clipboard.c
@@ -157,8 +157,17 @@ | @@ -157,8 +157,17 @@ | ||
157 | .width = 1, | 157 | .width = 1, |
158 | .height = 1, | 158 | .height = 1, |
159 | .grid = PASTE_SETTINGS | 159 | .grid = PASTE_SETTINGS |
160 | - } | 160 | + }, |
161 | 161 | ||
162 | + { | ||
163 | + .label = N_("Smart copy"), | ||
164 | + .tooltip = N_("When set the first copy operation after the selection will set the clipboard contents and the next ones will append"), | ||
165 | + .left = 1, | ||
166 | + .top = 3, | ||
167 | + .width = 1, | ||
168 | + .height = 1, | ||
169 | + .grid = COPY_SETTINGS | ||
170 | + } | ||
162 | }; | 171 | }; |
163 | 172 | ||
164 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 173 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
@@ -206,6 +215,19 @@ static void copy_format_changed(GtkComboBox *widget, GtkWidget *grid) { | @@ -206,6 +215,19 @@ static void copy_format_changed(GtkComboBox *widget, GtkWidget *grid) { | ||
206 | 215 | ||
207 | } | 216 | } |
208 | 217 | ||
218 | +static void keep_selected_toggled(GtkToggleButton *togglebutton, V3270ClipboardSettings *settings) { | ||
219 | + | ||
220 | + debug("%s",__FUNCTION__); | ||
221 | + | ||
222 | + if(!gtk_toggle_button_get_active(togglebutton)) { | ||
223 | + gtk_toggle_button_set_active(settings->input.checkboxes[2],FALSE); | ||
224 | + gtk_widget_set_sensitive(GTK_WIDGET(settings->input.checkboxes[2]),FALSE); | ||
225 | + } else { | ||
226 | + gtk_widget_set_sensitive(GTK_WIDGET(settings->input.checkboxes[2]),TRUE); | ||
227 | + } | ||
228 | + | ||
229 | +} | ||
230 | + | ||
209 | static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { | 231 | static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { |
210 | 232 | ||
211 | size_t ix; | 233 | size_t ix; |
@@ -263,6 +285,8 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { | @@ -263,6 +285,8 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { | ||
263 | } | 285 | } |
264 | 286 | ||
265 | v3270_settings_create_toggle_buttons(toggles, G_N_ELEMENTS(toggles), grids, widget->input.toggles); | 287 | v3270_settings_create_toggle_buttons(toggles, G_N_ELEMENTS(toggles), grids, widget->input.toggles); |
288 | + g_signal_connect(G_OBJECT(widget->input.toggles[1]),"toggled",G_CALLBACK(keep_selected_toggled),widget); | ||
289 | + | ||
266 | v3270_settings_create_combos(combos, G_N_ELEMENTS(combos), grids, widget->input.combos); | 290 | v3270_settings_create_combos(combos, G_N_ELEMENTS(combos), grids, widget->input.combos); |
267 | v3270_settings_create_checkboxes(checkboxes, G_N_ELEMENTS(checkboxes), grids, widget->input.checkboxes); | 291 | v3270_settings_create_checkboxes(checkboxes, G_N_ELEMENTS(checkboxes), grids, widget->input.checkboxes); |
268 | 292 | ||
@@ -447,6 +471,7 @@ static void load(GtkWidget *w, GtkWidget *t) { | @@ -447,6 +471,7 @@ static void load(GtkWidget *w, GtkWidget *t) { | ||
447 | 471 | ||
448 | gtk_toggle_button_set_active(widget->input.checkboxes[0],(terminal->selection.options & V3270_SELECTION_NON_BREAKABLE_SPACE) != 0); | 472 | gtk_toggle_button_set_active(widget->input.checkboxes[0],(terminal->selection.options & V3270_SELECTION_NON_BREAKABLE_SPACE) != 0); |
449 | gtk_toggle_button_set_active(widget->input.checkboxes[1],(terminal->selection.options & V3270_SELECTION_SCREEN_PASTE) != 0); | 473 | gtk_toggle_button_set_active(widget->input.checkboxes[1],(terminal->selection.options & V3270_SELECTION_SCREEN_PASTE) != 0); |
474 | + gtk_toggle_button_set_active(widget->input.checkboxes[2],(terminal->selection.options & V3270_SELECTION_SMART_COPY) != 0); | ||
450 | 475 | ||
451 | // | 476 | // |
452 | // Set font combo-box | 477 | // Set font combo-box |
@@ -520,12 +545,18 @@ static void apply(GtkWidget *w, GtkWidget *t) { | @@ -520,12 +545,18 @@ static void apply(GtkWidget *w, GtkWidget *t) { | ||
520 | terminal->selection.options &= ~V3270_SELECTION_NON_BREAKABLE_SPACE; | 545 | terminal->selection.options &= ~V3270_SELECTION_NON_BREAKABLE_SPACE; |
521 | } | 546 | } |
522 | 547 | ||
523 | - if(gtk_toggle_button_get_active(widget->input.checkboxes[0])) { | 548 | + if(gtk_toggle_button_get_active(widget->input.checkboxes[1])) { |
524 | terminal->selection.options |= V3270_SELECTION_SCREEN_PASTE; | 549 | terminal->selection.options |= V3270_SELECTION_SCREEN_PASTE; |
525 | } else { | 550 | } else { |
526 | terminal->selection.options &= ~V3270_SELECTION_SCREEN_PASTE; | 551 | terminal->selection.options &= ~V3270_SELECTION_SCREEN_PASTE; |
527 | } | 552 | } |
528 | 553 | ||
554 | + if(gtk_toggle_button_get_active(widget->input.checkboxes[2])) { | ||
555 | + terminal->selection.options |= V3270_SELECTION_SMART_COPY; | ||
556 | + } else { | ||
557 | + terminal->selection.options &= ~V3270_SELECTION_SMART_COPY; | ||
558 | + } | ||
559 | + | ||
529 | // Get font settings | 560 | // Get font settings |
530 | switch(get_active_id(widget,0)) { | 561 | switch(get_active_id(widget,0)) { |
531 | case '0': | 562 | case '0': |
src/include/terminal.h
@@ -120,12 +120,13 @@ G_BEGIN_DECLS | @@ -120,12 +120,13 @@ G_BEGIN_DECLS | ||
120 | 120 | ||
121 | typedef enum _V3270SelectionOption { | 121 | typedef enum _V3270SelectionOption { |
122 | 122 | ||
123 | - V3270_SELECTION_PLAIN_TEXT = 0x0000, ///< @brief Uses only plain text. | ||
124 | - V3270_SELECTION_FONT_FAMILY = 0x0001, ///< @brief Inform font-family. | ||
125 | - V3270_SELECTION_COLORS = 0x0002, ///< @brief Inform terminal colors. | ||
126 | - V3270_SELECTION_NON_BREAKABLE_SPACE = 0x0004, ///< @brief Use non breakable spaces. | ||
127 | - V3270_SELECTION_DIALOG_STATE = 0x0010, ///< @brief Used for settings dialog. | ||
128 | - V3270_SELECTION_SCREEN_PASTE = 0x0020, ///< @brief Enable screen paste. | 123 | + V3270_SELECTION_PLAIN_TEXT = 0x00, ///< @brief Uses only plain text. |
124 | + V3270_SELECTION_FONT_FAMILY = 0x01, ///< @brief Inform font-family. | ||
125 | + V3270_SELECTION_COLORS = 0x02, ///< @brief Inform terminal colors. | ||
126 | + V3270_SELECTION_NON_BREAKABLE_SPACE = 0x04, ///< @brief Use non breakable spaces. | ||
127 | + V3270_SELECTION_SCREEN_PASTE = 0x08, ///< @brief Enable screen paste. | ||
128 | + V3270_SELECTION_SMART_COPY = 0x10, ///< @brief Enable copy/append based on current selection state. | ||
129 | + V3270_SELECTION_DIALOG_STATE = 0x20, ///< @brief Used for settings dialog. | ||
129 | 130 | ||
130 | } V3270SelectionOption; | 131 | } V3270SelectionOption; |
131 | 132 | ||
@@ -155,6 +156,7 @@ G_BEGIN_DECLS | @@ -155,6 +156,7 @@ G_BEGIN_DECLS | ||
155 | int scaled_fonts : 1; /// @brief Use scaled fonts | 156 | int scaled_fonts : 1; /// @brief Use scaled fonts |
156 | int drawing : 1; /// @brief Draw widget? | 157 | int drawing : 1; /// @brief Draw widget? |
157 | int freeze : 1; /// @brief Truee when the "save settings" signal is disabled. | 158 | int freeze : 1; /// @brief Truee when the "save settings" signal is disabled. |
159 | + int append : 1; /// @brief Next smart-copy operation will be append. | ||
158 | 160 | ||
159 | /// @brief Action properties. | 161 | /// @brief Action properties. |
160 | GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM]; | 162 | GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM]; |
src/include/v3270/selection.h
@@ -39,11 +39,11 @@ | @@ -39,11 +39,11 @@ | ||
39 | typedef enum _v3270_copy_mode | 39 | typedef enum _v3270_copy_mode |
40 | { | 40 | { |
41 | 41 | ||
42 | - V3270_COPY_DEFAULT, ///< @brief Detect format based on lib3270's smart past toggle. | ||
43 | V3270_COPY_FORMATTED, ///< @brief Copy formatted data; keep attributes. | 42 | V3270_COPY_FORMATTED, ///< @brief Copy formatted data; keep attributes. |
44 | V3270_COPY_TEXT, ///< @brief Single text format, ignore attributes. | 43 | V3270_COPY_TEXT, ///< @brief Single text format, ignore attributes. |
45 | V3270_COPY_TABLE, ///< @brief Copy as table. | 44 | V3270_COPY_TABLE, ///< @brief Copy as table. |
46 | - V3270_COPY_APPEND ///< @brief Append to current contents keeping the stored format. | 45 | + V3270_COPY_APPEND, ///< @brief Append to current contents keeping the stored format. |
46 | + V3270_COPY_SMART ///< @brief use append/default based on current copy state. | ||
47 | 47 | ||
48 | } V3270_COPY_MODE; | 48 | } V3270_COPY_MODE; |
49 | 49 |
src/selection/copy.c
@@ -30,34 +30,32 @@ | @@ -30,34 +30,32 @@ | ||
30 | #include <clipboard.h> | 30 | #include <clipboard.h> |
31 | #include <lib3270/selection.h> | 31 | #include <lib3270/selection.h> |
32 | 32 | ||
33 | - static void do_copy(v3270 *terminal, gboolean cut) | ||
34 | - { | 33 | + static void do_copy(v3270 *terminal, gboolean cut) { |
34 | + | ||
35 | lib3270_selection * selection = lib3270_selection_new(terminal->host,cut,0); | 35 | lib3270_selection * selection = lib3270_selection_new(terminal->host,cut,0); |
36 | 36 | ||
37 | - if(selection) | ||
38 | - { | 37 | + if(selection) { |
39 | terminal->selection.blocks = g_list_append(terminal->selection.blocks,selection); | 38 | terminal->selection.blocks = g_list_append(terminal->selection.blocks,selection); |
39 | + terminal->append = ((terminal->selection.options & V3270_SELECTION_SMART_COPY) != 0) ? 1 : 0 ; // Define next smart option. | ||
40 | } | 40 | } |
41 | 41 | ||
42 | } | 42 | } |
43 | 43 | ||
44 | - LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) | ||
45 | - { | 44 | + LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) { |
45 | + | ||
46 | g_return_if_fail(GTK_IS_V3270(widget)); | 46 | g_return_if_fail(GTK_IS_V3270(widget)); |
47 | 47 | ||
48 | v3270 * terminal = GTK_V3270(widget); | 48 | v3270 * terminal = GTK_V3270(widget); |
49 | 49 | ||
50 | + if(mode == V3270_COPY_SMART) { | ||
51 | + mode = (terminal->append ? V3270_COPY_APPEND : V3270_COPY_FORMATTED); | ||
52 | + } | ||
53 | + | ||
50 | if(mode != V3270_COPY_APPEND) { | 54 | if(mode != V3270_COPY_APPEND) { |
51 | 55 | ||
52 | // It's not append, clear current contents ... | 56 | // It's not append, clear current contents ... |
53 | v3270_clear_selection(terminal); | 57 | v3270_clear_selection(terminal); |
54 | 58 | ||
55 | - // ... and set the new mode. | ||
56 | - if(mode == V3270_COPY_DEFAULT) { | ||
57 | -// mode = (lib3270_get_toggle(v3270_get_session(widget),LIB3270_TOGGLE_SMART_PASTE) ? V3270_COPY_FORMATTED : V3270_COPY_TEXT); | ||
58 | - mode = V3270_COPY_FORMATTED; | ||
59 | - } | ||
60 | - | ||
61 | terminal->selection.format = mode; | 59 | terminal->selection.format = mode; |
62 | 60 | ||
63 | } | 61 | } |
@@ -67,13 +65,11 @@ | @@ -67,13 +65,11 @@ | ||
67 | v3270_update_system_clipboard(widget); | 65 | v3270_update_system_clipboard(widget); |
68 | } | 66 | } |
69 | 67 | ||
70 | - LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE format, gboolean cut) | ||
71 | - { | 68 | + LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE format, gboolean cut) { |
72 | v3270_clipboard_set(widget,format,cut); | 69 | v3270_clipboard_set(widget,format,cut); |
73 | } | 70 | } |
74 | 71 | ||
75 | - LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) | ||
76 | - { | 72 | + LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) { |
77 | v3270_clipboard_set(widget,V3270_COPY_APPEND,cut); | 73 | v3270_clipboard_set(widget,V3270_COPY_APPEND,cut); |
78 | } | 74 | } |
79 | 75 |
src/selection/selection.c
@@ -109,6 +109,7 @@ LIB3270_EXPORT void v3270_unselect(GtkWidget *widget) | @@ -109,6 +109,7 @@ LIB3270_EXPORT void v3270_unselect(GtkWidget *widget) | ||
109 | { | 109 | { |
110 | v3270_disable_updates(widget); | 110 | v3270_disable_updates(widget); |
111 | lib3270_unselect(v3270_get_session(widget)); | 111 | lib3270_unselect(v3270_get_session(widget)); |
112 | + GTK_V3270(widget)->append = 0; // Reset smart-copy. | ||
112 | v3270_enable_updates(widget); | 113 | v3270_enable_updates(widget); |
113 | } | 114 | } |
114 | 115 | ||
@@ -122,6 +123,7 @@ LIB3270_EXPORT void v3270_select_region(GtkWidget *widget, gint start, gint end | @@ -122,6 +123,7 @@ LIB3270_EXPORT void v3270_select_region(GtkWidget *widget, gint start, gint end | ||
122 | { | 123 | { |
123 | g_return_if_fail(GTK_IS_V3270(widget)); | 124 | g_return_if_fail(GTK_IS_V3270(widget)); |
124 | lib3270_select_region(GTK_V3270(widget)->host,start,end); | 125 | lib3270_select_region(GTK_V3270(widget)->host,start,end); |
126 | + GTK_V3270(widget)->append = 0; // Reset smart-copy. | ||
125 | } | 127 | } |
126 | 128 | ||
127 | LIB3270_EXPORT void v3270_select_all(GtkWidget *widget) | 129 | LIB3270_EXPORT void v3270_select_all(GtkWidget *widget) |
@@ -130,6 +132,7 @@ LIB3270_EXPORT void v3270_select_all(GtkWidget *widget) | @@ -130,6 +132,7 @@ LIB3270_EXPORT void v3270_select_all(GtkWidget *widget) | ||
130 | v3270_disable_updates(widget); | 132 | v3270_disable_updates(widget); |
131 | lib3270_select_all(v3270_get_session(widget)); | 133 | lib3270_select_all(v3270_get_session(widget)); |
132 | v3270_enable_updates(widget); | 134 | v3270_enable_updates(widget); |
135 | + GTK_V3270(widget)->append = 0; // Reset smart-copy. | ||
133 | } | 136 | } |
134 | 137 | ||
135 | void v3270_selection_set_font_family(GtkWidget *widget, const gchar *name) { | 138 | void v3270_selection_set_font_family(GtkWidget *widget, const gchar *name) { |
src/terminal/actions/table.c
@@ -63,7 +63,7 @@ | @@ -63,7 +63,7 @@ | ||
63 | 63 | ||
64 | // Standard Clipboard actions | 64 | // Standard Clipboard actions |
65 | { | 65 | { |
66 | - .flags = 0, | 66 | + .flags = V3270_COPY_SMART, |
67 | .name = "copy", | 67 | .name = "copy", |
68 | .group = LIB3270_ACTION_GROUP_SELECTION, | 68 | .group = LIB3270_ACTION_GROUP_SELECTION, |
69 | .icon = "edit-copy", | 69 | .icon = "edit-copy", |
@@ -112,7 +112,7 @@ | @@ -112,7 +112,7 @@ | ||
112 | }, | 112 | }, |
113 | 113 | ||
114 | { | 114 | { |
115 | - .flags = V3270_ACTION_FLAG_CUT|V3270_COPY_DEFAULT, | 115 | + .flags = V3270_ACTION_FLAG_CUT|V3270_COPY_SMART, |
116 | .group = LIB3270_ACTION_GROUP_SELECTION, | 116 | .group = LIB3270_ACTION_GROUP_SELECTION, |
117 | .name = "cut", | 117 | .name = "cut", |
118 | .icon = "edit-cut", | 118 | .icon = "edit-cut", |