- 
    Type:
Bug
 - 
    Resolution: Fixed
 - 
    Priority:
Normal
 - 
    Affects Version/s: 6.0.1
 - 
    Component/s: ZK Client Engine
 - 
    None
 - 
    Environment:
only IE 6/7
 
- 
        None
 
For example,
<zk>
    <button label="Click ME, if you cannot see any textbox below Listboxs, that is a bug on IE6/7">
        <attribute name="onClick">
        self.getTemplate("test").create(div, null, null, null);
        </attribute>
        <template name="test">
            <zk>
                <zscript>
                <![CDATA[
                    import java.io.*;
                    import org.zkoss.zktest.test2.select.models.*;
					
                    ListModelMap model = ListModelMaps.getModel(ListModelMaps.DEFAULT);
                    ListModelMap model2 = ListModelMaps.getModel(ListModelMaps.CLONEABLE);
                    int cnt = 0;
                    int elemcnt = 1001;
                    int rmcnts = 0;
                    int rmcntm = 1001;
                    public void checkEqualSelection (String idOne, String idTwo, Label msg) {
                        Listbox lbOne = msg.getPage().getFellow(idOne);
                        Listbox lbTwo = msg.getPage().getFellow(idTwo);
                        Set s1 = lbOne.getModel().getSelection();
                        Set s2 = lbTwo.getModel().getSelection();
                        boolean matched = false;
                        for (Object o : s1) {
                            for (Object o2 : s2) {
                                if (o.equals(o2)) {
                                    matched = true;
                                    break;
                                }
                            }
                            if (!matched) {
                                msg.setValue("false");
                                return;
                            }
                            matched = false;
                        }
                        msg.setValue("true");
                    }
                    public void showSelection (String idOne, Label msg) {
                        Listbox lbOne = msg.getPage().getFellow(idOne);
                        Set s1 = lbOne.getModel().getSelection();
                        StringBuilder sb = new StringBuilder("");
                        boolean matched = false;
                        for (Object o : s1) {
                            sb.append(o);
                        }
                        msg.setValue(sb.toString());
                    }
                ]]>
                </zscript>
                <div>
                    <div>1. There are 3 Listbox below.</div>
                    <div>2. For first two Listbox, their select status will sync automatically after you select item.</div>
                    <div>3. Select data 10 of third Listbox.</div>
                    <div>4. Click clone and 'clone by serialization', then two Listboxes should be created and also select data 10.</div>
                    <div>5. Select data 212 of third Listbox, data 213 of fourth and data 214 of fifth, the select status of last three listbox should not sync.</div>
                    <div>6. Click clone and 'clone by serialization', you should see two Listboxes created and each Listbox after fifth Listbox select data 212.</div>
                    <div>7. Click 'insert item', each select of Listbox should not be changed.</div>
                    <div>8. Click 'remove item', each select of Listbox should not be changed.</div>
                </div>
                <label id="outer" value="outer" />
                <custom-attributes org.zkoss.zul.listbox.rod="false" />
                <hbox>
                    <listbox id="lbxOne" height="150px" width="160px" model="${model}" onSelect="" multiple="true" checkmark="true" />
                    <listbox id="lbxTwo" height="150px" width="160px" model="${model}" onSelect="" multiple="true" checkmark="true" />
                    <listbox id="lbxThree" height="150px" width="160px" model="${model2}" onSelect="" multiple="true" checkmark="true" />
                </hbox>
                <hbox>
                    <textbox id="tbOne" value="box one" />
                    <textbox id="tbTwo" value="box two" />
                    <button id="btnOne" label="check equal selection" onClick='checkEqualSelection(tbOne.getValue(), tbTwo.getValue(), msg);' />
                    <button id="btnFour" label="show selection" onClick='showSelection(tbOne.getValue(), msg);' />
                    <label id="msg" />
                </hbox>
                <div height="10px" />
                <button id="btnTwo" label="clone">
                    <attribute name="onClick">
                    Listbox lbx = lbxThree.clone();
                    lbx.setId("lbxThree_clone" + cnt++);
                    lbx.setParent(cloneThreeArea);
                    </attribute>
                </button>
                <button id="btnThree" label="Clone by Serialization">
                    <attribute name="onClick">
                    <![CDATA[{
                    ByteArrayOutputStream boa = new ByteArrayOutputStream();
                    new ObjectOutputStream(boa).writeObject(lbxThree);
                    byte[] bs = boa.toByteArray();
                    Object n = new ObjectInputStream(new ByteArrayInputStream(bs)).readObject();
                    n.setId("lbxThree_serialize" + cnt++);
                    ((Component)n).setParent(cloneThreeArea);
                    }]]>
                    </attribute>
                </button>
                <button id="btnSix" label="insert item">
                    <attribute name="onClick">
                    model.put("item "+elemcnt, "data "+elemcnt);
                    model2.put("item "+elemcnt, "data "+elemcnt);
                    elemcnt++;
                    </attribute>
                </button>
                <button id="btnSeven" label="remove item">
                    <attribute name="onClick">
                    <![CDATA[
                    String key = "item ";
                    if (rmcntm < elemcnt) {
                        key += rmcntm;
                        rmcntm++;
                    } else {
                        key += rmcnts;
                        rmcnts++;
                    }
                    model.remove(key);
                    model2.remove(key);
                    ]]>
                    </attribute>
                </button>
               <hbox id="cloneThreeArea" />
           </zk>
       </template>
    </button>
    <div id="div"/>
</zk>