Hi,
I'm re-configuring a grid which uses a live grid view with a new store and column model.
If I reconfigure the grid when the scroller is on top nothing happens and a "manual" load is necessary.
If I reconfigure the grid when the scroller is on the "middle" the loader is automatically called with offset 0 and limit 200.

I expect to have the same behavior in both cases.

Here a modification of LiveGridExample that show the case:
Code:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import com.google.gwt.cell.client.DateCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.core.client.resources.ThemeStyles;
import com.sencha.gxt.data.client.loader.RpcProxy;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.PropertyAccess;
import com.sencha.gxt.data.shared.loader.PagingLoadConfig;
import com.sencha.gxt.data.shared.loader.PagingLoadResult;
import com.sencha.gxt.data.shared.loader.PagingLoadResultBean;
import com.sencha.gxt.data.shared.loader.PagingLoader;
import com.sencha.gxt.widget.core.client.FramedPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnModel;
import com.sencha.gxt.widget.core.client.grid.Grid;
import com.sencha.gxt.widget.core.client.grid.LiveGridView;
import com.sencha.gxt.widget.core.client.grid.LiveToolItem;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;


public class LiveGridExample implements IsWidget, EntryPoint {


    protected Grid<Post> view;
    protected PostProperties props;
    protected PagingLoader<PagingLoadConfig, PagingLoadResult<Post>> gridLoader;


    @Override
    public Widget asWidget() {


        RpcProxy<PagingLoadConfig, PagingLoadResult<Post>> proxy = new RpcProxy<PagingLoadConfig, PagingLoadResult<Post>>() {
            @Override
            public void load(PagingLoadConfig loadConfig, AsyncCallback<PagingLoadResult<Post>> callback) {


                System.out.println("Paging Offset: "+loadConfig.getOffset());
                System.out.println("Paging Limit: "+loadConfig.getLimit());
                System.out.println();


                int total = 1000;


                List<Post> posts = new ArrayList<Post>(100);


                for (int i = loadConfig.getOffset(); i<loadConfig.getOffset()+loadConfig.getLimit(); i++) posts.add(new Post("username"+i,"forum"+i,new Date(i), "subject"+i, i));


                PagingLoadResultBean<Post> result = new PagingLoadResultBean<Post>(posts, total, loadConfig.getOffset());


                callback.onSuccess(result);
            }
        };


        props = GWT.create(PostProperties.class);


        gridLoader = new PagingLoader<PagingLoadConfig, PagingLoadResult<Post>>(
                proxy);
        gridLoader.setRemoteSort(true);


        ColumnConfig<Post, String> forumColumn = new ColumnConfig<Post, String>(props.forum(), 150, "Forum");
        ColumnConfig<Post, String> usernameColumn = new ColumnConfig<Post, String>(props.username(), 150, "Username");
        ColumnConfig<Post, String> subjectColumn = new ColumnConfig<Post, String>(props.subject(), 150, "Subject");
        ColumnConfig<Post, Date> dateColumn = new ColumnConfig<Post, Date>(props.date(), 150, "Date");
        dateColumn.setCell(new DateCell(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT)));


        List<ColumnConfig<Post, ?>> columns = new ArrayList<ColumnConfig<Post, ?>>();
        columns.add(forumColumn);
        columns.add(usernameColumn);
        columns.add(subjectColumn);
        columns.add(dateColumn);


        ListStore<Post> store = new ListStore<Post>(new ModelKeyProvider<Post>() {
            @Override
            public String getKey(Post item) {
                return "" + item.getId();
            }
        });


        ColumnModel<Post> cm = new ColumnModel<Post>(columns);


        final LiveGridView<Post> liveGridView = new LiveGridView<Post>();
        liveGridView.setForceFit(true);


        view = new Grid<Post>(store, cm) {
            @Override
            protected void onAfterFirstAttach() {
                super.onAfterFirstAttach();
                Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                    @Override
                    public void execute() {
                        gridLoader.load(0, liveGridView.getCacheSize());
                    }
                });
            }
        };


        view.setLoadMask(true);
        view.setLoader(gridLoader);


        view.setView(liveGridView);


        FramedPanel cp = new FramedPanel();
        cp.setCollapsible(true);
        cp.setHeadingText("Live Grid Example");
        cp.setPixelSize(600, 390);
        cp.addStyleName("margin-10");


        VerticalLayoutContainer con = new VerticalLayoutContainer();
        con.setBorders(true);
        con.add(view, new VerticalLayoutData(1, 1));


        ToolBar toolBar = new ToolBar();
        toolBar.add(new LiveToolItem(view));
        toolBar.addStyleName(ThemeStyles.getStyle().borderTop());
        toolBar.getElement().getStyle().setProperty("borderBottom", "none");


        con.add(toolBar, new VerticalLayoutData(1, 25));
        con.add(new TextButton("Reconfigure", new SelectHandler() {


            @Override
            public void onSelect(SelectEvent event) {
                reConfigureGrid();
            }
        }));


        cp.setWidget(con);


        return cp;
    }


    protected void reConfigureGrid()
    {
        //simply renaming some columns and removing others
        ColumnConfig<Post, String> forumColumn = new ColumnConfig<Post, String>(props.forum(), 150, "MyForum");
        ColumnConfig<Post, String> usernameColumn = new ColumnConfig<Post, String>(props.username(), 150, "MyUsername");


        List<ColumnConfig<Post, ?>> columns = new ArrayList<ColumnConfig<Post, ?>>();
        columns.add(forumColumn);
        columns.add(usernameColumn);


        ListStore<Post> store = new ListStore<Post>(new ModelKeyProvider<Post>() {
            @Override
            public String getKey(Post item) {
                return "" + item.getId();
            }
        });


        ColumnModel<Post> cm = new ColumnModel<Post>(columns);


        view.reconfigure(store, cm);
    }


    @Override
    public void onModuleLoad() {
        RootPanel.get().add(this);
    }


    class Post {


        private String username;
        private String forum;
        private Date date;
        private String subject;
        private int id;




        /**
         * @param username
         * @param forum
         * @param date
         * @param subject
         * @param id
         */
        public Post(String username, String forum, Date date, String subject, int id) {
            this.username = username;
            this.forum = forum;
            this.date = date;
            this.subject = subject;
            this.id = id;
        }


        public int getId() {
            return id;
        }


        public void setId(int id) {
            this.id = id;
        }


        public String getUsername() {
            return username;
        }


        public void setUsername(String username) {
            this.username = username;
        }


        public String getForum() {
            return forum;
        }


        public void setForum(String forum) {
            this.forum = forum;
        }


        public Date getDate() {
            return date;
        }


        public void setDate(Date date) {
            this.date = date;
        }


        public String getSubject() {
            return subject;
        }


        public void setSubject(String subject) {
            this.subject = subject;
        }


    }


    interface PostProperties extends PropertyAccess<Post> {
        ValueProvider<Post, Date> date();


        ValueProvider<Post, String> forum();


        ModelKeyProvider<Post> id();


        ValueProvider<Post, String> subject();


        ValueProvider<Post, String> username();
    }


}