dropdown works again
This commit is contained in:
parent
ea544e429e
commit
42eafb87c7
19
colorNew.go
19
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
|
||||
}
|
||||
|
|
8
debug.go
8
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)
|
||||
}
|
||||
|
|
13
dropdown.go
13
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()")
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue