Commit 1f2d57d71951aae08dd10adb70e49ddff5ecd846
1 parent
498637d6
Exists in
master
and in
3 other branches
Implementando seleção pelo teclado
Showing
1 changed file
with
46 additions
and
2 deletions
Show diff stats
selection.c
... | ... | @@ -202,14 +202,14 @@ LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr) |
202 | 202 | if(!lib3270_connected(session)) |
203 | 203 | return; |
204 | 204 | |
205 | - lib3270_set_cursor_address(session,session->select.end = baddr); | |
206 | - | |
207 | 205 | if(!session->selected) |
208 | 206 | { |
209 | 207 | session->select.begin = session->cursor_addr; |
210 | 208 | set_selected(session); |
211 | 209 | } |
212 | 210 | |
211 | + lib3270_set_cursor_address(session,session->select.end = baddr); | |
212 | + | |
213 | 213 | update_selection(session); |
214 | 214 | |
215 | 215 | } |
... | ... | @@ -391,3 +391,47 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir |
391 | 391 | |
392 | 392 | return 0; |
393 | 393 | } |
394 | + | |
395 | +LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel) | |
396 | +{ | |
397 | + int cursor_addr = hSession->cursor_addr; | |
398 | + | |
399 | + if(!lib3270_connected(hSession)) | |
400 | + return -1; | |
401 | + | |
402 | + switch(dir) | |
403 | + { | |
404 | + case LIB3270_DIR_UP: | |
405 | + if(cursor_addr <= hSession->cols) | |
406 | + return EINVAL; | |
407 | + cursor_addr -= hSession->cols; | |
408 | + break; | |
409 | + | |
410 | + case LIB3270_DIR_DOWN: | |
411 | + if(cursor_addr >= (hSession->cols * (hSession->rows-1))) | |
412 | + return EINVAL; | |
413 | + cursor_addr += hSession->cols; | |
414 | + break; | |
415 | + | |
416 | + case LIB3270_DIR_LEFT: | |
417 | + if( (cursor_addr % hSession->cols) < 1) | |
418 | + return EINVAL; | |
419 | + cursor_addr--; | |
420 | + break; | |
421 | + | |
422 | + case LIB3270_DIR_RIGHT: | |
423 | + if( (cursor_addr % hSession->cols) >= (hSession->cols-1)) | |
424 | + return EINVAL; | |
425 | + cursor_addr++; | |
426 | + break; | |
427 | + | |
428 | + default: | |
429 | + return -1; | |
430 | + } | |
431 | + | |
432 | + if(sel) | |
433 | + lib3270_select_to(hSession,cursor_addr); | |
434 | + else | |
435 | + lib3270_set_cursor_address(hSession,cursor_addr); | |
436 | + | |
437 | +} | ... | ... |