dragging a windows keeps it put
This commit is contained in:
parent
bc15e6c879
commit
93e87a05c7
|
@ -105,6 +105,7 @@ func mouseMove(g *gocui.Gui) {
|
|||
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
|
||||
return
|
||||
|
|
|
@ -119,6 +119,7 @@ func (r *rectType) Height() int {
|
|||
// settings that are window specific
|
||||
type window struct {
|
||||
windowFrame *guiWidget // this is the frame for a window widget
|
||||
wasDragged bool // indicates the window was dragged. This keeps it from being rearranged
|
||||
dragW int // when dragging a window, this is the offset to the mouse position
|
||||
dragH int // when dragging a window, this is the offset to the mouse position
|
||||
hasTabs bool // does the window have tabs?
|
||||
|
|
21
window.go
21
window.go
|
@ -83,13 +83,24 @@ func (tk *guiWidget) redrawWindow(w int, h int) {
|
|||
|
||||
// re-draws the buttons for each of the windows
|
||||
func redoWindows(nextW int, nextH int) {
|
||||
for _, win := range findWindows() {
|
||||
win.dumpWidget(fmt.Sprintf("redoWindowsS (%d,%d)", nextW, nextH))
|
||||
win.redrawWindow(nextW, nextH)
|
||||
win.dumpWidget(fmt.Sprintf("redoWindowsE (%d,%d)", nextW, nextH))
|
||||
for _, tk := range findWindows() {
|
||||
tk.dumpWidget(fmt.Sprintf("redoWindowsS (%d,%d)", nextW, nextH))
|
||||
if tk.window.wasDragged {
|
||||
// don't move windows around the user has dragged to a certain location
|
||||
tk.redrawWindow(tk.gocuiSize.w0, tk.gocuiSize.h0)
|
||||
} else {
|
||||
w, _ := me.baseGui.Size()
|
||||
if nextW > w-20 {
|
||||
nextW = 0
|
||||
nextH += 4
|
||||
}
|
||||
// probably a new window?
|
||||
tk.redrawWindow(nextW, nextH)
|
||||
}
|
||||
tk.dumpWidget(fmt.Sprintf("redoWindowsE (%d,%d)", nextW, nextH))
|
||||
|
||||
// increment the width for the next window
|
||||
nextW += win.gocuiSize.Width() + 10
|
||||
nextW += tk.gocuiSize.Width() + 10
|
||||
// nextH += 10
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue