9fans.net/go@v0.0.7/cmd/acme/internal/ui/cols1.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/wind" 20 "9fans.net/go/draw" 21 ) 22 23 func ColaddAndMouse(c *wind.Column, w *wind.Window, clone *wind.Window, y int) *wind.Window { 24 w = wind.Coladd(c, w, clone, y) 25 savemouse(w) 26 // near the button, but in the body 27 adraw.Display.MoveCursor(w.Tag.ScrollR.Max.Add(draw.Pt(3, 3))) 28 wind.Barttext = &w.Body 29 return w 30 } 31 32 func ColcloseAndMouse(c *wind.Column, w *wind.Window, dofree bool) { 33 didmouse := restoremouse(w) != 0 34 wr := w.R 35 w = wind.Colclose(c, w, dofree) 36 if !didmouse && w != nil && w.R.Min.Y == wr.Min.Y { 37 w.Showdel = true 38 wind.Winresize(w, w.R, false, true) 39 movetodel(w) 40 } 41 } 42 43 func Colmousebut(c *wind.Column) { 44 adraw.Display.MoveCursor(c.Tag.ScrollR.Min.Add(c.Tag.ScrollR.Max).Div(2)) 45 } 46 47 func Coldragwin(c *wind.Column, w *wind.Window, but int) { 48 Clearmouse() 49 adraw.Display.SwitchCursor2(&adraw.BoxCursor, &adraw.BoxCursor2) 50 b := Mouse.Buttons 51 op := Mouse.Point 52 for Mouse.Buttons == b { 53 Mousectl.Read() 54 } 55 adraw.Display.SwitchCursor(nil) 56 if Mouse.Buttons != 0 { 57 for Mouse.Buttons != 0 { 58 Mousectl.Read() 59 } 60 return 61 } 62 wind.Coldragwin1(c, w, but, op, Mouse.Point) 63 Winmousebut(w) 64 }