QTableView: fix calculating cells to draw
The width of the bitarray which should avoid redraws of already drawn cells is sometimes calculated with other parameters then the actual drawing. This can lead to cells which are not drawn. The reason for the discrepancy is that for the initial calculation the headers viewport width is taken which can be smaller than the real width due to a css border. Since all other QHeaderView operations do not take the border into account the problem arises. This will not fix the visual glitch (the header separators are not painted at the same position as the grid) but will at least draw all needed cells. Task-number: QTBUG-20316 Change-Id: I4a1e35ee3ea51b1b458ad3497aab0a34af680cb8 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>bb10
parent
46f1061822
commit
2b17731413
|
|
@ -1383,12 +1383,12 @@ void QTableView::paintEvent(QPaintEvent *event)
|
|||
//firstVisualRow is the visual index of the first visible row. lastVisualRow is the visual index of the last visible Row.
|
||||
//same goes for ...VisualColumn
|
||||
int firstVisualRow = qMax(verticalHeader->visualIndexAt(0),0);
|
||||
int lastVisualRow = verticalHeader->visualIndexAt(verticalHeader->viewport()->height());
|
||||
int lastVisualRow = verticalHeader->visualIndexAt(verticalHeader->height());
|
||||
if (lastVisualRow == -1)
|
||||
lastVisualRow = d->model->rowCount(d->root) - 1;
|
||||
|
||||
int firstVisualColumn = horizontalHeader->visualIndexAt(0);
|
||||
int lastVisualColumn = horizontalHeader->visualIndexAt(horizontalHeader->viewport()->width());
|
||||
int lastVisualColumn = horizontalHeader->visualIndexAt(horizontalHeader->width());
|
||||
if (rightToLeft)
|
||||
qSwap(firstVisualColumn, lastVisualColumn);
|
||||
if (firstVisualColumn == -1)
|
||||
|
|
|
|||
Loading…
Reference in New Issue