GwtMaterialDesign / gwt-material-table

A complex table component designed for the material design specifications
https://gwtmaterialdesign.github.io/gmd-table-demo/
Apache License 2.0
26 stars 31 forks source link

BaseRenderer#drawRow does not consider column offset #208

Open GuidoReith opened 3 years ago

GuidoReith commented 3 years ago

Having a AbstractDataView (selectionType is not SelectionType.NONE); Turn off some columns and sort the rest gives wrong result: AbstractDataView#renderRows:337 - setting visible header indexes by method getVisibleHeaderIndexes(); AbstractDataView#getVisibleHeaderIndexes:307 - uses getColumnCount() method; AbstractDataView#getColumnCount:1275 - returns column count without OFFSET (getColumnOffset()); BaseRenderer#drawRow:135 - drawColumn() method uses as param isHeaderVisible() method with column index without OFFSET (int c);

Fix could be: Change in getVisibleHeaderIndexes():

        protected List<Integer> getVisibleHeaderIndexes() {
        List<Integer> visibleHeaders = new ArrayList<>();
        for (int index = 0; index < getColumnCount() + getColumnOffset(); index++) {
            if (isHeaderVisible(index)) {
                visibleHeaders.add(index);
            }
        }

        return visibleHeaders;
    }

In BaseRenderer#drawRow:135 TableData td = drawColumn(row, context, data, column, colIndex, isHeaderVisible(colIndex));

BenDol commented 3 years ago

Thanks for reporting, I'll take a look at this