summaryrefslogtreecommitdiff
path: root/sys/src/libdraw
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-07-22 16:32:59 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2012-07-22 16:32:59 +0200
commitf3b08dd655446276be6426506a1fd84d13defbad (patch)
treea656f4f810b66f3619348c4593f191ee0e7e579a /sys/src/libdraw
parentaae765a161228a70ffe60fb9f62b17c44a66f14b (diff)
libdraw: enter/eenter, set and restore clip rect
Diffstat (limited to 'sys/src/libdraw')
-rw-r--r--sys/src/libdraw/eenter.c7
-rw-r--r--sys/src/libdraw/enter.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/sys/src/libdraw/eenter.c b/sys/src/libdraw/eenter.c
index d1434eacc..bd02d063d 100644
--- a/sys/src/libdraw/eenter.c
+++ b/sys/src/libdraw/eenter.c
@@ -10,7 +10,7 @@ eenter(char *ask, char *buf, int len, Mouse *m)
int done, down, tick, n, h, w, l, i;
Image *b, *save, *backcol, *bordcol;
Point p, o, t;
- Rectangle r;
+ Rectangle r, sc;
Event ev;
Rune k;
@@ -23,6 +23,9 @@ eenter(char *ask, char *buf, int len, Mouse *m)
while(ecankbd())
ekbd();
+ sc = screen->clipr;
+ replclipr(screen, 0, screen->r);
+
if(m) o = m->xy;
if(buf && len > 0)
@@ -186,6 +189,8 @@ eenter(char *ask, char *buf, int len, Mouse *m)
save = nil;
}
+ replclipr(screen, 0, sc);
+
freeimage(backcol);
freeimage(bordcol);
flushimage(display, 1);
diff --git a/sys/src/libdraw/enter.c b/sys/src/libdraw/enter.c
index 54c7ba702..6dd61141c 100644
--- a/sys/src/libdraw/enter.c
+++ b/sys/src/libdraw/enter.c
@@ -11,7 +11,7 @@ enter(char *ask, char *buf, int len, Mousectl *mc, Keyboardctl *kc, Screen *scr)
int done, down, tick, n, h, w, l, i;
Image *b, *save, *backcol, *bordcol;
Point p, o, t;
- Rectangle r;
+ Rectangle r, sc;
Alt a[3];
Mouse m;
Rune k;
@@ -22,6 +22,9 @@ enter(char *ask, char *buf, int len, Mousectl *mc, Keyboardctl *kc, Screen *scr)
if(backcol == nil || bordcol == nil)
return -1;
+ sc = screen->clipr;
+ replclipr(screen, 0, screen->r);
+
n = 0;
if(kc){
while(nbrecv(kc->c, nil) == 1)
@@ -211,6 +214,8 @@ enter(char *ask, char *buf, int len, Mousectl *mc, Keyboardctl *kc, Screen *scr)
}
}
+ replclipr(screen, 0, sc);
+
freeimage(backcol);
freeimage(bordcol);
flushimage(display, 1);