When using a FormPanel with nested TabPanel items, form validation does not work correctly unless all Tab items have been viewed.

GXT version : 1.2.1
Browser and version : IE6
Operating System : Windows XP

I have added the following to the AdvancedFormsExample.java from the sample code:
Code:
home.setAllowBlank(false);

    panel.addButton(new Button("Submit", new SelectionListener<ButtonEvent>() {  
        @Override  
        public void componentSelected(ButtonEvent ce) {
            if (panel.isValid()){
                Info.display("Form","Form is valid");
            }
            else{
                Info.display("Form","Form is NOT valid");
            }
        }  
        }));
Full Source
Code:
/*
 * Ext GWT - Ext for GWT
 * Copyright(c) 2007, 2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */
package com.extjs.gxt.samples.client.examples.forms;

import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.DateField;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
import com.extjs.gxt.ui.client.widget.form.TextArea;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.user.client.Element;

public class AdvancedFormsExample extends LayoutContainer {

  private VerticalPanel vp;
  private FormPanel panel;

  public AdvancedFormsExample() {
    vp = new VerticalPanel();
    vp.setSpacing(10);
  }

  @Override
  protected void onRender(Element parent, int index) {
    super.onRender(parent, index);
    createColumnForm();
    createTabForm();

    add(vp);
  }

  private void createTabForm() {
    panel = new FormPanel();
    panel.setFrame(false);
    panel.setHeaderVisible(false);
    panel.setBodyBorder(false);
    panel.setButtonAlign(HorizontalAlignment.CENTER);
    panel.setLayout(new FitLayout());

    TabPanel tabs = new TabPanel();

    TabItem personal = new TabItem();
    personal.setText("Personal Details");
    personal.setLayout(new FormLayout());

    TextField<String> name = new TextField<String>();
    name.setFieldLabel("First Name");
    name.setValue("Darrell");
    personal.add(name);

    TextField<String> last = new TextField<String>();
    last.setFieldLabel("Last Name");
    last.setValue("Meyer");
    personal.add(last);

    TextField<String> company = new TextField<String>();
    company.setFieldLabel("Company");
    personal.add(company);

    TextField<String> email = new TextField<String>();
    email.setFieldLabel("Email");
    personal.add(email);

    tabs.add(personal);

    TabItem numbers = new TabItem();
    numbers.setText("Phone Numbers");
    numbers.setLayout(new FormLayout());

    TextField<String> home = new TextField<String>();
    home.setFieldLabel("Home");
    home.setValue("800-555-1212");
    home.setAllowBlank(false);
    numbers.add(home);

    TextField<String> business = new TextField<String>();
    business.setFieldLabel("Business");
    numbers.add(business);

    TextField<String> mobile = new TextField<String>();
    mobile.setFieldLabel("Mobile");
    numbers.add(mobile);

    TextField<String> fax = new TextField<String>();
    fax.setFieldLabel("Fax");
    numbers.add(fax);

    tabs.add(numbers);

    panel.add(tabs);
    panel.addButton(new Button("Cancel"));
    panel.addButton(new Button("Submit", new SelectionListener<ButtonEvent>() {  
        @Override  
        public void componentSelected(ButtonEvent ce) {
            if (panel.isValid()){
                Info.display("Form","Form is valid");
            }
            else{
                Info.display("Form","Form is NOT valid");
            }
        }  
        }));  

    panel.setSize(340, 180);

    vp.add(panel);
  }

  private void createColumnForm() {
    FormPanel panel = new FormPanel();
    panel.setFrame(true);
    panel.setIconStyle("icon-form");
    panel.setCollapsible(true);
    panel.setHeading("FormPanel");
    panel.setSize(470, -1);
    panel.setButtonAlign(HorizontalAlignment.CENTER);
    panel.setLayout(new FlowLayout());

    LayoutContainer main = new LayoutContainer();
    main.setWidth(450);
    main.setLayout(new ColumnLayout());

    LayoutContainer left = new LayoutContainer();

    FormLayout layout = new FormLayout();
    layout.setLabelAlign(LabelAlign.TOP);
    left.setLayout(layout);

    TextField<String> first = new TextField<String>();
    first.setFieldLabel("First Name");
    left.add(first);

    TextField<String> company = new TextField<String>();
    company.setFieldLabel("Company");
    left.add(company);

    DateField birthday = new DateField();
    birthday.setFieldLabel("Birthday");
    left.add(birthday);

    LayoutContainer right = new LayoutContainer();

    layout = new FormLayout();
    layout.setLabelAlign(LabelAlign.TOP);
    right.setLayout(layout);

    TextField<String> last = new TextField<String>();
    last.setFieldLabel("Last");
    right.add(last);

    TextField<String> email = new TextField<String>();
    email.setFieldLabel("Email");
    right.add(email);

    Radio radio1 = new Radio();
    radio1.setBoxLabel("Yes");

    Radio radio2 = new Radio();
    radio2.setBoxLabel("No");

    RadioGroup group = new RadioGroup();
    group.setFieldLabel("Ext GWT User");
    group.add(radio1);
    group.add(radio2);
    right.add(group);

    main.add(left, new ColumnData(.5));
    main.add(right, new ColumnData(.5));

    panel.add(main);

    LayoutContainer area = new LayoutContainer();
    area.setStyleAttribute("padding", "0 10px 5px 10px");
    area.setWidth(450);

    layout = new FormLayout();
    layout.setLabelAlign(LabelAlign.TOP);
    layout.setPadding(0);
    area.setLayout(layout);

    TextArea a = new TextArea();
    a.setFieldLabel("Comment");

    String adj = GXT.isIE ? "100%" : "-20"; // looking into
    a.setData("anchorSpec", adj);
    area.add(a);

    panel.add(area);

    panel.addButton(new Button("Cancel"));
    panel.addButton(new Button("Submit"));

    vp.add(panel);
  }

}