diff --git a/component.lisp b/component.lisp index 7134e11..5aac857 100644 --- a/component.lisp +++ b/component.lisp @@ -6,5 +6,5 @@ (in-package #:org.shirakumo.alloy) -(defclass component (renderable) +(defclass component () ()) diff --git a/layout.lisp b/layout.lisp index 7112124..4bf09b0 100644 --- a/layout.lisp +++ b/layout.lisp @@ -59,18 +59,15 @@ (defmethod register :after ((element layout-entry) (renderer renderer)) (register (component element) renderer)) -(defmethod render ((renderer renderer) (element layout-entry)) - (render renderer (component element))) - -(defmethod maybe-render ((element layout-entry) (renderer renderer)) - (maybe-render (component element) renderer)) - (defmethod handle ((event event) (element layout-entry) ui) (handle event (component element) ui)) (defmethod handle :after ((event pointer-down) (element layout-entry) ui) (activate (focus-element (component element) ui))) +(defmethod render ((renderer renderer) (element layout-entry)) + (render-with renderer element (component element))) + (defmethod suggest-bounds (extent (element layout-entry)) (suggest-bounds extent (component element))) diff --git a/package.lisp b/package.lisp index 26209b9..c250da5 100644 --- a/package.lisp +++ b/package.lisp @@ -128,6 +128,7 @@ #:mark-for-render #:render #:maybe-render + #:render-with #:renderer #:renderable) ;; ui.lisp diff --git a/renderer.lisp b/renderer.lisp index 90ddf78..71c68e6 100644 --- a/renderer.lisp +++ b/renderer.lisp @@ -15,6 +15,7 @@ (defgeneric mark-for-render (renderable)) (defgeneric render (renderer renderable)) (defgeneric maybe-render (renderer renderable)) +(defgeneric render-with (renderer renderable thing)) (defclass renderer () ((allocated-p :initform NIL :reader allocated-p)))