I have a ListGrid with a custom hover component that shows another ListGrid with related records already available on the client so no server interaction is required to show the hover ListGrid. The code is shown below. I'm not sure exactly what sequence of events causes this, but sometimes the hover component stays on the screen after moving the cursor away from the row that caused it to show. I can even close the Window that contained the ListGrid and navigate elsewhere in the app, but the HoverComponent sticks around on the screen. I am calling setHoverAutoDestroy(true) on the grid.
Code:
@Override protected Canvas getCellHoverComponent(Record record, Integer rowNum, Integer colNum) { RecordList packContents = record.getAttributeAsRecordList(PACK_CONTENTS); RecordList newPackContents = record.getAttributeAsRecordList(NEW_PACK_CONTENTS); if (newPackContents!=null && !newPackContents.isEmpty()) return getPackGrid(newPackContents); else if (packContents!=null && !packContents.isEmpty()) return getPackGrid(packContents); else return null; } /** * Returns a canvas to display as hover text for a prepack item. * @param packContents A RecordList of PoPackContents records to display * @return */ private Canvas getPackGrid(RecordList packContents) { ListGrid grid = new ListGrid(); grid.setDataSource(DataSource.get(IslandPacificDSConstants.DATASOURCE_PoPackContents)); grid.setData(packContents); grid.setAutoFitData(Autofit.BOTH); grid.setAutoFitFieldWidths(true); grid.setLeaveScrollbarGap(false); grid.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH); return grid; };
Comment