Commit 597257dd833c9cfb98411dee943679e5a2a6302d

Authored by Perry Werneck
1 parent 03564892

Adjustments in selection data.

src/include/lib3270/selection.h
... ... @@ -42,31 +42,40 @@
42 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 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 61 typedef struct _lib3270_selection
56 62 {
  63 + /// @brief Cursor address.
  64 + unsigned int cursor_address;
  65 +
  66 + /// @brief Clipboard rectangle.
57 67 struct {
58 68 unsigned int row;
59 69 unsigned int col;
60 70 unsigned int width;
61 71 unsigned int height;
  72 + } bounds;
62 73  
63   - } bounds; ///< @brief Clipboard rectangle.
64   -
  74 + /// @brief Selection contents.
65 75 lib3270_selection_element contents[1];
66 76  
67 77 } lib3270_selection;
68 78  
69   -
70 79 LIB3270_EXPORT int lib3270_unselect(H3270 *session);
71 80 LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr);
72 81 LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr);
... ... @@ -84,7 +93,7 @@
84 93  
85 94 LIB3270_SELECTION_CUT = 0x0001, ///< @brief Cut selected data (if available).
86 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 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 156 // Get output buffer.
157 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 165 unsigned int dstaddr = 0;
165 166  
... ... @@ -183,8 +184,8 @@ LIB3270_EXPORT lib3270_selection * lib3270_get_selection(H3270 *hSession, int cu
183 184 }
184 185  
185 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 190 if(cut && !FA_IS_PROTECTED(fa)) {
190 191 clear_chr(hSession,baddr);
... ...