|
120 | 120 | case SYM_OFFSET:
|
121 | 121 | if (IS_PAIR(val)) {
|
122 | 122 | SET_EVENT_XY(value, Float_Int16(VAL_PAIR_X(val)), Float_Int16(VAL_PAIR_Y(val)));
|
| 123 | + CLR_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_CODE); |
| 124 | + SET_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_XY); |
| 125 | + break; |
123 | 126 | }
|
124 |
| - else return FALSE; |
125 |
| - break; |
| 127 | + //O: should it be possible to remove offset value from event? |
| 128 | + //else if (IS_NONE(val)) { |
| 129 | + // CLR_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_XY); |
| 130 | + //} |
| 131 | + return FALSE; |
126 | 132 |
|
127 | 133 | case SYM_KEY:
|
128 | 134 | //VAL_EVENT_TYPE(value) != EVT_KEY && VAL_EVENT_TYPE(value) != EVT_KEY_UP)
|
129 | 135 | VAL_EVENT_MODEL(value) = EVM_GUI;
|
130 | 136 | if (IS_CHAR(val)) {
|
131 | 137 | VAL_EVENT_DATA(value) = VAL_CHAR(val);
|
| 138 | + CLR_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_XY); |
| 139 | + SET_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_CODE); |
| 140 | + break; |
132 | 141 | }
|
133 | 142 | else if (IS_LIT_WORD(val) || IS_WORD(val)) {
|
134 | 143 | arg = Get_System(SYS_VIEW, VIEW_EVENT_KEYS);
|
|
143 | 152 | if (IS_END(arg)) return FALSE;
|
144 | 153 | break;
|
145 | 154 | }
|
146 |
| - return FALSE; |
147 | 155 | }
|
148 |
| - else return FALSE; |
149 |
| - break; |
| 156 | + return FALSE; |
150 | 157 |
|
151 | 158 | case SYM_CODE:
|
| 159 | + //if (GET_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_XY)) return FALSE; |
152 | 160 | if (IS_INTEGER(val)) {
|
153 |
| - VAL_EVENT_DATA(value) = VAL_INT32(val); |
| 161 | + VAL_EVENT_DATA(value) = VAL_INT64(val); |
| 162 | + CLR_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_XY); |
| 163 | + SET_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_CODE); |
| 164 | + break; |
154 | 165 | }
|
155 |
| - else return FALSE; |
156 |
| - break; |
| 166 | + return FALSE; |
157 | 167 |
|
158 | 168 | default:
|
159 |
| - return FALSE; |
| 169 | + return FALSE; |
160 | 170 | }
|
161 | 171 |
|
162 | 172 | return TRUE;
|
|
210 | 220 | *val = *Get_System(SYS_VIEW, VIEW_EVENT_PORT);
|
211 | 221 | }
|
212 | 222 | // Event holds a port:
|
213 |
| - else if (IS_PORT(value) && (IS_EVENT_MODEL(value, EVM_PORT) || IS_EVENT_MODEL(value, EVM_MIDI))) { |
| 223 | + else if (IS_EVENT_MODEL(value, EVM_PORT) || IS_EVENT_MODEL(value, EVM_MIDI)) { |
214 | 224 | SET_PORT(val, VAL_EVENT_SER(value));
|
215 | 225 | }
|
216 | 226 | // Event holds an object:
|
|
242 | 252 | goto is_none;
|
243 | 253 |
|
244 | 254 | case SYM_OFFSET:
|
245 |
| - if (IS_EVENT_MODEL(value, EVM_GUI) && VAL_EVENT_TYPE(value) != EVT_KEY && VAL_EVENT_TYPE(value) != EVT_KEY_UP) { |
| 255 | + if (GET_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_XY)) { |
246 | 256 | VAL_SET(val, REB_PAIR);
|
247 | 257 | VAL_PAIR_X(val) = (REBD32)VAL_EVENT_X(value);
|
248 | 258 | VAL_PAIR_Y(val) = (REBD32)VAL_EVENT_Y(value);
|
249 |
| - } else goto is_none; |
250 |
| - break; |
| 259 | + break; |
| 260 | + } |
| 261 | + goto is_none; |
251 | 262 |
|
252 | 263 | case SYM_KEY:
|
253 | 264 | if (VAL_EVENT_TYPE(value) != EVT_KEY && VAL_EVENT_TYPE(value) != EVT_KEY_UP)
|
|
285 | 296 | break;
|
286 | 297 |
|
287 | 298 | case SYM_CODE:
|
288 |
| - if (VAL_EVENT_TYPE(value) != EVT_KEY && VAL_EVENT_TYPE(value) != EVT_KEY_UP) |
289 |
| - goto is_none; |
290 |
| - n = VAL_EVENT_DATA(value); // key-words in top 16, chars in lower 16 |
291 |
| - SET_INTEGER(val, n); |
292 |
| - break; |
| 299 | + if (GET_FLAG(VAL_EVENT_FLAGS(value), EVF_HAS_CODE)) { |
| 300 | + SET_INTEGER(val, VAL_EVENT_DATA(value)); // key-words in top 16, chars in lower 16 |
| 301 | + break; |
| 302 | + } |
| 303 | + goto is_none; |
293 | 304 |
|
294 | 305 | case SYM_DATA:
|
295 | 306 | // Event holds a file string:
|
|
0 commit comments