Commit f15159b75566e7e11d7eee61f8296ed40205f8d6

Authored by perry.werneck@gmail.com
1 parent 80332fed

Iniciando inclusão da ação "pastenext"

Showing 1 changed file with 18 additions and 13 deletions   Show diff stats
@@ -99,7 +99,7 @@ @@ -99,7 +99,7 @@
99 * Move the cursor back within the legal paste area. 99 * Move the cursor back within the legal paste area.
100 * Returns a Boolean indicating success. 100 * Returns a Boolean indicating success.
101 */ 101 */
102 - static int remargin(int lmargin) 102 + static int remargin(H3270 *session, int lmargin)
103 { 103 {
104 int ever = False; 104 int ever = False;
105 int baddr, b0 = 0; 105 int baddr, b0 = 0;
@@ -108,7 +108,7 @@ @@ -108,7 +108,7 @@
108 108
109 if(toggled(MARGINED_PASTE)) 109 if(toggled(MARGINED_PASTE))
110 { 110 {
111 - baddr = h3270.cursor_addr; 111 + baddr = session->cursor_addr;
112 while(BA_TO_COL(baddr) < lmargin) 112 while(BA_TO_COL(baddr) < lmargin)
113 { 113 {
114 baddr = ROWCOL_TO_BA(BA_TO_ROW(baddr), lmargin); 114 baddr = ROWCOL_TO_BA(BA_TO_ROW(baddr), lmargin);
@@ -118,8 +118,8 @@ @@ -118,8 +118,8 @@
118 ever = True; 118 ever = True;
119 } 119 }
120 120
121 - faddr = find_field_attribute(&h3270,baddr);  
122 - fa = h3270.ea_buf[faddr].fa; 121 + faddr = find_field_attribute(session,baddr);
  122 + fa = session->ea_buf[faddr].fa;
123 if (faddr == baddr || FA_IS_PROTECTED(fa)) 123 if (faddr == baddr || FA_IS_PROTECTED(fa))
124 { 124 {
125 baddr = next_unprotected(baddr); 125 baddr = next_unprotected(baddr);
@@ -152,12 +152,12 @@ @@ -152,12 +152,12 @@
152 152
153 data->qtd++; 153 data->qtd++;
154 154
155 - if(BA_TO_ROW(h3270.cursor_addr) != data->row) 155 + if(BA_TO_ROW(session->cursor_addr) != data->row)
156 { 156 {
157 - Trace("Row changed from %d to %d",data->row,BA_TO_ROW(h3270.cursor_addr));  
158 - if(!remargin(data->orig_col)) 157 + Trace("Row changed from %d to %d",data->row,BA_TO_ROW(session->cursor_addr));
  158 + if(!remargin(session,data->orig_col))
159 return 0; 159 return 0;
160 - data->row = BA_TO_ROW(h3270.cursor_addr); 160 + data->row = BA_TO_ROW(session->cursor_addr);
161 return '\n'; 161 return '\n';
162 } 162 }
163 163
@@ -177,9 +177,6 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) @@ -177,9 +177,6 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str)
177 { 177 {
178 PASTE_DATA data; 178 PASTE_DATA data;
179 unsigned char last = 1; 179 unsigned char last = 1;
180 - int baddr;  
181 - int faddr;  
182 - unsigned char fa;  
183 180
184 CHECK_SESSION_HANDLE(h); 181 CHECK_SESSION_HANDLE(h);
185 182
@@ -204,10 +201,14 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) @@ -204,10 +201,14 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str)
204 case '\n': 201 case '\n':
205 if(last != '\n') 202 if(last != '\n')
206 { 203 {
  204 + int baddr;
  205 + int faddr;
  206 + unsigned char fa;
  207 +
207 baddr = (h->cursor_addr + h->cols) % (h->cols * h->rows); /* down */ 208 baddr = (h->cursor_addr + h->cols) % (h->cols * h->rows); /* down */
208 baddr = (baddr / h->cols) * h->cols; /* 1st col */ 209 baddr = (baddr / h->cols) * h->cols; /* 1st col */
209 faddr = find_field_attribute(h,baddr); 210 faddr = find_field_attribute(h,baddr);
210 - fa = h3270.ea_buf[faddr].fa; 211 + fa = h->ea_buf[faddr].fa;
211 if (faddr != baddr && !FA_IS_PROTECTED(fa)) 212 if (faddr != baddr && !FA_IS_PROTECTED(fa))
212 cursor_move(baddr); 213 cursor_move(baddr);
213 else 214 else
@@ -226,12 +227,16 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) @@ -226,12 +227,16 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str)
226 227
227 if(IN_3270 && toggled(MARGINED_PASTE) && BA_TO_COL(h->cursor_addr) < data.orig_col) 228 if(IN_3270 && toggled(MARGINED_PASTE) && BA_TO_COL(h->cursor_addr) < data.orig_col)
228 { 229 {
229 - if(!remargin(data.orig_col)) 230 + if(!remargin(h,data.orig_col))
230 last = 0; 231 last = 0;
231 } 232 }
  233 +
  234 + if(h->cursor_addr == data.orig_addr)
  235 + break;
232 } 236 }
233 237
234 h->resume(h); 238 h->resume(h);
  239 +
235 return data.qtd; 240 return data.qtd;
236 } 241 }
237 242