Mercurial > hg > indyvon
changeset 166:c5b37c658161
Added ref-view argument to specify a function for converting ref value to View.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Fri, 28 Nov 2014 23:16:23 +0300 |
parents | 421dba17b7ed |
children | a51fcaf00264 |
files | src/indyvon/views.clj |
diffstat | 1 files changed, 15 insertions(+), 13 deletions(-) [+] |
line diff
1.1 --- a/src/indyvon/views.clj Wed Nov 26 19:22:52 2014 +0300 1.2 +++ b/src/indyvon/views.clj Fri Nov 28 23:16:23 2014 +0300 1.3 @@ -296,19 +296,21 @@ 1.4 (def ^:dynamic *miniature-thread-priority* 2) 1.5 1.6 (defn ref-view 1.7 - [view-ref] 1.8 - (let [l (reify 1.9 - View 1.10 - (render! [l] 1.11 - (repaint-on-update l) 1.12 - (if-let [view @view-ref] 1.13 - (render! view))) 1.14 - (geometry [_] 1.15 - (if-let [view @view-ref] 1.16 - (geometry view) 1.17 - (->Size 1 1))))] 1.18 - (add-watch view-ref l (fn [_ _ _ _] (update l))) 1.19 - l)) 1.20 + ([view-ref] 1.21 + (ref-view view-ref identity)) 1.22 + ([view-ref view-fn] 1.23 + (let [v (reify 1.24 + View 1.25 + (render! [v] 1.26 + (repaint-on-update v) 1.27 + (when-let [view (view-fn @view-ref)] 1.28 + (render! view))) 1.29 + (geometry [_] 1.30 + (if-let [view (view-fn @view-ref)] 1.31 + (geometry view) 1.32 + (->Size 1 1))))] 1.33 + (add-watch view-ref v (fn [_ _ _ _] (update v))) 1.34 + v))) 1.35 1.36 ;; 1.37 ;; View context decorators