Commit fca4fdc6028dca5c78526f300476bda3fe870970
Exists in
master
and in
3 other branches
Merge branch 'master' into develop
Showing
4 changed files
with
30 additions
and
2 deletions
Show diff stats
src/core/actions/table.c
| ... | ... | @@ -37,6 +37,7 @@ |
| 37 | 37 | #include <lib3270/actions.h> |
| 38 | 38 | #include <lib3270/toggle.h> |
| 39 | 39 | #include <lib3270/log.h> |
| 40 | +#include <lib3270/selection.h> | |
| 40 | 41 | |
| 41 | 42 | /*---[ Implement ]------------------------------------------------------------------------------------------------------------*/ |
| 42 | 43 | |
| ... | ... | @@ -250,6 +251,20 @@ |
| 250 | 251 | .activatable = lib3270_is_connected |
| 251 | 252 | }, |
| 252 | 253 | |
| 254 | + { | |
| 255 | + .name = "select-word", | |
| 256 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 257 | + | |
| 258 | + .keys = "<Ctrl>w", | |
| 259 | + .icon = NULL, | |
| 260 | + .label = N_( "Select word" ), | |
| 261 | + .summary = N_( "Select word" ), | |
| 262 | + .activate = lib3270_select_word, | |
| 263 | + | |
| 264 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
| 265 | + .activatable = lib3270_is_connected | |
| 266 | + }, | |
| 267 | + | |
| 253 | 268 | // |
| 254 | 269 | // Field actions. |
| 255 | 270 | // | ... | ... |
src/core/bounds.c
| ... | ... | @@ -76,8 +76,15 @@ LIB3270_EXPORT int lib3270_get_word_bounds(H3270 *session, int baddr, int *start |
| 76 | 76 | |
| 77 | 77 | CHECK_SESSION_HANDLE(session); |
| 78 | 78 | |
| 79 | - if(!lib3270_is_connected(session) || isspace(session->text[baddr].chr)) | |
| 80 | - return -1; | |
| 79 | + if(baddr < 0) | |
| 80 | + baddr = lib3270_get_cursor_address(session); | |
| 81 | + | |
| 82 | + if(baddr > lib3270_get_length(session)) { | |
| 83 | + return errno = EINVAL; | |
| 84 | + } | |
| 85 | + | |
| 86 | + if(!lib3270_is_connected(session)) | |
| 87 | + return errno = ENOTCONN; | |
| 81 | 88 | |
| 82 | 89 | if(start) |
| 83 | 90 | { | ... | ... |
src/include/lib3270/selection.h
| ... | ... | @@ -79,6 +79,7 @@ |
| 79 | 79 | LIB3270_EXPORT int lib3270_unselect(H3270 *session); |
| 80 | 80 | LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr); |
| 81 | 81 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr); |
| 82 | + LIB3270_EXPORT int lib3270_select_word(H3270 *session); | |
| 82 | 83 | LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr); |
| 83 | 84 | LIB3270_EXPORT int lib3270_select_field(H3270 *session); |
| 84 | 85 | LIB3270_EXPORT int lib3270_select_all(H3270 *session); | ... | ... |
src/selection/actions.c
| ... | ... | @@ -109,6 +109,11 @@ LIB3270_EXPORT int lib3270_select_region(H3270 *h, int start, int end) |
| 109 | 109 | return 0; |
| 110 | 110 | } |
| 111 | 111 | |
| 112 | +LIB3270_EXPORT int lib3270_select_word(H3270 *session) | |
| 113 | +{ | |
| 114 | + return lib3270_select_word_at(session,-1); | |
| 115 | +} | |
| 116 | + | |
| 112 | 117 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr) |
| 113 | 118 | { |
| 114 | 119 | int start, end; | ... | ... |