9fans.net/go@v0.0.7/cmd/acme/internal/ui/wind1.go (about) 1 // #include <u.h> 2 // #include <libc.h> 3 // #include <draw.h> 4 // #include <thread.h> 5 // #include <cursor.h> 6 // #include <mouse.h> 7 // #include <keyboard.h> 8 // #include <frame.h> 9 // #include <fcall.h> 10 // #include <plumb.h> 11 // #include <libsec.h> 12 // #include "dat.h" 13 // #include "fns.h" 14 15 package ui 16 17 import ( 18 "9fans.net/go/cmd/acme/internal/adraw" 19 "9fans.net/go/cmd/acme/internal/file" 20 "9fans.net/go/cmd/acme/internal/wind" 21 "9fans.net/go/draw" 22 ) 23 24 func WinresizeAndMouse(w *wind.Window, r draw.Rectangle, safe, keepextra bool) int { 25 mouseintag := Mouse.Point.In(w.Tag.All) 26 mouseinbody := Mouse.Point.In(w.Body.All) 27 28 y := wind.Winresize(w, r, safe, keepextra) 29 30 // If mouse is in tag, pull up as tag closes. 31 if mouseintag && !Mouse.Point.In(w.Tag.All) { 32 p := Mouse.Point 33 p.Y = w.Tag.All.Max.Y - 3 34 adraw.Display.MoveCursor(p) 35 } 36 37 // If mouse is in body, push down as tag expands. 38 if mouseinbody && Mouse.Point.In(w.Tag.All) { 39 p := Mouse.Point 40 p.Y = w.Tag.All.Max.Y + 3 41 adraw.Display.MoveCursor(p) 42 } 43 44 return y 45 } 46 47 func Wintype(w *wind.Window, t *wind.Text, r rune) { 48 Texttype(t, r) 49 if t.What == wind.Body { 50 for i := 0; i < len(t.File.Text); i++ { 51 wind.Textscrdraw(t.File.Text[i]) 52 } 53 } 54 wind.Winsettag(w) 55 } 56 57 var fff *file.File