From 12deba21952653695bff65eb32f8ca3f5b448eac Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 1 Feb 2022 10:59:58 +0100 Subject: [PATCH] app: don't apply fallback decorations when CustomRenderer is set Fixes the opengl example on client-side decorated Wayland servers. Signed-off-by: Elias Naur --- app/window.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/window.go b/app/window.go index 46edf0bc..497d54e8 100644 --- a/app/window.go +++ b/app/window.go @@ -612,12 +612,12 @@ func (w *Window) processEvent(d driver, e event.Event) { w.waitAck(d) case wakeupEvent: case ConfigEvent: - if w.decorations.Config.Decorated != e2.Config.Decorated && e2.Config.Decorated { + w.decorations.Config = e2.Config + if !w.fallbackDecorate() { // Decorations are no longer applied. w.decorations.Decorations = nil w.decorations.size = image.Point{} } - w.decorations.Config = e2.Config e2.Config.Size = e2.Config.Size.Sub(w.decorations.size) w.out <- e2 case event.Event: @@ -678,9 +678,14 @@ func (w *Window) updateCursor(d driver) { } } +func (w *Window) fallbackDecorate() bool { + cnf := w.decorations.Config + return !cnf.Decorated && cnf.Mode != Fullscreen && !w.nocontext +} + // decorate the window if enabled and returns the corresponding Insets. func (w *Window) decorate(d driver, e system.FrameEvent, o *op.Ops) image.Point { - if w.decorations.Config.Decorated || w.decorations.Config.Mode == Fullscreen { + if !w.fallbackDecorate() { return e.Size } theme := w.decorations.Theme