summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eventMouse.go4
-rw-r--r--eventMouseMove.go88
-rw-r--r--structs.go21
3 files changed, 59 insertions, 54 deletions
diff --git a/eventMouse.go b/eventMouse.go
index e03871a..ddc0d4e 100644
--- a/eventMouse.go
+++ b/eventMouse.go
@@ -21,7 +21,7 @@ func mouseUp(g *gocui.Gui, v *gocui.View) error {
*/
me.mouse.mouseUp = true
- me.mouse.globalMouseDown = false
+ // me.mouse.globalMouseDown = false
me.mouse.currentDrag = nil
if me.mouse.double && (time.Since(me.mouse.down) < me.mouse.doubletime) {
@@ -45,7 +45,7 @@ func mouseDown(g *gocui.Gui, v *gocui.View) error {
if time.Since(me.mouse.down) < me.mouse.doubletime {
me.mouse.double = true
}
- me.mouse.globalMouseDown = true
+ // me.mouse.globalMouseDown = true
me.mouse.mouseUp = false
me.mouse.down = time.Now()
w, h := g.MousePosition()
diff --git a/eventMouseMove.go b/eventMouseMove.go
index e928265..01d1d18 100644
--- a/eventMouseMove.go
+++ b/eventMouseMove.go
@@ -42,6 +42,8 @@ func mouseMove(g *gocui.Gui) {
// can't drag or do anything when dropdown or textbox are visible
return
}
+ // okay, the mouse is down and it has been long enough
+ // the user is trying to drag something. let's figure out what
w, h := g.MousePosition()
// toggle off all highlight vies except for whatever is under the mouse
@@ -61,60 +63,64 @@ func mouseMove(g *gocui.Gui) {
return
}
- if me.mouse.globalMouseDown && (me.dropdown.active || me.textbox.active) {
- log.Info("can't drag while dropdown or textbox are active", w, h)
+ /*
+ if me.mouse.globalMouseDown && (me.dropdown.active || me.textbox.active) {
+ log.Info("can't drag while dropdown or textbox are active", w, h)
+ return
+ }
+ */
+ if me.mouse.mouseUp {
return
}
- if me.mouse.globalMouseDown {
- // log.Info("msgMouseDown == true")
- // plugin will segfault if you don't keep this inside a check for msgMouseDown
- // don't move this code out of here
- var found bool = false
- if me.mouse.currentDrag != nil {
- // me.mouse.currentDrag.dumpWidget(fmt.Sprintf("MM (%3d,%3d)", w, h))
- me.mouse.currentDrag.moveNew()
+ // if me.mouse.globalMouseDown {
+ // log.Info("msgMouseDown == true")
+ // plugin will segfault if you don't keep this inside a check for msgMouseDown
+ // don't move this code out of here
+ var found bool = false
+ if me.mouse.currentDrag != nil {
+ // me.mouse.currentDrag.dumpWidget(fmt.Sprintf("MM (%3d,%3d)", w, h))
+ me.mouse.currentDrag.moveNew()
+ return
+ }
+ // new function that is smarter
+ if tk := findWindowUnderMouse(); tk != nil {
+ me.mouse.currentDrag = tk
+ return
+ }
+ // first look for windows
+ for _, tk := range findByXY(w, h) {
+ if tk.node.WidgetType == widget.Window {
+ me.mouse.currentDrag = tk
return
}
- // new function that is smarter
- if tk := findWindowUnderMouse(); tk != nil {
+ }
+
+ // now look for the STDOUT window
+ for _, tk := range findByXY(w, h) {
+ if tk.node.WidgetType == widget.Flag {
me.mouse.currentDrag = tk
+ // tk.moveNew()
return
}
- // first look for windows
- for _, tk := range findByXY(w, h) {
- if tk.node.WidgetType == widget.Window {
- me.mouse.currentDrag = tk
- return
- }
- }
-
- // now look for the STDOUT window
- for _, tk := range findByXY(w, h) {
- if tk.node.WidgetType == widget.Flag {
- me.mouse.currentDrag = tk
- // tk.moveNew()
- return
- }
+ }
+ for _, tk := range findByXY(w, h) {
+ if tk.node.WidgetType == widget.Stdout {
+ me.mouse.currentDrag = tk
+ // tk.moveNew()
+ return
}
- for _, tk := range findByXY(w, h) {
- if tk.node.WidgetType == widget.Stdout {
+ /*
+ if tk.node.WidgetType == widget.Label {
me.mouse.currentDrag = tk
// tk.moveNew()
return
}
- /*
- if tk.node.WidgetType == widget.Label {
- me.mouse.currentDrag = tk
- // tk.moveNew()
- return
- }
- */
- found = true
- }
- if !found {
- log.Info(fmt.Sprintf("findByXY() empty. nothing to move at (%d,%d)", w, h))
- }
+ */
+ found = true
+ }
+ if !found {
+ log.Info(fmt.Sprintf("findByXY() empty. nothing to move at (%d,%d)", w, h))
}
}
diff --git a/structs.go b/structs.go
index 832e6bf..6982e04 100644
--- a/structs.go
+++ b/structs.go
@@ -75,17 +75,16 @@ type config struct {
// stuff controlling how the mouse works
type mouse struct {
- down time.Time // when the mouse was pressed down
- up time.Time // when the mouse was released. used to detect click vs drag
- clicktime time.Duration // how long is too long for a mouse click vs drag
- mouseUp bool // is the mouse up?
- double bool // user is double clicking
- doubletime time.Duration // how long is too long for double click
- resize bool // mouse is resizing something
- downW int // where the mouse was pressed down
- downH int // where the mouse was pressed down
- currentDrag *guiWidget // what widget is currently being moved around
- globalMouseDown bool // yep, mouse is pressed
+ down time.Time // when the mouse was pressed down
+ up time.Time // when the mouse was released. used to detect click vs drag
+ clicktime time.Duration // how long is too long for a mouse click vs drag
+ mouseUp bool // is the mouse up?
+ double bool // user is double clicking
+ doubletime time.Duration // how long is too long for double click
+ resize bool // mouse is resizing something
+ downW int // where the mouse was pressed down
+ downH int // where the mouse was pressed down
+ currentDrag *guiWidget // what widget is currently being moved around
}
// settings for the stdout window