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 }