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,6 +37,7 @@ | ||
| 37 | #include <lib3270/actions.h> | 37 | #include <lib3270/actions.h> |
| 38 | #include <lib3270/toggle.h> | 38 | #include <lib3270/toggle.h> |
| 39 | #include <lib3270/log.h> | 39 | #include <lib3270/log.h> |
| 40 | +#include <lib3270/selection.h> | ||
| 40 | 41 | ||
| 41 | /*---[ Implement ]------------------------------------------------------------------------------------------------------------*/ | 42 | /*---[ Implement ]------------------------------------------------------------------------------------------------------------*/ |
| 42 | 43 | ||
| @@ -250,6 +251,20 @@ | @@ -250,6 +251,20 @@ | ||
| 250 | .activatable = lib3270_is_connected | 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 | // Field actions. | 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,8 +76,15 @@ LIB3270_EXPORT int lib3270_get_word_bounds(H3270 *session, int baddr, int *start | ||
| 76 | 76 | ||
| 77 | CHECK_SESSION_HANDLE(session); | 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 | if(start) | 89 | if(start) |
| 83 | { | 90 | { |
src/include/lib3270/selection.h
| @@ -79,6 +79,7 @@ | @@ -79,6 +79,7 @@ | ||
| 79 | LIB3270_EXPORT int lib3270_unselect(H3270 *session); | 79 | LIB3270_EXPORT int lib3270_unselect(H3270 *session); |
| 80 | LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr); | 80 | LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr); |
| 81 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr); | 81 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr); |
| 82 | + LIB3270_EXPORT int lib3270_select_word(H3270 *session); | ||
| 82 | LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr); | 83 | LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr); |
| 83 | LIB3270_EXPORT int lib3270_select_field(H3270 *session); | 84 | LIB3270_EXPORT int lib3270_select_field(H3270 *session); |
| 84 | LIB3270_EXPORT int lib3270_select_all(H3270 *session); | 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,6 +109,11 @@ LIB3270_EXPORT int lib3270_select_region(H3270 *h, int start, int end) | ||
| 109 | return 0; | 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 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr) | 117 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr) |
| 113 | { | 118 | { |
| 114 | int start, end; | 119 | int start, end; |