dragging sometimes

This commit is contained in:
Jeff Carr 2025-02-05 11:51:14 -06:00
parent ae339cc587
commit ec68f448af
3 changed files with 70 additions and 57 deletions

View File

@ -61,54 +61,6 @@ func setSuperMouse(g *gocui.Gui, v *gocui.View) error {
return nil
}
var wtf bool
/*
func (tk *guiWidget) verifyRect() bool {
if !tk.Visible() {
// log.Info("verifyRect() tk is not visible", tk.cuiName)
return false
}
vw0, vh0, vw1, vh1, err := me.baseGui.ViewPosition(tk.cuiName)
if err != nil {
// log.Printf("verifyRect() gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
vw0, vh0, vw1, vh1, err = me.baseGui.ViewPosition(tk.v.Name())
if err != nil {
log.Printf("verifyRect() ACTUAL FAIL gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
return false
}
// return false
}
var ok bool = true
if vw0 != tk.full.w0 {
// log.Info("verifyRect() FIXING w0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w0, "w0 =", vw0)
tk.full.w0 = vw0
ok = false
}
if vw1 != tk.full.w1 {
// log.Info("verifyRect() FIXING w1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w1, "w1 =", vw1)
tk.full.w1 = vw1
ok = false
}
if vh0 != tk.full.h0 {
// log.Info("verifyRect() FIXING h0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h0)
tk.full.h0 = vh0
ok = false
}
if vh1 != tk.full.h1 {
// log.Info("verifyRect() FIXING h1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h1)
tk.full.h1 = vh1
ok = false
}
if !ok {
// log.Info("verifyRect() NEED TO FIX RECT HERE", tk.cuiName)
// tk.dumpWidget("verifyRect() FIXME")
}
// log.Printf("verifyRect() OK cuiName=%s v.Name=%s", tk.cuiName, tk.v.Name())
return true
}
*/
func (tk *guiWidget) makeTK(ddItems []string) {
items := strings.Join(ddItems, "\n")
var err error

70
find.go
View File

@ -32,6 +32,13 @@ func findByXY(w int, h int) []*guiWidget {
return rootW.findByXYreal(w, h)
}
func (r rectType) inRect(w int, h int) bool {
if (r.w0 <= w) && (w <= r.w1) && (r.h0 <= h) && (h <= r.h1) {
return true
}
return false
}
// this checks a widget to see if it is under (W,H), then checks the widget's children
// anything that matches is passed back as an array of widgets
func (tk *guiWidget) findByXYreal(w int, h int) []*guiWidget {
@ -43,9 +50,16 @@ func (tk *guiWidget) findByXYreal(w int, h int) []*guiWidget {
// check the location to see if this is under (W,H)
// if it is, return this widget
if (tk.gocuiSize.w0 <= w) && (w <= tk.gocuiSize.w1) &&
(tk.gocuiSize.h0 <= h) && (h <= tk.gocuiSize.h1) {
// if (tk.gocuiSize.w0 <= w) && (w <= tk.gocuiSize.w1) &&
// (tk.gocuiSize.h0 <= h) && (h <= tk.gocuiSize.h1) {
if tk.gocuiSize.inRect(w, h) {
widgets = append(widgets, tk)
} else {
// if (tk.full.w0 <= w) && (w <= tk.full.w1) &&
// (tk.full.h0 <= h) && (h <= tk.full.h1) {
if tk.full.inRect(w, h) {
widgets = append(widgets, tk)
}
// log.Log(GOCUI, "findByXY() found", widget.node.WidgetType, w, h)
}
}
@ -79,6 +93,54 @@ func (tk *guiWidget) findWindows() []*guiWidget {
return found
}
/*
var wtf bool
func (tk *guiWidget) verifyRect() bool {
if !tk.Visible() {
// log.Info("verifyRect() tk is not visible", tk.cuiName)
return false
}
vw0, vh0, vw1, vh1, err := me.baseGui.ViewPosition(tk.cuiName)
if err != nil {
// log.Printf("verifyRect() gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
vw0, vh0, vw1, vh1, err = me.baseGui.ViewPosition(tk.v.Name())
if err != nil {
log.Printf("verifyRect() ACTUAL FAIL gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
return false
}
// return false
}
var ok bool = true
if vw0 != tk.full.w0 {
// log.Info("verifyRect() FIXING w0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w0, "w0 =", vw0)
tk.full.w0 = vw0
ok = false
}
if vw1 != tk.full.w1 {
// log.Info("verifyRect() FIXING w1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w1, "w1 =", vw1)
tk.full.w1 = vw1
ok = false
}
if vh0 != tk.full.h0 {
// log.Info("verifyRect() FIXING h0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h0)
tk.full.h0 = vh0
ok = false
}
if vh1 != tk.full.h1 {
// log.Info("verifyRect() FIXING h1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h1)
tk.full.h1 = vh1
ok = false
}
if !ok {
// log.Info("verifyRect() NEED TO FIX RECT HERE", tk.cuiName)
// tk.dumpWidget("verifyRect() FIXME")
}
// log.Printf("verifyRect() OK cuiName=%s v.Name=%s", tk.cuiName, tk.v.Name())
return true
}
*/
func (tk *guiWidget) setFullSize() bool {
r := tk.getFullSize()
@ -121,10 +183,10 @@ func (tk *guiWidget) gridFullSize() rectType {
r.w1 = cr.w1
r.h1 = cr.h1
first = false
child.dumpWidget(fmt.Sprintf("grid(f)"))
// child.dumpWidget(fmt.Sprintf("grid(f)"))
continue
}
child.dumpWidget(fmt.Sprintf("grid()"))
// child.dumpWidget(fmt.Sprintf("grid()"))
// use the lowest width and hight from children widgets
if r.w0 > cr.w0 {
r.w0 = cr.w0

View File

@ -4,7 +4,6 @@
package main
import (
"fmt"
"strings"
"go.wit.com/log"
@ -89,7 +88,7 @@ func (tk *guiWidget) placeWidgets(startW int, startH int) (int, int) {
return startW, startH
case widget.Tab:
case widget.Grid:
tk.dumpWidget(fmt.Sprintf("PlaceGridS(%d,%d)", startW, startH))
// tk.dumpWidget(fmt.Sprintf("PlaceGridS(%d,%d)", startW, startH))
// if you reset the values here, grid horizontal stacking doesn't work anymore
// tk.widths = make(map[int]int) // how tall each row in the grid is
// tk.heights = make(map[int]int) // how wide each column in the grid is
@ -98,7 +97,7 @@ func (tk *guiWidget) placeWidgets(startW int, startH int) (int, int) {
tk.full.h0 = newH
tk.full.w1 = newW
tk.full.h1 = newH
tk.dumpWidget(fmt.Sprintf("PlaceGridE(%d,%d)", newW, newH))
// tk.dumpWidget(fmt.Sprintf("PlaceGridE(%d,%d)", newW, newH))
return newW, newH
case widget.Box:
tk.placeBox(startW, startH)
@ -106,7 +105,7 @@ func (tk *guiWidget) placeWidgets(startW int, startH int) (int, int) {
tk.full.h0 = startH
tk.full.w1 = startW
tk.full.h1 = startH
tk.dumpWidget(fmt.Sprintf("PlaceBox(%d,%d)", startW, startH))
// tk.dumpWidget(fmt.Sprintf("PlaceBox(%d,%d)", startW, startH))
return 0, 0
case widget.Stdout:
tk.setStdoutWH(startW, startH)
@ -137,7 +136,7 @@ func (tk *guiWidget) placeWidgets(startW int, startH int) (int, int) {
log.Log(INFO, "REAL HEIGHT sizeW:", sizeW, "sizeH:", sizeH)
}
newH = newH - startH
tk.dumpWidget(fmt.Sprintf("PlaceGroup(%d,%d)", maxW, newH))
// tk.dumpWidget(fmt.Sprintf("PlaceGroup(%d,%d)", maxW, newH))
return maxW, newH
default:
tk.gocuiSetWH(startW, startH)