Commit 70c33ef26da1b7e99656777490ecdf4d5e2840f8
1 parent
261603b3
Exists in
master
and in
3 other branches
Adding method to erase selected inputs.
Showing
5 changed files
with
42 additions
and
4 deletions
Show diff stats
src/include/lib3270/selection.h
... | ... | @@ -183,4 +183,12 @@ |
183 | 183 | */ |
184 | 184 | LIB3270_EXPORT int lib3270_select_region(H3270 *h, int start, int end); |
185 | 185 | |
186 | + /** | |
187 | + * @brief Erase selected inputs. | |
188 | + * | |
189 | + * @param hSession Session handle. | |
190 | + * | |
191 | + */ | |
192 | + LIB3270_EXPORT int lib3270_erase_selected(H3270 *hSession); | |
193 | + | |
186 | 194 | #endif // LIB3270_SELECTION_H_INCLUDED | ... | ... |
src/lib3270/paste.c
... | ... | @@ -108,7 +108,7 @@ |
108 | 108 | if(lib3270_get_toggle(hSession,LIB3270_TOGGLE_MARGINED_PASTE)) |
109 | 109 | { |
110 | 110 | baddr = hSession->cursor_addr; |
111 | - while(BA_TO_COL(baddr) < lmargin) | |
111 | + while(BA_TO_COL(baddr) < ((unsigned int) lmargin)) | |
112 | 112 | { |
113 | 113 | baddr = ROWCOL_TO_BA(BA_TO_ROW(baddr), lmargin); |
114 | 114 | if (!ever) |
... | ... | @@ -151,7 +151,7 @@ |
151 | 151 | |
152 | 152 | data->qtd++; |
153 | 153 | |
154 | - if(BA_TO_ROW(hSession->cursor_addr) != data->row) | |
154 | + if(BA_TO_ROW(hSession->cursor_addr) != ((unsigned int) data->row)) | |
155 | 155 | { |
156 | 156 | trace("Row changed from %d to %d",data->row,BA_TO_ROW(hSession->cursor_addr)); |
157 | 157 | if(!remargin(hSession,data->orig_col)) | ... | ... |
src/lib3270/private.h
... | ... | @@ -735,8 +735,10 @@ LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); |
735 | 735 | #ifdef SSL_ENABLE_CRL_CHECK |
736 | 736 | LIB3270_INTERNAL int lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message); |
737 | 737 | LIB3270_INTERNAL int lib3270_check_X509_crl(H3270 *hSession, SSL_ERROR_MESSAGE * message); |
738 | - | |
739 | 738 | #endif // SSL_ENABLE_CRL_CHECK |
740 | 739 | |
740 | + /// @brief Clear element at adress. | |
741 | + LIB3270_INTERNAL void clear_chr(H3270 *hSession, int baddr); | |
742 | + | |
741 | 743 | #endif |
742 | 744 | ... | ... |
src/lib3270/selection/get.c
... | ... | @@ -35,7 +35,7 @@ |
35 | 35 | |
36 | 36 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
37 | 37 | |
38 | -static void clear_chr(H3270 *hSession, int baddr) | |
38 | +void clear_chr(H3270 *hSession, int baddr) | |
39 | 39 | { |
40 | 40 | hSession->text[baddr].chr = ' '; |
41 | 41 | ... | ... |
src/lib3270/selection/selection.c
... | ... | @@ -33,6 +33,7 @@ |
33 | 33 | #include <lib3270/session.h> |
34 | 34 | #include <lib3270/selection.h> |
35 | 35 | #include "3270ds.h" |
36 | + #include "kybdc.h" | |
36 | 37 | |
37 | 38 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
38 | 39 | |
... | ... | @@ -431,3 +432,30 @@ LIB3270_EXPORT int lib3270_get_selection_rectangle(H3270 *hSession, unsigned int |
431 | 432 | return 0; |
432 | 433 | } |
433 | 434 | |
435 | +LIB3270_EXPORT int lib3270_erase_selected(H3270 *hSession) | |
436 | +{ | |
437 | + FAIL_IF_NOT_ONLINE(hSession); | |
438 | + | |
439 | + if (hSession->kybdlock) | |
440 | + { | |
441 | + enq_action(hSession, lib3270_erase_selected); | |
442 | + return 0; | |
443 | + } | |
444 | + | |
445 | + unsigned int baddr = 0; | |
446 | + unsigned char fa = 0; | |
447 | + | |
448 | + for(baddr = 0; baddr < lib3270_get_length(hSession); baddr++) | |
449 | + { | |
450 | + if(hSession->ea_buf[baddr].fa) { | |
451 | + fa = hSession->ea_buf[baddr].fa; | |
452 | + } | |
453 | + | |
454 | + if( (hSession->text[baddr].attr & LIB3270_ATTR_SELECTED) && !FA_IS_PROTECTED(fa)) | |
455 | + { | |
456 | + clear_chr(hSession,baddr); | |
457 | + } | |
458 | + } | |
459 | + | |
460 | + return -1; | |
461 | +} | ... | ... |