diff --git a/ui/app/app.go b/ui/app/app.go index 887ff58a..9b79ca5e 100644 --- a/ui/app/app.go +++ b/ui/app/app.go @@ -19,16 +19,20 @@ type Event interface { type DrawEvent struct { Config Config Size image.Point - // Insets is the window space taken up by - // system decoration such as translucent - // system bars and software keyboards. - Insets image.Rectangle + Insets Insets // Whether this draw is system generated // and needs a complete frame before // proceeding. sync bool } +// Insets is the space taken up by +// system decoration such as translucent +// system bars and software keyboards. +type Insets struct { + Top, Bottom, Left, Right ui.Value +} + type StageEvent struct { Stage Stage } diff --git a/ui/app/os_android.go b/ui/app/os_android.go index 37448dce..d4f265a5 100644 --- a/ui/app/os_android.go +++ b/ui/app/os_android.go @@ -24,6 +24,7 @@ import ( "time" "unsafe" + "gioui.org/ui" "gioui.org/ui/f32" "gioui.org/ui/key" "gioui.org/ui/pointer" @@ -36,7 +37,7 @@ type window struct { dpi int fontScale float32 - insets image.Rectangle + insets Insets stage Stage started bool @@ -200,9 +201,11 @@ func onFocusChange(env *C.JNIEnv, class C.jclass, view C.jlong, focus C.jboolean //export onWindowInsets func onWindowInsets(env *C.JNIEnv, class C.jclass, view C.jlong, top, right, bottom, left C.jint) { w := views[view] - w.insets = image.Rectangle{ - Min: image.Point{X: int(left), Y: int(top)}, - Max: image.Point{X: int(right), Y: int(bottom)}, + w.insets = Insets{ + Top: ui.Px(float32(top)), + Right: ui.Px(float32(right)), + Bottom: ui.Px(float32(bottom)), + Left: ui.Px(float32(left)), } if w.stage >= StageRunning { w.draw(true) diff --git a/ui/app/os_ios.go b/ui/app/os_ios.go index d08a0e5b..baa42f31 100644 --- a/ui/app/os_ios.go +++ b/ui/app/os_ios.go @@ -22,6 +22,7 @@ import ( "sync/atomic" "time" + "gioui.org/ui" "gioui.org/ui/f32" "gioui.org/ui/key" "gioui.org/ui/pointer" @@ -82,9 +83,11 @@ func onDraw(view C.CFTypeRef, dpi, sdpi, width, height C.CGFloat, sync C.int, to X: int(width + .5), Y: int(height + .5), }, - Insets: image.Rectangle{ - Min: image.Point{X: int(left + .5), Y: int(top + .5)}, - Max: image.Point{X: int(right + .5), Y: int(bottom + .5)}, + Insets: Insets{ + Top: ui.Px(float32(top)), + Right: ui.Px(float32(right)), + Bottom: ui.Px(float32(bottom)), + Left: ui.Px(float32(left)), }, Config: Config{ pxPerDp: float32(dpi) * inchPrDp,