Skip to content

Commit fe17025

Browse files
committed
listview: set static width, fix height, padding #34
1 parent be04e2f commit fe17025

File tree

2 files changed

+14
-20
lines changed

2 files changed

+14
-20
lines changed

fm/src/mainwindow.cpp

+8-12
Original file line numberDiff line numberDiff line change
@@ -1636,29 +1636,25 @@ void MainWindow::updateGrid()
16361636
{
16371637
if (!iconAct->isChecked()) { return; }
16381638
QFontMetrics fm = fontMetrics();
1639-
int textWidth = fm.averageCharWidth() * 13;
1639+
int textWidth = fm.averageCharWidth() * 15;
1640+
int realTextWidth = fm.averageCharWidth() * 13;
16401641
int textHeight = fm.lineSpacing() * 3;
16411642
QSize grid;
1642-
grid.setWidth(qMax(zoom, textWidth) + 4);
1643-
grid.setHeight(zoom+ textHeight + 4);
1643+
grid.setWidth(qMax(zoom, textWidth));
1644+
grid.setHeight(zoom+textHeight);
16441645

16451646
QModelIndexList items;
16461647
for (int x = 0; x < modelList->rowCount(modelList->index(pathEdit->currentText())); ++x) {
16471648
items.append(modelList->index(x,0,modelList->index(pathEdit->currentText())));
16481649
}
16491650
foreach (QModelIndex theItem,items) {
16501651
QString filename = modelList->fileName(theItem);
1651-
QRect txtRect(0, 0, grid.width(), grid.height());
1652-
QSize txtsize = fm.boundingRect(txtRect, Qt::AlignCenter|Qt::TextWrapAnywhere, filename).size();
1653-
int width = txtsize.width()+8;
1654-
if (width<zoom) { width = zoom+8; }
1655-
if (width>grid.width()) { grid.setWidth(width); }
1656-
if (txtsize.height()+zoom+8>grid.height()) { grid.setHeight(txtsize.height()+zoom+8); }
1657-
//qDebug() << filename << txtsize;
1652+
QRect item(0,0,realTextWidth,grid.height());
1653+
QSize txtsize = fm.boundingRect(item, Qt::AlignCenter|Qt::TextWrapAnywhere, filename).size();
1654+
int newHeight = txtsize.height()+zoom+5;
1655+
if (newHeight>grid.height()) { grid.setHeight(newHeight); }
16581656
}
1659-
16601657
if (list->gridSize() != grid) {
1661-
qDebug() << "SET GRID" << grid;
16621658
list->setGridSize(grid);
16631659
}
16641660
}

fm/src/mainwindow.h

+6-8
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,13 @@ class IconViewDelegate : public QStyledItemDelegate
102102
{
103103
QIcon icon = qvariant_cast<QIcon>(index.data(Qt::DecorationRole));
104104
QSize iconsize = icon.actualSize(option.decorationSize);
105-
QRect item = option.rect;
106-
QRect txtRect(item.left(), item.top()+iconsize.height(),
107-
item.width(), item.height()-iconsize.height());
105+
int width = qMax(iconsize.width(), option.fontMetrics.averageCharWidth() * 13);
106+
QRect txtRect(0, 0, width, option.rect.height());
108107
QSize txtsize = option.fontMetrics.boundingRect(txtRect,
109108
Qt::AlignCenter|Qt::TextWrapAnywhere,
110109
index.data().toString()).size();
111-
int width = txtsize.width();
112-
if (width<iconsize.width()) { width = iconsize.width(); }
113-
return QSize(width+10,txtsize.height()+iconsize.height());
110+
QSize size(width, txtsize.height()+iconsize.height());
111+
return size;
114112
}
115113
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
116114
{
@@ -119,8 +117,8 @@ class IconViewDelegate : public QStyledItemDelegate
119117
QRect item = option.rect;
120118
QRect iconRect(item.left()+(item.width()/2)-(iconsize.width()/2),
121119
item.top(), iconsize.width(), iconsize.height());
122-
QRect txtRect(item.left()+5, item.top()+iconsize.height(),
123-
item.width()-10, item.height()-iconsize.height());
120+
QRect txtRect(item.left(), item.top()+iconsize.height(),
121+
item.width(), item.height()-iconsize.height());
124122
QBrush txtBrush = qvariant_cast<QBrush>(index.data(Qt::ForegroundRole));
125123
bool isSelected = option.state & QStyle::State_Selected;
126124
bool isEditing = _isEditing && index==_index;

0 commit comments

Comments
 (0)