summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eventMouse.go2
-rw-r--r--eventMouseClick.go5
-rw-r--r--init.go21
-rw-r--r--structs.go8
-rw-r--r--window.go15
5 files changed, 38 insertions, 13 deletions
diff --git a/eventMouse.go b/eventMouse.go
index 1ff5588..35bdf61 100644
--- a/eventMouse.go
+++ b/eventMouse.go
@@ -61,7 +61,7 @@ func mouseDown(g *gocui.Gui, v *gocui.View) error {
offH := win.gocuiSize.h1 - h
s += fmt.Sprintf("corner(%d,%d)", offW, offH)
if (offW < 3) && (offH < 3) {
- // log.Info("mouse down resize on ", s)
+ log.Info("attempting resize on ", s, win.cuiName)
me.mouse.resize = true
// store the stdout corner for computing the drag size
me.stdout.lastW = me.stdout.tk.gocuiSize.w0
diff --git a/eventMouseClick.go b/eventMouseClick.go
index 88e37a3..3f907d9 100644
--- a/eventMouseClick.go
+++ b/eventMouseClick.go
@@ -166,7 +166,10 @@ 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", win.cuiName)
+ if win.checkWindowClose(w, h) {
+ return
+ }
+ log.Info("you clicked on a window, but not any widgets. check for title / close window here", win.cuiName)
win.redrawWindow(win.gocuiSize.w0, win.gocuiSize.h0)
me.stdout.outputOnTop = false
setThingsOnTop()
diff --git a/init.go b/init.go
index a743f74..8a90270 100644
--- a/init.go
+++ b/init.go
@@ -9,6 +9,7 @@ package main
import (
"errors"
+ "fmt"
"os"
"runtime"
"runtime/debug"
@@ -51,6 +52,10 @@ func init() {
me.stdout.wId = -4
me.clock.wId = -5
+ Set(&me.dropdown, "default")
+ s := fmt.Sprintln("fake default check =", me.FakeW, "dropdown.Id", me.dropdown.Id)
+ me.stdout.Write([]byte(s))
+
me.mouse.mouseUp = true
me.mouse.clicktime = time.Millisecond * 200
me.mouse.doubletime = time.Millisecond * 400
@@ -101,7 +106,7 @@ func standardExit() {
log.Log(NOW, "standardExit() doing baseGui.Close()")
me.baseGui.Close()
log.Log(NOW, "standardExit() doing outf.Close()")
- outf.Close()
+ me.outf.Close()
// log(true, "standardExit() setOutput(os.Stdout)")
// setOutput(os.Stdout)
log.Log(NOW, "standardExit() send back Quit()")
@@ -116,15 +121,13 @@ func standardClose() {
log.Log(NOW, "standardExit() doing baseGui.Close()")
me.baseGui.Close()
log.Log(NOW, "standardExit() doing outf.Close()")
- outf.Close()
+ me.outf.Close()
// os.Stdin = os.Stdin
// os.Stdout = os.Stdout
// os.Stderr = os.Stderr
log.Log(NOW, "standardExit() send back Quit()")
}
-var outf *os.File
-
func main() {
}
@@ -148,16 +151,16 @@ func mainGogui() {
var err error
- outf, err = os.OpenFile("/tmp/captureMode.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
+ me.outf, err = os.OpenFile("/tmp/captureMode.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Info("error opening file:", err)
os.Exit(0)
}
origStdout = os.Stdout
- os.Stdout = outf
- defer outf.Close()
+ os.Stdout = me.outf
+ defer me.outf.Close()
- log.CaptureMode(outf)
+ log.CaptureMode(me.outf)
gocuiMain()
}
@@ -293,7 +296,7 @@ func newWindowTrigger() {
// log.Log(NOW, "newWindowTrigger() got new window", tk.cuiName)
time.Sleep(200 * time.Millisecond)
waitOK()
- redoWindows(1, -1)
+ redoWindows(3, 3)
if !me.stdout.init {
me.stdout.init = true
relocateStdoutOffscreen()
diff --git a/structs.go b/structs.go
index e33b7dc..4a424b6 100644
--- a/structs.go
+++ b/structs.go
@@ -10,6 +10,7 @@ package main
import (
"fmt"
+ "os"
"reflect"
"strconv"
"sync"
@@ -53,6 +54,7 @@ type config struct {
RawW int `default:"1"` // the raw beginning of each window (or tab)
RawH int `default:"5"` // the raw beginning of each window (or tab)
FakeW int `default:"20"` // offset for the hidden widgets
+ DropdownId int `default:"-78"` // the widget id to use
padded bool // add space between things like buttons
bookshelf bool // do you want things arranged in the box like a bookshelf or a stack?
canvas bool // if set to true, the windows are a raw canvas
@@ -72,6 +74,8 @@ type config struct {
dark bool // use a 'dark' color palette
mouse mouse // mouse settings
showDebug bool // todo: move this into config struct
+ outf *os.File // hacks for capturing stdout
+
}
// stuff controlling how the mouse works
@@ -115,8 +119,8 @@ type dropdown struct {
h int // the height
active bool // is the dropdown menu currently in use?
init bool // moves the window offscreen on startup
- wId int // the widget id to use
- // dtoggle bool // is a dropdown or combobox currently active?
+ Id int `default:"-78"` // the widget id to use
+ wId int `default:"-78"` // the widget id to use
}
// this is the gocui way
diff --git a/window.go b/window.go
index 21d6cd8..c5be97f 100644
--- a/window.go
+++ b/window.go
@@ -7,6 +7,7 @@ import (
"fmt"
"strings"
+ log "go.wit.com/log"
"go.wit.com/toolkits/tree"
"go.wit.com/widget"
)
@@ -237,3 +238,17 @@ func (tk *guiWidget) makeTK(ddItems []string) {
*/
tk.Show()
}
+
+func (win *guiWidget) checkWindowClose(w int, h int) bool {
+ s := fmt.Sprintf("mouse(%d,%d) ", w, h)
+ offW := win.full.w1 - w
+ offH := h - win.full.h0
+ s += fmt.Sprintf("offset(%d,%d)", offW, offH)
+ if (offW < 2) && (offH < 2) {
+ log.Info("attempting close on ", s, win.cuiName)
+ // store the stdout corner for computing the drag size
+ return true
+ }
+ log.Info("not attempting close on ", s, win.cuiName)
+ return false
+}