Item views: fix regression causing unexpected widget overlapping
A certain geometry adjustment was (practically) introduced in Qt 5.11, and caused very surprising behavior, where item widgets will often overwrite neighbouring cells. This has resulted in a number of bug reports. Since the adjustment has such serious side effects, and does not seem to be relevant any longer for the issue for which it was intended, remove it here. More details: From early Qt 4 times, QStyledItemDelegate would do some automatic expansion of the geometry of editor widgets - but only if the layout was RightToLeft. Hence, the effect of it was rarely seen. QTBUG-37433 did, for Qt 5.10, and complained about it. However, the resulting code change did not remove the adjustment, but instead extended it to apply to the normal LeftToRight layout also. Hence, more users experienced it, and reported it as a regression. Also, now in Qt 5.13, it seems Qt has changed in other ways, and the geometry adjustment no longer seems to help (or indeed make any difference to) the original case in QTBUG-37433. Fixes: QTBUG-78495 Fixes: QTBUG-76011 Fixes: QTBUG-68476 Change-Id: I4a4e873969eb1d89843f98fc63d90371207515d1 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
This commit is contained in:
parent
63a3b26b6b
commit
d2ae838a7c
@ -514,15 +514,6 @@ void QStyledItemDelegate::updateEditorGeometry(QWidget *editor,
|
|||||||
|
|
||||||
QStyle *style = widget ? widget->style() : QApplication::style();
|
QStyle *style = widget ? widget->style() : QApplication::style();
|
||||||
QRect geom = style->subElementRect(QStyle::SE_ItemViewItemText, &opt, widget);
|
QRect geom = style->subElementRect(QStyle::SE_ItemViewItemText, &opt, widget);
|
||||||
const int delta = qSmartMinSize(editor).width() - geom.width();
|
|
||||||
if (delta > 0) {
|
|
||||||
//we need to widen the geometry
|
|
||||||
if (editor->layoutDirection() == Qt::RightToLeft)
|
|
||||||
geom.adjust(-delta, 0, 0, 0);
|
|
||||||
else
|
|
||||||
geom.adjust(0, 0, delta, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
editor->setGeometry(geom);
|
editor->setGeometry(geom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user