Skip to content

Commit a6c966f

Browse files
committed
FIX: EVENT! reports coordinates regardless of EVF_HAS_XY
Fixes: metaeducation/rebol-issues#2362
1 parent 19bbfee commit a6c966f

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

src/core/t-event.c

+10-14
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@
210210
*val = *Get_System(SYS_VIEW, VIEW_EVENT_PORT);
211211
}
212212
// Event holds a port:
213-
else if (IS_EVENT_MODEL(value, EVM_PORT) || IS_EVENT_MODEL(value, EVM_MIDI)) {
213+
else if (IS_PORT(value) && (IS_EVENT_MODEL(value, EVM_PORT) || IS_EVENT_MODEL(value, EVM_MIDI))) {
214214
SET_PORT(val, VAL_EVENT_SER(value));
215215
}
216216
// Event holds an object:
@@ -239,17 +239,14 @@
239239
break;
240240
}
241241
}
242-
else if (IS_EVENT_MODEL(value, EVM_MIDI))
243-
goto is_none;
244-
245-
return FALSE;
242+
goto is_none;
246243

247244
case SYM_OFFSET:
248-
if (VAL_EVENT_TYPE(value) == EVT_KEY || VAL_EVENT_TYPE(value) == EVT_KEY_UP)
249-
goto is_none;
250-
VAL_SET(val, REB_PAIR);
251-
VAL_PAIR_X(val) = (REBD32)VAL_EVENT_X(value);
252-
VAL_PAIR_Y(val) = (REBD32)VAL_EVENT_Y(value);
245+
if (IS_EVENT_MODEL(value, EVM_GUI) && VAL_EVENT_TYPE(value) != EVT_KEY && VAL_EVENT_TYPE(value) != EVT_KEY_UP) {
246+
VAL_SET(val, REB_PAIR);
247+
VAL_PAIR_X(val) = (REBD32)VAL_EVENT_X(value);
248+
VAL_PAIR_Y(val) = (REBD32)VAL_EVENT_Y(value);
249+
} else goto is_none;
253250
break;
254251

255252
case SYM_KEY:
@@ -263,7 +260,7 @@
263260
*val = *VAL_BLK_SKIP(arg, n);
264261
break;
265262
}
266-
return FALSE;
263+
goto is_none;
267264
}
268265
SET_CHAR(val, n);
269266
break;
@@ -284,7 +281,7 @@
284281
Init_Word(arg, SYM_SHIFT);
285282
}
286283
Set_Block(val, ser);
287-
} else SET_NONE(val);
284+
} else goto is_none;
288285
break;
289286

290287
case SYM_CODE:
@@ -522,8 +519,7 @@ enum rebol_event_fields {
522519
mold->indent++;
523520

524521
for (field = 0; fields[field]; field++) {
525-
Get_Event_Var(value, fields[field], &val);
526-
if (!IS_NONE(&val)) {
522+
if (Get_Event_Var(value, fields[field], &val) && !IS_NONE(&val)) {
527523
New_Indented_Line(mold);
528524
Append_UTF8(mold->series, Get_Sym_Name(fields[field]), -1);
529525
Append_Bytes(mold->series, ": ");

0 commit comments

Comments
 (0)