From f6a9db1bd9b50f43c570ba55e5d5653558006763 Mon Sep 17 00:00:00 2001 From: mischief Date: Fri, 9 Jan 2015 15:41:00 -0800 Subject: [PATCH] libdraw: don't redraw input box in enter/eenter when mouse is moved outside the rectangle prevents some flickering when devdraw is used over a high latency connection. Fixes issue 236 --- sys/src/libdraw/eenter.c | 3 ++- sys/src/libdraw/enter.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/src/libdraw/eenter.c b/sys/src/libdraw/eenter.c index bd7b2cbb2..3fc84465f 100644 --- a/sys/src/libdraw/eenter.c +++ b/sys/src/libdraw/eenter.c @@ -111,6 +111,7 @@ eenter(char *ask, char *buf, int len, Mouse *m) sc = b->clipr; replclipr(b, 0, b->r); +nodraw: switch(i){ default: done = 1; @@ -187,7 +188,7 @@ eenter(char *ask, char *buf, int len, Mouse *m) *m = ev.mouse; if(!ptinrect(m->xy, r)){ down = 0; - continue; + goto nodraw; } if(m->buttons & 7){ down = 1; diff --git a/sys/src/libdraw/enter.c b/sys/src/libdraw/enter.c index 09dafaa7d..4f0b6b6bf 100644 --- a/sys/src/libdraw/enter.c +++ b/sys/src/libdraw/enter.c @@ -120,6 +120,7 @@ enter(char *ask, char *buf, int len, Mousectl *mc, Keyboardctl *kc, Screen *scr) } flushimage(display, 1); +nodraw: switch(alt(a)){ case -1: done = 1; @@ -194,7 +195,7 @@ enter(char *ask, char *buf, int len, Mousectl *mc, Keyboardctl *kc, Screen *scr) case 1: if(!ptinrect(m.xy, r)){ down = 0; - continue; + goto nodraw; } if(m.buttons & 7){ down = 1;