aboutsummaryrefslogtreecommitdiffstats
path: root/layout/mux.go
diff options
context:
space:
mode:
Diffstat (limited to 'layout/mux.go')
-rw-r--r--layout/mux.go16
1 files changed, 4 insertions, 12 deletions
diff --git a/layout/mux.go b/layout/mux.go
index d56d266..8eb19d6 100644
--- a/layout/mux.go
+++ b/layout/mux.go
@@ -21,7 +21,6 @@ type Mux struct {
eventsIns []chan<- gui.Event
draw chan<- func(draw.Image) image.Rectangle
- evIn chan<- gui.Event
layout Layout
}
@@ -33,7 +32,8 @@ func (mux *Mux) Layout() Layout {
// NewMux should only be used internally by Layouts.
// It has mostly the same behaviour as gui.Mux, except for its use of an underlying Layout
// for modifying the gui.Resize events sent to the childs.
-func NewMux(env gui.Env, envs []*gui.Env, l Layout) (mux *Mux, master gui.Env) {
+func NewMux(ev gui.Env, envs []*gui.Env, l Layout) (mux *Mux, master gui.Env) {
+ env := l.Intercept(ev)
drawChan := make(chan func(draw.Image) image.Rectangle)
mux = &Mux{
layout: l,
@@ -41,7 +41,6 @@ func NewMux(env gui.Env, envs []*gui.Env, l Layout) (mux *Mux, master gui.Env) {
}
master, masterIn := mux.makeEnv(true)
events := make(chan gui.Event)
- mux.evIn = events
go func() {
for d := range drawChan {
env.Draw() <- d
@@ -64,18 +63,12 @@ func NewMux(env gui.Env, envs []*gui.Env, l Layout) (mux *Mux, master gui.Env) {
mux.lastResize = resize
rect := resize.Rectangle
lay := mux.layout.Lay(rect)
- if len(lay) != len(mux.eventsIns) {
- log.Printf("Lay of %T has %d elements while mux has %d, skipping\n", l, len(lay), len(envs))
+ if len(lay) < len(envs) {
+ log.Printf("Lay of %T is not large enough (%d) for %d childs, skipping\n", l, len(lay), len(envs))
mux.mu.Unlock()
continue
}
- // Redraw self
- mux.draw <- func(drw draw.Image) image.Rectangle {
- mux.layout.Redraw(drw, rect)
- return rect
- }
-
// Send appropriate resize Events to childs
for i, eventsIn := range mux.eventsIns {
resize.Rectangle = lay[i]
@@ -172,7 +165,6 @@ func (mux *Mux) makeEnv(master bool) (env gui.Env, eventsIn chan<- gui.Event) {
mux.eventsIns = append(mux.eventsIns[:i], mux.eventsIns[i+1:]...)
}
mux.mu.Unlock()
- mux.evIn <- mux.lastResize
}
}()