Commit 1e6e062f9716c1a129d71ab98b1844dea0c90711
1 parent
954cd60b
Exists in
master
and in
3 other branches
Fixing error on select from keyboard.
Showing
1 changed file
with
7 additions
and
1 deletions
Show diff stats
src/lib3270/cursor.c
| ... | ... | @@ -77,6 +77,8 @@ static int cursor_end(H3270 *hSession); |
| 77 | 77 | */ |
| 78 | 78 | LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel) |
| 79 | 79 | { |
| 80 | + int select_from = -1; | |
| 81 | + | |
| 80 | 82 | FAIL_IF_NOT_ONLINE(hSession); |
| 81 | 83 | |
| 82 | 84 | if(dir < 0 || dir >= LIB3270_DIR_COUNT) |
| ... | ... | @@ -102,12 +104,16 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u |
| 102 | 104 | } |
| 103 | 105 | } |
| 104 | 106 | |
| 107 | + if(sel) { | |
| 108 | + select_from = (hSession->selected ? hSession->select.start : hSession->cursor_addr); | |
| 109 | + } | |
| 110 | + | |
| 105 | 111 | int rc = calls[dir].exec(hSession); |
| 106 | 112 | if(rc) |
| 107 | 113 | return rc; |
| 108 | 114 | |
| 109 | 115 | if(sel) |
| 110 | - lib3270_select_to(hSession,hSession->cursor_addr); | |
| 116 | + lib3270_select_region(hSession, select_from, hSession->cursor_addr); | |
| 111 | 117 | else if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) |
| 112 | 118 | lib3270_unselect(hSession); |
| 113 | 119 | ... | ... |