summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-02-08 15:01:36 -0600
committerJeff Carr <[email protected]>2025-02-08 15:01:36 -0600
commit42eafb87c729da4ad980c79c9e344db79def9186 (patch)
tree45435c7a054cd6207ca03918853fe9b91b3d5633
parentea544e429e1afbb60e91d2cba6caf85d8e08cc64 (diff)
dropdown works again
-rw-r--r--colorNew.go19
-rw-r--r--debug.go8
-rw-r--r--dropdown.go13
-rw-r--r--eventMouseClick.go10
4 files changed, 42 insertions, 8 deletions
diff --git a/colorNew.go b/colorNew.go
index 3357178..7a218b6 100644
--- a/colorNew.go
+++ b/colorNew.go
@@ -142,3 +142,22 @@ func (tk *guiWidget) setColorInput() {
tk.color.selFg = gocui.ColorYellow
tk.color.selBg = gocui.ColorBlack
}
+
+func (tk *guiWidget) setColorModal() {
+ if tk.color == nil {
+ tk.color = new(colorT)
+ }
+ if me.dark {
+ tk.color.frame = gocui.ColorRed
+ tk.color.fg = gocui.ColorRed
+ tk.color.bg = gocui.ColorBlack
+ tk.color.selFg = gocui.ColorBlack
+ tk.color.selBg = gocui.AttrNone
+ return
+ }
+ tk.color.frame = gocui.ColorRed
+ tk.color.fg = gocui.AttrNone
+ tk.color.bg = gocui.AttrNone
+ tk.color.selFg = gocui.AttrNone
+ tk.color.selBg = gocui.ColorRed
+}
diff --git a/debug.go b/debug.go
index 7aeaa33..c4a0bfb 100644
--- a/debug.go
+++ b/debug.go
@@ -85,14 +85,12 @@ func (tk *guiWidget) dumpWidget(s string) {
if tk.node.WidgetType == widget.Box {
end = fmt.Sprintf("%-8s %-8s %s", tk.node.WidgetType, tk.cuiName, tk.node.State.Direction.String())
} else {
- curval := tk.String()
+ curval := strings.TrimSpace(tk.node.ProgName())
if curval == "" {
- curval = tk.node.GetLabel()
- curval = strings.TrimSpace(curval)
+ curval = strings.TrimSpace(tk.node.GetLabel())
}
if curval == "" {
- curval = tk.labelN
- curval = strings.TrimSpace(curval)
+ curval = strings.TrimSpace(tk.labelN)
}
end = fmt.Sprintf("%-8s %-8s %s", tk.node.WidgetType, tk.cuiName, curval)
}
diff --git a/dropdown.go b/dropdown.go
index 899e947..875e567 100644
--- a/dropdown.go
+++ b/dropdown.go
@@ -74,6 +74,13 @@ func (tk *guiWidget) showDropdown() {
me.dropdown.tk.Show()
me.dropdown.active = true
me.dropdown.callerTK = tk
+
+ r := me.dropdown.tk.gocuiSize // set the 'full' size so that mouse clicks are sent here
+ me.dropdown.tk.full.w0 = r.w0
+ me.dropdown.tk.full.w1 = r.w1
+ me.dropdown.tk.full.h0 = r.h0
+ me.dropdown.tk.full.h1 = r.h1
+
me.dropdown.tk.dumpWidget("showDropdown()")
}
@@ -140,15 +147,17 @@ func (tk *guiWidget) showTextbox() {
// log.Log(GOCUI, "showTextbox() SHOWING AT W,H=", startW, startH)
me.textbox.tk.MoveToOffset(startW+3, startH+2)
me.textbox.tk.labelN = "holy cow"
- me.textbox.tk.setColorInput()
+ me.textbox.tk.setColorModal()
me.textbox.tk.Show()
me.textbox.active = true
me.textbox.callerTK = tk
- r := me.textbox.tk.gocuiSize
+
+ r := me.textbox.tk.gocuiSize // set the 'full' size so that mouse clicks are sent here
me.textbox.tk.full.w0 = r.w0
me.textbox.tk.full.w1 = r.w1
me.textbox.tk.full.h0 = r.h0
me.textbox.tk.full.h1 = r.h1
+
me.textbox.tk.dumpWidget("showTextbox()")
}
diff --git a/eventMouseClick.go b/eventMouseClick.go
index 67c877a..dcf394a 100644
--- a/eventMouseClick.go
+++ b/eventMouseClick.go
@@ -114,17 +114,19 @@ func doMouseClick(w int, h int) {
// handle an open dropdown menu or text entry window first
if me.dropdown.active || me.textbox.active {
// can't drag or do anything when dropdown or textbox are visible
- log.Info("can't do anything. dropdown or textbox is active")
for _, tk := range findByXY(w, h) {
if tk.node.WidgetId == me.dropdown.wId {
log.Info("got dropdwon click", w, h, tk.cuiName)
tk.dropdownClicked(w, h)
+ return
}
if tk.node.WidgetId == me.textbox.wId {
log.Info("got textbox click", w, h, tk.cuiName)
tk.textboxClosed()
+ return
}
}
+ log.Info("a dropdown or textbox is active. you can't click anywhere else (otherwise hit ESC)", w, h)
return
}
@@ -186,6 +188,12 @@ func doMouseDoubleClick(w int, h int) {
me.mouse.double = false
// log.Printf("actually a double click (%d,%d)", w, h)
+ if me.dropdown.active || me.textbox.active {
+ // can't drag or do anything when dropdown or textbox are visible
+ log.Info("can't double click. dropdown or textbox is active")
+ return
+ }
+
for _, tk := range findByXY(w, h) {
if tk.node.WidgetType == widget.Window {
tk.redrawWindow(tk.gocuiSize.w0, tk.gocuiSize.h0)