Andy, Blair,
I have found a small bug when working with TreeView. When I add an object to a child of an existing object in a TreeModel it's TreeView is not refreshed and the small box containing a plus at the left of a parent object is not displayed. Here is the code that show the bug: (execute each line with a doit) tm := TreeModel new tp := TreePresenter showOn: tm tm add: #toto asChildOf: nil tm add: #titi asChildOf: #toto You must see here that the plus box on the left of "toto" is missing. You must execute the next line to see the plus box. tm refresh: #toto As a workaround to this box, I have modified the following method: !TreeModel methodsFor! add: leaf asChildOf: branch "Adds the <Object>, leaf, to the receiver as a child of the <Object>, branch, answering the new leaf. If branch is nil then leaf is added as a root of the tree. If leaf already exists in the tree, then answer the existing node which is left in place (i.e. it is not an error to attempt to add an equivalent node twice, and the existing node is not overwritten with the new object). If branch does not exist then raise a suitable exception. " | parentNode childNode | childNode := self getNodeFor: leaf ifAbsent: []. childNode notNil ifTrue: [^childNode object]. "Find the parent leaf" parentNode := branch isNil ifTrue: [anchorNode] ifFalse: [self getNodeFor: branch]. self addChild: leaf parentNode: parentNode. "Inform dependents" self trigger: #item:addedInParent: with: leaf with: branch. >> branch notNil ifTrue: [self refresh: branch]. ^leaf ! ! Hope that help you to improve your already nice product. Have a nice day. Alain. |
Alain
You wrote in message news:[hidden email]... > > I have found a small bug when working with TreeView. > When I add an object to a child of an existing object > in a TreeModel it's TreeView is not refreshed and > the small box containing a plus at the left of a parent > object is not displayed. > ... Thanks for your bug report. It was quite an interesting one to investigate. I've attached a patch. Regards Blair begin 666 348.st M(B,S-#@Z(B$-"@T*(51R9656:65W(&UE=&AO9'-&;W(A#0H-"F]N271E;3H@ M86Y/8FIE8W0@861D961);E!A<F5N=#H@85!A<F5N=$]B:F5C= T*"2)%=F5N M="!R96-E:79E9"!W:&5N(&%N3V)J96-T(&AA<R!B965N(&%D9&5D('1O('1H M92!R96-E:79E<B=S#0H);6]D96P@=VET:&EN(&%087)E;G1/8FIE8W0N(@T* M#0H)?"!P87)E;G1(86YD;&4@<&%R96YT5'9)=&5M('P-"@EA4&%R96YT3V)J M96-T(&ES3FEL(&EF5')U93H@6PT*"0DB061D:6YG(&$@<F]O="!O8FIE8W0B M#0H)"5YS96QF(&)A<VEC061D06QL.B H07)R87D@=VET:#H@86Y/8FIE8W0I M(&EN2&%N9&QE.B!45D=.7U)/3U0@869T97)(86YD;&4Z(%1625],05-4("!= M+@T*#0H)(D=E="!T:&4@5%9)5$5-('-T<G5C='5R92!F;W(@=&AE('!A<F5N M="(-"@EP87)E;G1(86YD;&4@.CT@<V5L9B!H86YD;&5&<F]M3V)J96-T.B!A M4&%R96YT3V)J96-T(&EF06)S96YT.B!;7G-E;&9=+@T*#0H)*'!A<F5N=%1V M271E;2 Z/2!45DE414T@;F5W*0T*"0EH271E;3H@<&%R96YT2&%N9&QE.PT* M"0EM87-K.B C(RA45DE&7T-(24Q$4D5.('P@5%9)1E]35$%412DN#0H)<V5L M9B!T=FU'971)=&5M.B!P87)E;G14=DET96TN#0H-"@DB57!D871E('!A<F5N M="!I9B!I="!H87,@9V%I;F5D(&ET)W,@9FER<W0@8VAI;&0N(@T*"2(C,S0X M.B!7:&5N(%1635]'151)5$5-(&ES('-E;G0@=&AE(&-O;G1R;VPL(&EF(&ET M(&AA<R!N;W0@<')E=FEO=7-L>2!B965N(')E<&%I;G1E9"P@;6%Y('-E;F0@ M8F%C:R!A( T*"6-H:6QD<F5N(&-A;&QB86-K('1O(')E<75E<W0@=&AE(&YU M;6)E<B!O9B!C:&EL9')E;B!O9B!T:&4@<&%R96YT+"!T;R!W:&EC:"!T:&4@ M86YS=V5R(&ES(&YO=R G,2<@*'-I;F-E('1H870@#0H):7,@9&5T97)M:6YE M9"!B>2!A<VMI;F<@=&AE(&UO9&5L*2X@2&]W979E<B!T:&4@8V]N=')O;"!D M;V5S(&YO="!D:7-P;&%Y('1H92!E>'!A;G-I;VX@8G5T=&]N(&EN('1H:7,@ M8V%S90T*"2AA(&)U9RDL('-O('=E(&UU<W0@<F5F<F5S:"!I="!E=F5N(&EF M('1H97)E(&ES(&%L<F5A9'D@;VYE(&-H:6QD(&IU<W0@:6X@8V%S92XB#0H) M<&%R96YT5'9)=&5M(&-#:&EL9')E;B \/2 Q(&EF5')U93H@6W-E;&8@<F5F M<F5S:$AA<T-H:6QD<F5N.B!P87)E;G1(86YD;&5=+@T*#0H)(D]N;'D@861D M('1H92!I=&5M(&EN=&\@=&AE('1R964@=FEE=R!I9B!T:&4@<&%R96YT(&AA M<R!A;')E861Y#0H)8F5E;B!E>'!A;F1E9"XB#0H)<&%R96YT5'9)=&5M(&ES M4W1A=&5%>'!A;F1E9$]N8V4@:694<G5E.B!;('P@<VEB;&EN9W,@<')E=FEO M=7-3:6)L:6YG26YD97@@<')E=FEO=7-3:6)L:6YG2&%N9&QE('P-"@D)<VEB M;&EN9W,@.CT@<V5L9B!M;V1E;"!C:&EL9')E;D]F.B!A4&%R96YT3V)J96-T M+@T*"0EP<F5V:6]U<U-I8FQI;F=);F1E>" Z/2 H<V5L9B!M;V1E;"!K97E/ M9DYO9&4Z(&%N3V)J96-T(&EN.B!S:6)L:6YG<R!I9D%B<V5N=#H@6UYS:6)L M:6YG<R!E<G)O<DYO=$9O=6YD.B!A;D]B:F5C=%TI+3$N#0H)"7!R979I;W5S M4VEB;&EN9TAA;F1L92 Z/2!P<F5V:6]U<U-I8FQI;F=);F1E>" ]/2 P#0H) M"0EI9E1R=64Z(%M45DE?1DE24U1=#0H)"0EI9D9A;'-E.B!;<V5L9B!H86YD M;&5&<F]M3V)J96-T.B H<VEB;&EN9W,@870Z('!R979I;W5S4VEB;&EN9TEN M9&5X*2!I9D%B<V5N=#H@6UU=+@T*"0ES96QF(&)A<VEC061D06QL.B H07)R M87D@=VET:#H@86Y/8FIE8W0I(&EN2&%N9&QE.B!P87)E;G1(86YD;&4@869T M97)(86YD;&4Z('!R979I;W5S4VEB;&EN9TAA;F1L95T-"B$@(0T*(51R9656 M:65W(&-A=&5G;W)I97-&;W(Z("-O;DET96TZ861D961);E!A<F5N=#HA979E 9;G0@:&%N9&QI;F<A<'5B;&EC(2 A#0H-"@`` ` end |
Free forum by Nabble | Edit this page |