Commit 70c33ef26da1b7e99656777490ecdf4d5e2840f8

Authored by Perry Werneck
1 parent 261603b3

Adding method to erase selected inputs.

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 +}
... ...