Commit 597257dd833c9cfb98411dee943679e5a2a6302d
1 parent
03564892
Exists in
master
and in
3 other branches
Adjustments in selection data.
Showing
2 changed files
with
25 additions
and
15 deletions
Show diff stats
src/include/lib3270/selection.h
@@ -42,31 +42,40 @@ | @@ -42,31 +42,40 @@ | ||
42 | * @brief Selection element | 42 | * @brief Selection element |
43 | * | 43 | * |
44 | */ | 44 | */ |
45 | - typedef struct _lib3270_selection_element { | ||
46 | - unsigned char chr; ///< @brief Element character. | ||
47 | - unsigned short flags; ///< @brief Element colors & visual state. @see LIB3270_ATTR | ||
48 | - unsigned char field_attributes; ///< @brief Field attribute. @see LIB3270_FIELD_ATTRIBUTE | 45 | + typedef struct _lib3270_selection_element |
46 | + { | ||
47 | + unsigned char chr; ///< @brief Element character. | ||
48 | + | ||
49 | + struct | ||
50 | + { | ||
51 | + unsigned short visual; ///< @brief Element colors & visual state. @see LIB3270_ATTR | ||
52 | + unsigned char field; ///< @brief Field attribute. @see LIB3270_FIELD_ATTRIBUTE | ||
53 | + } attribute; | ||
54 | + | ||
49 | } lib3270_selection_element; | 55 | } lib3270_selection_element; |
50 | 56 | ||
51 | /** | 57 | /** |
52 | - * @brief A rectangle containing the selected area. | 58 | + * @brief A rectangle with informations about the selected area. |
53 | * | 59 | * |
54 | */ | 60 | */ |
55 | typedef struct _lib3270_selection | 61 | typedef struct _lib3270_selection |
56 | { | 62 | { |
63 | + /// @brief Cursor address. | ||
64 | + unsigned int cursor_address; | ||
65 | + | ||
66 | + /// @brief Clipboard rectangle. | ||
57 | struct { | 67 | struct { |
58 | unsigned int row; | 68 | unsigned int row; |
59 | unsigned int col; | 69 | unsigned int col; |
60 | unsigned int width; | 70 | unsigned int width; |
61 | unsigned int height; | 71 | unsigned int height; |
72 | + } bounds; | ||
62 | 73 | ||
63 | - } bounds; ///< @brief Clipboard rectangle. | ||
64 | - | 74 | + /// @brief Selection contents. |
65 | lib3270_selection_element contents[1]; | 75 | lib3270_selection_element contents[1]; |
66 | 76 | ||
67 | } lib3270_selection; | 77 | } lib3270_selection; |
68 | 78 | ||
69 | - | ||
70 | LIB3270_EXPORT int lib3270_unselect(H3270 *session); | 79 | LIB3270_EXPORT int lib3270_unselect(H3270 *session); |
71 | LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr); | 80 | LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr); |
72 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr); | 81 | LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr); |
@@ -84,7 +93,7 @@ | @@ -84,7 +93,7 @@ | ||
84 | 93 | ||
85 | LIB3270_SELECTION_CUT = 0x0001, ///< @brief Cut selected data (if available). | 94 | LIB3270_SELECTION_CUT = 0x0001, ///< @brief Cut selected data (if available). |
86 | LIB3270_SELECTION_ALL = 0x0002, ///< @brief Get all data (the default is get only selected data). | 95 | LIB3270_SELECTION_ALL = 0x0002, ///< @brief Get all data (the default is get only selected data). |
87 | - LIB3270_SELECTION_UNPROTECTED_ONLY = 0x0004, ///< @brief Get only unprotected contents. | 96 | +// LIB3270_SELECTION_UNPROTECTED_ONLY = 0x0004, ///< @brief Get only unprotected contents. |
88 | 97 | ||
89 | } LIB3270_SELECTION_OPTIONS; | 98 | } LIB3270_SELECTION_OPTIONS; |
90 | 99 |
src/lib3270/selection/get.c
@@ -156,10 +156,11 @@ LIB3270_EXPORT lib3270_selection * lib3270_get_selection(H3270 *hSession, int cu | @@ -156,10 +156,11 @@ LIB3270_EXPORT lib3270_selection * lib3270_get_selection(H3270 *hSession, int cu | ||
156 | // Get output buffer. | 156 | // Get output buffer. |
157 | lib3270_selection * selection = lib3270_malloc(sizeof(lib3270_selection) + (sizeof(lib3270_selection_element) * (width*height))); | 157 | lib3270_selection * selection = lib3270_malloc(sizeof(lib3270_selection) + (sizeof(lib3270_selection_element) * (width*height))); |
158 | 158 | ||
159 | - selection->bounds.col = col; | ||
160 | - selection->bounds.row = row; | ||
161 | - selection->bounds.height = height; | ||
162 | - selection->bounds.width = width; | 159 | + selection->bounds.col = col; |
160 | + selection->bounds.row = row; | ||
161 | + selection->bounds.height = height; | ||
162 | + selection->bounds.width = width; | ||
163 | + selection->cursor_address = lib3270_get_cursor_address(hSession); | ||
163 | 164 | ||
164 | unsigned int dstaddr = 0; | 165 | unsigned int dstaddr = 0; |
165 | 166 | ||
@@ -183,8 +184,8 @@ LIB3270_EXPORT lib3270_selection * lib3270_get_selection(H3270 *hSession, int cu | @@ -183,8 +184,8 @@ LIB3270_EXPORT lib3270_selection * lib3270_get_selection(H3270 *hSession, int cu | ||
183 | } | 184 | } |
184 | 185 | ||
185 | selection->contents[dstaddr].chr = (hSession->text[baddr].chr ? hSession->text[baddr].chr : ' '); | 186 | selection->contents[dstaddr].chr = (hSession->text[baddr].chr ? hSession->text[baddr].chr : ' '); |
186 | - selection->contents[dstaddr].flags = hSession->text[baddr].attr; | ||
187 | - selection->contents[dstaddr].field_attributes = fa; | 187 | + selection->contents[dstaddr].attribute.visual = hSession->text[baddr].attr; |
188 | + selection->contents[dstaddr].attribute.field = fa; | ||
188 | 189 | ||
189 | if(cut && !FA_IS_PROTECTED(fa)) { | 190 | if(cut && !FA_IS_PROTECTED(fa)) { |
190 | clear_chr(hSession,baddr); | 191 | clear_chr(hSession,baddr); |