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