huh. getting somewhere

This commit is contained in:
Jeff Carr 2025-02-01 18:27:42 -06:00
parent f79cf89170
commit 0355f7c2fb
4 changed files with 21 additions and 6 deletions

View File

@ -7,7 +7,6 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/awesome-gocui/gocui"
log "go.wit.com/log" log "go.wit.com/log"
"go.wit.com/toolkits/tree" "go.wit.com/toolkits/tree"
"go.wit.com/widget" "go.wit.com/widget"
@ -104,9 +103,10 @@ func (tk *guiWidget) showDropdown() {
me.dropdownV.Show() me.dropdownV.Show()
} }
/*
func hideDDview() error { func hideDDview() error {
w, h := me.baseGui.MousePosition() w, h := me.baseGui.MousePosition()
log.Log(GOCUI, "hide dropdown menu() view msgMouseDown (w,h) =", w, h) log.Log(GOCUI, "hide dropdown menu() view (w,h) =", w, h)
if me.dropdownV == nil { if me.dropdownV == nil {
return gocui.ErrUnknownView return gocui.ErrUnknownView
} }
@ -119,7 +119,7 @@ func hideDDview() error {
func showDDview() error { func showDDview() error {
w, h := me.baseGui.MousePosition() w, h := me.baseGui.MousePosition()
log.Log(GOCUI, "show dropdown menu() view msgMouseDown (w,h) =", w, h) log.Log(GOCUI, "show dropdown menu() view (w,h) =", w, h)
if me.dropdownV == nil { if me.dropdownV == nil {
return gocui.ErrUnknownView return gocui.ErrUnknownView
} }
@ -129,6 +129,7 @@ func showDDview() error {
me.dropdownV.SetVisible(true) me.dropdownV.SetVisible(true)
return nil return nil
} }
*/
// if there is a drop down view active, treat it like a dialog box and close it // if there is a drop down view active, treat it like a dialog box and close it
func (w *guiWidget) dropdownClicked(mouseW, mouseH int) string { func (w *guiWidget) dropdownClicked(mouseW, mouseH int) string {

View File

@ -10,6 +10,7 @@ import (
"github.com/awesome-gocui/gocui" "github.com/awesome-gocui/gocui"
"go.wit.com/log" "go.wit.com/log"
"go.wit.com/widget"
) )
// event triggers when you push down on a mouse button // event triggers when you push down on a mouse button
@ -20,15 +21,16 @@ func msgDown(g *gocui.Gui, v *gocui.View) error {
h := initialMouseY h := initialMouseY
for _, tk := range findByXY(w, h) { for _, tk := range findByXY(w, h) {
tk.dumpWidget("mouseDown()") tk.dumpWidget("msgDown()")
} }
vx, vy, _, _, err := g.ViewPosition("msg") vx, vy, _, _, err := g.ViewPosition("msg")
if err == nil { if err == nil {
xOffset = initialMouseX - vx xOffset = initialMouseX - vx
yOffset = initialMouseY - vy yOffset = initialMouseY - vy
msgMouseDown = true
} }
log.Info("setting mousedown to true")
msgMouseDown = true
return nil return nil
} }
@ -45,6 +47,7 @@ func mouseUp(g *gocui.Gui, v *gocui.View) error {
dropdownUnclicked(w, h) dropdownUnclicked(w, h)
if msgMouseDown { if msgMouseDown {
log.Info("setting mousedown to false")
msgMouseDown = false msgMouseDown = false
} else if globalMouseDown { } else if globalMouseDown {
globalMouseDown = false globalMouseDown = false
@ -62,6 +65,11 @@ func mouseDown(g *gocui.Gui, v *gocui.View) error {
var found bool = false var found bool = false
for _, tk := range findByXY(mx, my) { for _, tk := range findByXY(mx, my) {
tk.dumpWidget("mouseDown()") tk.dumpWidget("mouseDown()")
if tk.node.WidgetType == widget.Window {
log.Info("SENDING CLICK TO WINDOW")
tk.doWidgetClick(mx, my)
return nil
}
found = true found = true
} }
if !found { if !found {

View File

@ -34,6 +34,7 @@ func mouseMove(g *gocui.Gui) {
} }
if msgMouseDown { if msgMouseDown {
log.Info("msgMouseDown == true")
// plugin will segfault if you don't keep this inside a check for msgMouseDown // plugin will segfault if you don't keep this inside a check for msgMouseDown
// don't move this code out of here // don't move this code out of here
for _, tk := range findByXY(w, h) { for _, tk := range findByXY(w, h) {
@ -41,6 +42,10 @@ func mouseMove(g *gocui.Gui) {
tk.moveNew(g) tk.moveNew(g)
return return
} }
if tk.node.WidgetType == widget.Label {
tk.moveNew(g)
return
}
} }
} }
@ -59,6 +64,7 @@ func mouseMove(g *gocui.Gui) {
// this is how the window gets dragged around // this is how the window gets dragged around
func (tk *guiWidget) moveNew(g *gocui.Gui) { func (tk *guiWidget) moveNew(g *gocui.Gui) {
mx, my := g.MousePosition() mx, my := g.MousePosition()
tk.dumpWidget("moveNew() on " + tk.cuiName)
g.SetView("msg", mx-xOffset, my-yOffset, mx-xOffset+outputW, my-yOffset+outputH+me.FramePadH, 0) g.SetView("msg", mx-xOffset, my-yOffset, mx-xOffset+outputW, my-yOffset+outputH+me.FramePadH, 0)
me.startOutputW = mx - xOffset me.startOutputW = mx - xOffset
me.startOutputH = my - yOffset me.startOutputH = my - yOffset

View File

@ -95,7 +95,7 @@ func (w *guiWidget) drawView() {
// set the binding for this gocui view now that it has been created // set the binding for this gocui view now that it has been created
// gocui handles overlaps of views so it will run on the view that is clicked on // gocui handles overlaps of views so it will run on the view that is clicked on
me.baseGui.SetKeybinding(w.v.Name(), gocui.MouseLeft, gocui.ModNone, click) // me.baseGui.SetKeybinding(w.v.Name(), gocui.MouseLeft, gocui.ModNone, click)
// this actually sends the text to display to gocui // this actually sends the text to display to gocui
w.v.Wrap = true w.v.Wrap = true