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; |