diff options
Diffstat (limited to 'eventMouseMove.go')
| -rw-r--r-- | eventMouseMove.go | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/eventMouseMove.go b/eventMouseMove.go index 01d1d18..e976d22 100644 --- a/eventMouseMove.go +++ b/eventMouseMove.go @@ -85,13 +85,13 @@ func mouseMove(g *gocui.Gui) { } // new function that is smarter if tk := findWindowUnderMouse(); tk != nil { - me.mouse.currentDrag = tk + tk.setAsDragging() return } // first look for windows for _, tk := range findByXY(w, h) { if tk.node.WidgetType == widget.Window { - me.mouse.currentDrag = tk + tk.setAsDragging() return } } @@ -99,14 +99,13 @@ func mouseMove(g *gocui.Gui) { // now look for the STDOUT window for _, tk := range findByXY(w, h) { if tk.node.WidgetType == widget.Flag { - me.mouse.currentDrag = tk - // tk.moveNew() + tk.setAsDragging() return } } for _, tk := range findByXY(w, h) { if tk.node.WidgetType == widget.Stdout { - me.mouse.currentDrag = tk + tk.setAsDragging() // tk.moveNew() return } @@ -124,13 +123,25 @@ func mouseMove(g *gocui.Gui) { } } +func (tk *guiWidget) setAsDragging() { + me.mouse.currentDrag = tk + tk.lastW = tk.gocuiSize.w0 + tk.lastH = tk.gocuiSize.h0 +} + // this is how the window gets dragged around func (tk *guiWidget) moveNew() { w, h := me.baseGui.MousePosition() if tk.node.WidgetType == widget.Window { tk.window.wasDragged = true - tk.redrawWindow(w-tk.dragW, h-tk.dragH) // TODO: fix these hard coded things with offsets - setThingsOnTop() // sets help, Stdout, etc on the top after windows have been redrawn + + // compute the new location based off how far the mouse has moved + // since the mouse button was pressed down + newW := tk.lastW + w - me.mouse.downW + newH := tk.lastH + h - me.mouse.downH + tk.redrawWindow(newW, newH) + + setThingsOnTop() // sets help, Stdout, etc on the top after windows have been redrawn return } if tk.node.WidgetType == widget.Flag { @@ -151,12 +162,11 @@ func (tk *guiWidget) moveNew() { // me.stdout.lastH = h - me.stdout.mouseOffsetH tk.relocateStdout(me.stdout.lastW, me.stdout.lastH) } else { - // tk.dumpWidget(fmt.Sprintf("move(%dx%d) %s", w, h, tk.cuiName)) - // log.Info("Resize false", w, h) - // me.stdout.lastW = w - me.stdout.mouseOffsetW - // me.stdout.lastH = h - me.stdout.mouseOffsetH - // tk.relocateStdout(me.stdout.lastW, me.stdout.lastH) - tk.relocateStdout(w-tk.dragW, h-tk.dragH) + // compute the new location based off how far the mouse has moved + // since the mouse button was pressed down + newW := tk.lastW + w - me.mouse.downW + newH := tk.lastH + h - me.mouse.downH + tk.relocateStdout(newW, newH) } } // always place the help menu on top |
