diff --git a/examples/drag-and-drop/drag-and-drop-1.rkt b/examples/drag-and-drop/drag-and-drop-1.rkt index 6c04ed4..9e59024 100644 --- a/examples/drag-and-drop/drag-and-drop-1.rkt +++ b/examples/drag-and-drop/drag-and-drop-1.rkt @@ -18,7 +18,7 @@ ;; add-fresh-box: world view -> world ;; Given a world, creates a new world within the boundaries of the playground. (define (add-fresh-box w v) - (define-values (max-width max-height) (width-and-height "playground")) + (define-values (max-width max-height) (width-and-height v "playground")) (define new-world (cons (make-box (fresh-id) (random max-width) (random max-height)) @@ -29,8 +29,11 @@ ;; FIXME: do some javascript stuff here to get at this. ;; -(define (width-and-height element-id) - (values 500 500)) +(define (width-and-height v element-id) + (define focused (view-focus v element-id)) + (printf "width is: ~s\n" (view-width focused)) + (values (view-width focused) + (view-height focused))) (define (draw w v) diff --git a/web-world/js-impl.js b/web-world/js-impl.js index 6db901e..90d647c 100644 --- a/web-world/js-impl.js +++ b/web-world/js-impl.js @@ -75,10 +75,21 @@ var theClone = $(dom).clone(true).get(0); var sourceSelects = $(dom).find("select"); var destSelects = $(theClone).find("select"); - var i; + var i, w; for (i = 0; i < sourceSelects.length; ++i) { $(destSelects[i]).val($(sourceSelects[i]).val()); } + var allSrcElts = $(dom).find("*"); + var allDestElts = $(theClone).find("*"); + for (i = 0; i < allSrcElts.length; i++) { + w = $(allSrcElts[i]).width(); + if (w) { + $(allDestElts[i]).width(w); + $(allDestElts[i]).height($(allSrcElts[i]).height()); + } + } + + return theClone; };