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,14 +202,14 @@ LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr) | ||
202 | if(!lib3270_connected(session)) | 202 | if(!lib3270_connected(session)) |
203 | return; | 203 | return; |
204 | 204 | ||
205 | - lib3270_set_cursor_address(session,session->select.end = baddr); | ||
206 | - | ||
207 | if(!session->selected) | 205 | if(!session->selected) |
208 | { | 206 | { |
209 | session->select.begin = session->cursor_addr; | 207 | session->select.begin = session->cursor_addr; |
210 | set_selected(session); | 208 | set_selected(session); |
211 | } | 209 | } |
212 | 210 | ||
211 | + lib3270_set_cursor_address(session,session->select.end = baddr); | ||
212 | + | ||
213 | update_selection(session); | 213 | update_selection(session); |
214 | 214 | ||
215 | } | 215 | } |
@@ -391,3 +391,47 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir | @@ -391,3 +391,47 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir | ||
391 | 391 | ||
392 | return 0; | 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 | +} |