ui/app: make Draw.Config a value, not a pointer

We are going to encourage a model where pointers to a central
(program global) Configs are passed to widgets at setup time, and
not pass Configs at every frame.

That way, the global Gonfig can change, but the pointers won't need
updating.

This change only switches the Draw event's Config pointer to a value
to avoid tempting programs to use the event Config instead of
updating their own central Configs.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-06-21 15:02:37 +02:00
parent b10a6938cd
commit 47c5859d87
7 changed files with 8 additions and 8 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ type Event interface {
}
type Draw struct {
Config *ui.Config
Config ui.Config
Size image.Point
// Whether this draw is system generated
// and needs a complete frame before
+1 -1
View File
@@ -275,7 +275,7 @@ func (w *window) draw(sync bool) {
X: int(width),
Y: int(height),
},
Config: &ui.Config{
Config: ui.Config{
PxPerDp: ppdp,
PxPerSp: w.fontScale * ppdp,
Now: time.Now(),
+1 -1
View File
@@ -83,7 +83,7 @@ func onDraw(view C.CFTypeRef, dpi, sdpi, width, height C.CGFloat, sync C.int) {
X: int(width + .5),
Y: int(height + .5),
},
Config: &ui.Config{
Config: ui.Config{
PxPerDp: float32(dpi) * inchPrDp,
PxPerSp: float32(sdpi) * inchPrDp,
Now: time.Now(),
+1 -1
View File
@@ -341,7 +341,7 @@ func (w *window) draw(sync bool) {
X: width,
Y: height,
},
Config: &cfg,
Config: cfg,
sync: sync,
})
}
+1 -1
View File
@@ -149,7 +149,7 @@ func (w *window) draw(sync bool) {
X: width,
Y: height,
},
Config: &cfg,
Config: cfg,
sync: sync,
})
}
+1 -1
View File
@@ -1050,7 +1050,7 @@ func (w *window) draw(sync bool) {
X: width,
Y: height,
},
Config: &cfg,
Config: cfg,
sync: sync,
})
}
+2 -2
View File
@@ -487,14 +487,14 @@ func convertKeyCode(code uintptr) (rune, bool) {
return r, true
}
func configForDC(hdc syscall.Handle) *ui.Config {
func configForDC(hdc syscall.Handle) ui.Config {
dpi := getDeviceCaps(hdc, _LOGPIXELSX)
ppdp := float32(dpi) * inchPrDp * monitorScale
// Force a minimum density to keep text legible and to handle bogus output geometry.
if ppdp < minDensity {
ppdp = minDensity
}
return &ui.Config{
return ui.Config{
PxPerDp: ppdp,
PxPerSp: ppdp,
}