From c8b8813bb2e1bb7f39dfd96726c268c42b085435 Mon Sep 17 00:00:00 2001 From: andycall Date: Thu, 19 Oct 2023 14:54:22 +0800 Subject: [PATCH] fix: fix assertion error when change display in input element. --- .../dom/elements/input.ts.88ab73881.png | Bin 0 -> 3420 bytes integration_tests/specs/dom/elements/input.ts | 19 ++++++++++++++++++ webf/lib/src/widget/widget_element.dart | 3 ++- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 integration_tests/snapshots/dom/elements/input.ts.88ab73881.png diff --git a/integration_tests/snapshots/dom/elements/input.ts.88ab73881.png b/integration_tests/snapshots/dom/elements/input.ts.88ab73881.png new file mode 100644 index 0000000000000000000000000000000000000000..edcda5d62b6b0ee345e9e63246fc441746e7bca1 GIT binary patch literal 3420 zcmeHK`%_YR6i3~#tzl_u)154xoyKiv)UshsNrcg!PLpj-#*z=pE$HC`B_$HU)@ik9 zYnm+x1#WG#*`#8M3Ph>ZnzaJgq9Rs_)P!6CEhG?xyI=bs_BZYi_dEC8x#yhE<9^S4 z&;FRT4YO#)A`}XR$=tqq4+<4>1ceH%UWf*fwiTm|UYnPQM&mEcyCyM*89F3(nO1 zdhih~z2>{+-<+EzFS`LzcJJQ$BJozboQuvlwB^#5{sU9Vb>1aKJkFg?`FQF1h)LDS zsoJCzl?tkL<#!x6$ok^Lb`d`OWv*I`LbBrmjwsYyTfo(iMP96Wf8!$2%QA=d;tz&n zmc$OCc86k?xLT3QchJNmEJ-}o?JIuOOu-4M+*ztFA%f4gN?5eEpER9@{L~#gcJS~% zBOTIOAs#V~EE9JgH%Q&C(~Ae%htnYfyG*9C)EhgF>Iom8tVT*d)nJKNd5F&}KdQgU z9yt>k7_;dlsdW9#opQF*GV3x>VV}46%wY=J`;ttRh(xYQ1AJ-qHcLZE_w0bNCLF7K z{``4!p1R_b!{ie(shkge_hu~(a<1Qt=gxWVeRv#YEw6g}P#z!VA7;YZE987UOmJ#6 znw9vncg;*vz%ynusaah`LmN_A4l$NA#~^~3To-6ln|gRid_scuK}|S33EH3=7kHg8 z2~wE3mC>B(2NZRM{c~;m5bKqZRB_jBVws0a`&Z#`^fa2st}t5w7ZPnlGMr7$OTwnj z4BqpM@|^${Bm|`B+ZWG(d?Xx>WhyslG=%BiFrEr$Qk0l;+2dE3AgKNON*sMakRY#g zJ8(LoxpL}0zQXpp(A-@`qd8PosR-}Wd2*YvxmN|**LXg=!YHT1g|F`%lqpBgi9{-= zE|pHR3|`;VsO5Sm8ksZipQ(_5&-w>{ZN13MYG0EjzG|TI{2j)y@UH+Zf`l9zjb^%A zE~jbh=X0?sG0Mb*CWGxwmD@C5d+y`FI_B7K$30#cN}@9^7EEnd5{Y_qdR%JG*R+1=y^p#hN5)r zv7Xxl?rea=I?vKjvAQTrvM~vum%MBu!*|Okvl{#pjgSQhDH`j)2;a_bvVfdYktnBF zHQvFxyiRRv2hu)Sx$(piDd*!;W*3nWG6Z~BV36hUdACUp#5dJL)o2R(FRY?##3`i( z>v8;+9L3rQe&1+|;>~{W3JLh>nr@#%%@Lub@pC@J>cHkz4b{8_WMaZ^T4x zh!+S15hP^JiO-2qGW@EVKqEp{3iD4L1=`$qzro4!%AUr`f9}74XT0s@xL%TZjuVPv z)2YWcO!9Cd$R!2VgDu(ytKV&g`lBlg_cfhhC%l@Qf(+NGLwPdKP2+-|I<9McrfkBuPe+s4R6$O3gJ}dqEE~2PW zdg>VH2_TYlEx?yVTo1Gw;=ArI!$fxR0q}Ou*5%dXG^6cWh#=}Tx^C%_>hFU~kbdj!HE!@hX4OGyoH49k!|viJUpETPDrTCEm@mo83%s(4}Gw00RR91 literal 0 HcmV?d00001 diff --git a/integration_tests/specs/dom/elements/input.ts b/integration_tests/specs/dom/elements/input.ts index f530a2ed3e..f08d47246d 100644 --- a/integration_tests/specs/dom/elements/input.ts +++ b/integration_tests/specs/dom/elements/input.ts @@ -595,4 +595,23 @@ describe('Tags input', () => { done(); }); }); + + it('should works when change display on input element', (done) => { + const input = createElement('input', { + style: { + width: '50px' + } + }, []); + document.body.appendChild(input); + document.body.appendChild(createElement('span', {}, [createText('AAAAA')])) + + requestAnimationFrame(async() => { + input.style.display = 'inline-block'; + requestAnimationFrame((() => { + + })) + await snapshot(); + done(); + }); + }); }); diff --git a/webf/lib/src/widget/widget_element.dart b/webf/lib/src/widget/widget_element.dart index 1b12b36475..7c1e470e0b 100644 --- a/webf/lib/src/widget/widget_element.dart +++ b/webf/lib/src/widget/widget_element.dart @@ -84,10 +84,11 @@ abstract class WidgetElement extends dom.Element { @override void willAttachRenderer() { super.willAttachRenderer(); - if (renderStyle.display != CSSDisplay.none) { + if (renderStyle.display != CSSDisplay.none && attachedAdapter == null) { attachedAdapter = WebFWidgetElementToWidgetAdapter(child: widget, container: renderBoxModel!, widgetElement: this); } } + @mustCallSuper @override void didAttachRenderer() {