提交 c3a4b543 编写于 作者: S serge-rider

#2269 Current row restore after refresh fix

上级 ca8e5343
......@@ -48,6 +48,7 @@ class ResultSetDataReceiver implements DBDDataReceiver {
private Map<DBCAttributeMetaData, List<String>> attrErrors = new HashMap<>();
// All (unique) errors happened during fetch
private List<Throwable> errorList = new ArrayList<>();
private int focusRow;
ResultSetDataReceiver(ResultSetViewer resultSetViewer)
{
......@@ -154,7 +155,7 @@ class ResultSetDataReceiver implements DBDDataReceiver {
// Push data into viewer
if (!nextSegmentRead) {
resultSetViewer.updatePresentation(resultSet);
resultSetViewer.setData(tmpRows);
resultSetViewer.setData(tmpRows, focusRow);
resultSetViewer.getActivePresentation().refreshData(true, false, !resultSetViewer.getModel().isMetadataChanged());
} else {
resultSetViewer.appendData(tmpRows);
......@@ -176,4 +177,7 @@ class ResultSetDataReceiver implements DBDDataReceiver {
rows = new ArrayList<>();
}
public void setFocusRow(int focusRow) {
this.focusRow = focusRow;
}
}
......@@ -1394,7 +1394,7 @@ public class ResultSetViewer extends Viewer
activePresentation.clearMetaData();
}
void setData(List<Object[]> rows)
void setData(List<Object[]> rows, int focusRow)
{
if (viewerPanel.isDisposed()) {
return;
......@@ -1402,6 +1402,9 @@ public class ResultSetViewer extends Viewer
this.curRow = null;
this.model.setData(rows);
this.curRow = (this.model.getRowCount() > 0 ? this.model.getRow(0) : null);
if (focusRow > 0 && focusRow < model.getRowCount()) {
this.curRow = model.getRow(focusRow);
}
{
......@@ -2434,6 +2437,7 @@ public class ResultSetViewer extends Viewer
progressControl = (Composite) activePresentation.getControl();
}
final Object presentationState = savePresentationState();
dataReceiver.setFocusRow(focusRow);
dataPumpJob = new ResultSetJobDataRead(
dataContainer,
useDataFilter,
......@@ -2484,7 +2488,6 @@ public class ResultSetViewer extends Viewer
if (!metadataChanged && focusRow >= 0 && focusRow < model.getRowCount() && model.getVisibleAttributeCount() > 0) {
// Seems to be refresh
// Restore original position
curRow = model.getRow(focusRow);
restorePresentationState(presentationState);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册