summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eventMouseClick.go59
-rw-r--r--eventMouseDrag.go29
2 files changed, 18 insertions, 70 deletions
diff --git a/eventMouseClick.go b/eventMouseClick.go
index 54547af..b250858 100644
--- a/eventMouseClick.go
+++ b/eventMouseClick.go
@@ -4,8 +4,6 @@
package main
import (
- "fmt"
-
"go.wit.com/log"
"go.wit.com/widget"
)
@@ -20,40 +18,6 @@ func (tk *guiWidget) doButtonClick() {
}
}
-// this whole things was impossible to make but it got me where I am now
-// the debugging is way way better now with it being visible in the Stdout window
-// so now it's possible to redo all this and make it better
-func (tk *guiWidget) doWidgetClick(w int, h int) {
- tk.dumpWidget(fmt.Sprintf("doWidgetClick(%d,%d)", w, h))
- switch tk.node.WidgetType {
- case widget.Checkbox:
- if tk.node.State.Checked {
- log.Log(WARN, "checkbox is being set to false")
- tk.node.State.Checked = false
- tk.setCheckbox()
- } else {
- log.Log(WARN, "checkbox is being set to true")
- tk.node.State.Checked = true
- tk.setCheckbox()
- }
- me.myTree.SendUserEvent(tk.node)
- case widget.Button:
- tk.doButtonClick()
- case widget.Combobox:
- tk.showDropdown()
- case widget.Dropdown:
- tk.showDropdown()
- case widget.Textbox:
- tk.showTextbox()
- case widget.Flag:
- tk.dropdownClicked(w, h)
- case widget.Stdout:
- tk.dumpWidget("stdout click()")
- default:
- tk.dumpWidget("undef click()")
- }
-}
-
// handles a mouse click
func doMouseClick(w int, h int) {
// Flag widgets (dropdown menus, etc) are the highest priority. ALWAYS SEND MOUSE CLICKS THERE FIRST
@@ -124,29 +88,6 @@ func doMouseClick(w int, h int) {
// tk.dumpWidget("undef click()") // enable this to debug widget clicks
}
}
- // log.Info("you clicked on a window, but not any widgets. check for title / close window here", win.cuiName)
- // win.makeWindowActive()
- // return
-
- var found bool
-
- for _, tk := range findByXY(w, h) {
- // will show you everything found on a mouse click. great for debugging!
- // tk.dumpWidget("click()")
- if tk.node.WidgetType == widget.Stdout {
- // don't send clicks to the stdout debugging window
- // continue
- }
- found = true
- // tk.doWidgetClick(w, h)
- return
- }
- if found {
- return
- }
-
- log.Log(GOCUI, "click() nothing was at:", w, h)
- return
}
func doMouseDoubleClick(w int, h int) {
diff --git a/eventMouseDrag.go b/eventMouseDrag.go
index 649b755..2829708 100644
--- a/eventMouseDrag.go
+++ b/eventMouseDrag.go
@@ -27,12 +27,14 @@ func mouseMove(g *gocui.Gui) {
// this runs while the user moves the mouse. this highlights text
// toggle off all highlight views except for whatever is under the mouse
+ // START HIGHLIGHTING
for _, view := range g.Views() {
view.Highlight = false
}
w, h := g.MousePosition()
+ // TODO: try to highlight entire grid rows
if v, err := g.ViewByPosition(w, h); err == nil {
- // todo: identify and highlight grid rows here
+ // block anything from highlighting while a dialog box is open
if me.dropdown.active || me.textbox.active {
if me.dropdown.tk != nil && me.dropdown.tk.v == v {
v.Highlight = true
@@ -44,8 +46,9 @@ func mouseMove(g *gocui.Gui) {
v.Highlight = true
}
}
+ // END HIGHLIGHTING
- // very useful for debugging in the past. also, just fun
+ // Super Mouse Mode. very useful for debugging in the past. also, just fun
if me.supermouse {
w, h := g.MousePosition()
for _, tk := range findByXY(w, h) {
@@ -54,10 +57,13 @@ func mouseMove(g *gocui.Gui) {
}
}
+ // how long has the mouse button been pressed down?
if time.Since(me.mouse.down) < me.mouse.clicktime {
// log.Info("not yet")
return
}
+ // okay, the mouse button has been pressed down for a while.
+ // below here is mouse dragging
if me.dropdown.active || me.textbox.active {
// can't drag or do anything when dropdown or textbox are visible
@@ -107,13 +113,15 @@ func (tk *guiWidget) moveNew() {
tk.makeWindowActive()
return
}
- if tk.node.WidgetType == widget.Flag {
- me.baseGui.SetView(tk.cuiName, w-3, h-3, w+20, h+20, 0)
- // tk.verifyRect()
- s := fmt.Sprintf("move(%dx%d) %s ###", w, h, tk.cuiName)
- tk.dumpWidget(s)
- return
- }
+ /*
+ if tk.node.WidgetType == widget.Flag {
+ me.baseGui.SetView(tk.cuiName, w-3, h-3, w+20, h+20, 0)
+ // tk.verifyRect()
+ s := fmt.Sprintf("move(%dx%d) %s ###", w, h, tk.cuiName)
+ tk.dumpWidget(s)
+ return
+ }
+ */
if tk.node.WidgetType == widget.Stdout {
if me.mouse.resize {
newW := w - me.stdout.lastW
@@ -132,7 +140,6 @@ func (tk *guiWidget) moveNew() {
tk.relocateStdout(newW, newH)
// log.Info("Resize false", w, h, newW, newH)
}
+ setThingsOnTop() // sets help, Stdout, etc on the top after windows have been redrawn
}
- // always place the help menu on top
- setThingsOnTop() // sets help, Stdout, etc on the top after windows have been redrawn
}