handleMsg method
Handles terminal response messages during probing.
Implementation
@override
bool handleMsg(Msg msg, StartupProbeContext ctx) {
if (!_active) return false;
if (_done.isCompleted) return false;
if (msg is! UvEventMsg) return false;
final ev = msg.event;
if (ev is! uvev.CursorPositionEvent) return false;
final term = ctx.terminal;
if (_stage == 0) {
_startX = ev.x;
_startY = ev.y;
_stage = 1;
term.write(probeEmoji);
term.write(Ansi.requestExtendedCursorPosition);
unawaited(term.flush());
return true;
}
if (_stage == 1) {
final sx = _startX;
final sy = _startY;
if (sx != null && sy != null && ev.y == sy) {
final delta = ev.x - sx;
if (delta == 1 || delta == 2) {
uni_width.setEmojiPresentationWidth(delta);
}
}
_done.complete();
return true;
}
return false;
}