Hello,

I searched quite extensively but was unable to locate anything close to what I am encountering. Apologies if this is not a bug or is already known.

I am using a Popup to display a FormPanel that includes a ComboBox. When I attempt to select an entry using the left-mouse click after successfully expanding the list using the left mouse click, the Popup hides itself. When the Popup is displayed again, the ComboBox has no value as if the click did not register.

Interestingly, I can mouse-over the expanded list and then use the keyboard to navigate and successfully select an entry in the ComboBox without the Popup closing.

Tested in FF3 & IE8. Test case follows.

Code:
public class PortalApp2 extends LayoutContainer implements EntryPoint {

    @Override
    public void onModuleLoad() {
        final Popup popup = new Popup();
        popup.setAutoWidth(false);
        popup.setAutoHeight(false);
        popup.setBounds(500, 300, 500, 300);

        final Portal portal = new Portal(2);
        portal.setPixelSize(500, 500);
        portal.setBorders(true);
        portal.setStyleAttribute("backgroundColor", "white");

        final Portlet portlet = new Portlet();
        portlet.setHeading("Popup Launcher");
        portlet.setLayout(new FitLayout());
        portlet.setPixelSize(400, 400);
        configPanel(portlet);
        
        final Button popupButton = new Button("Launch Popup");
        popupButton.setPixelSize(100, 50);
        popupButton.addListener(
            Events.Select,
            new SelectionListener<ButtonEvent>() {
                @Override
                public void componentSelected(final ButtonEvent event) {
                    popup.show();
                }
            });

        final FormPanel uploadForm = new FormPanel();
        uploadForm.setHeading("Enter Information");
        uploadForm.setFrame(true);
        uploadForm.setAction("#");
        uploadForm.setButtonAlign(HorizontalAlignment.CENTER);
        uploadForm.setWidth(350);
        uploadForm.setId("myForm");
        
        final TextField<String> someText = new TextField<String>();
        someText.setFieldLabel("Some Text Here");
        uploadForm.add(someText);
        
        final ComboBox<ModelData> combo = new ComboBox<ModelData>();
        combo.setFieldLabel("Value");
        combo.setId("valueCombo");
        combo.setAllowBlank(false);
        combo.setDisplayField("value");
        combo.setEditable(true);
        combo.setTriggerAction(TriggerAction.ALL);
        combo.setStore(getData());
        uploadForm.add(combo);

        popup.add(uploadForm);
        
        portlet.add(popup);
        portlet.add(popupButton);

        portal.add(portlet, 1);

        RootPanel.get().add(portal);
    }

    private ListStore<ModelData> getData() {
        ListStore<ModelData> valList = new ListStore<ModelData>();
        final String[] values =
            { "Value1", "Value2", "Value3", "Value4", "Value5",
                "Value6", "Value7", "Value8", "Value9",
                "Value10", "Value11", "Value12", "Value13", "Value14" };
        int i = 0;
        for (String value: values) {
            KeyValueModel model = new KeyValueModel();
            model.setKey("" + i++);
            model.setValue(value);
            valList.add(model);
        }
        return valList;
    }

    private void configPanel(final Portlet portlet) {
        portlet.setCollapsible(true);
        portlet.setAnimCollapse(false);
        portlet.getHeader().addTool(new ToolButton("x-tool-gear"));
        portlet.getHeader().addTool(
            new ToolButton("x-tool-close",
                new SelectionListener<IconButtonEvent>() {

                    @Override
                    public void componentSelected(IconButtonEvent ce) {
                        portlet.removeFromParent();
                    }
                }));
    }

    @SuppressWarnings("serial")
    private class KeyValueModel extends BaseModelData {
        public KeyValueModel() {}

        public KeyValueModel(String key, String value) {
            setKey(key);
            setValue(value);
        }

        public String getKey() { return get("key"); }

        public void setKey(String key) { set("key", key); }

        public String getValue() { return get("value"); }

        public void setValue(String value) { set("value", value); }
    }
}