QStyledItemDelegate/TreeView: fix showing lineedit editor
When the text alignment is AlignRight the opened editor is wrongly aligned and therefore the text can not be read. There is no reason to align the editor window on the right only because of the text alignment. Also remove the hack to not let occupy the editor the whole cell in a QTreeView but in a QTableView. Fixes: QTBUG-98525 Change-Id: I6f2d88e461bcfd505adde745041b5d4fdf679201 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
This commit is contained in:
parent
b03557287f
commit
7e362f76a6
@ -477,15 +477,7 @@ void QStyledItemDelegate::updateEditorGeometry(QWidget *editor,
|
||||
|
||||
QStyleOptionViewItem opt = option;
|
||||
initStyleOption(&opt, index);
|
||||
// let the editor take up all available space
|
||||
//if the editor is not a QLineEdit
|
||||
//or it is in a QTableView
|
||||
#if QT_CONFIG(tableview) && QT_CONFIG(lineedit)
|
||||
if (qobject_cast<QExpandingLineEdit*>(editor) && !qobject_cast<const QTableView*>(widget))
|
||||
opt.showDecorationSelected = editor->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, nullptr, editor);
|
||||
else
|
||||
#endif
|
||||
opt.showDecorationSelected = true;
|
||||
opt.showDecorationSelected = editor->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, nullptr, editor);
|
||||
|
||||
QStyle *style = widget ? widget->style() : QApplication::style();
|
||||
QRect geom = style->subElementRect(QStyle::SE_ItemViewItemText, &opt, widget);
|
||||
|
@ -1160,12 +1160,8 @@ void QCommonStylePrivate::viewItemLayout(const QStyleOptionViewItem *opt, QRect
|
||||
checkRect->size(), check);
|
||||
*pixmapRect = QStyle::alignedRect(opt->direction, opt->decorationAlignment,
|
||||
pixmapRect->size(), decoration);
|
||||
// the text takes up all available space, unless the decoration is not shown as selected
|
||||
if (opt->showDecorationSelected)
|
||||
*textRect = display;
|
||||
else
|
||||
*textRect = QStyle::alignedRect(opt->direction, opt->displayAlignment,
|
||||
textRect->size().boundedTo(display.size()), display);
|
||||
// the textRect takes up all remaining size
|
||||
*textRect = display;
|
||||
} else {
|
||||
*checkRect = check;
|
||||
*pixmapRect = decoration;
|
||||
|
Loading…
x
Reference in New Issue
Block a user