diff options
| author | faiface <faiface2202@gmail.com> | 2019-05-07 01:12:30 +0200 |
|---|---|---|
| committer | faiface <faiface2202@gmail.com> | 2019-05-07 01:12:30 +0200 |
| commit | 98f80717e8941cf39bb4ac09ba343d56afe8d46e (patch) | |
| tree | 2f9e61f4e5e68bc9ec8bf1eee2347f1b41e54dae /mux.go | |
| parent | 8148176dbd60ed2c0e6d9d3e85e9c62aaee1ffb0 (diff) | |
| download | gui-98f80717e8941cf39bb4ac09ba343d56afe8d46e.zip | |
mux: fix not delivering resize correctly sometimes
Diffstat (limited to 'mux.go')
| -rw-r--r-- | mux.go | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -8,6 +8,8 @@ import ( type Mux struct { mu sync.Mutex + haveR bool + r image.Rectangle eventsIns []chan<- Event draw chan<- func(draw.Image) image.Rectangle } @@ -26,6 +28,13 @@ func NewMux(env Env) (mux *Mux, master Env) { go func() { for e := range env.Events() { + var minX, minY, maxX, maxY int + if e.Matches("resize/%d/%d/%d/%d", &minX, &minY, &maxX, &maxY) { + mux.mu.Lock() + mux.r = image.Rect(minX, minY, maxX, maxY) + mux.haveR = true + mux.mu.Unlock() + } mux.mu.Lock() for _, eventsIn := range mux.eventsIns { eventsIn <- e @@ -61,6 +70,10 @@ func (mux *Mux) makeEnv(master bool) Env { mux.mu.Lock() mux.eventsIns = append(mux.eventsIns, eventsIn) + // make sure to always send a resize event to a new Env if we got it already + if mux.haveR { + eventsIn <- Eventf("resize/%d/%d/%d/%d", mux.r.Min.X, mux.r.Min.Y, mux.r.Max.X, mux.r.Max.Y) + } mux.mu.Unlock() go func() { |