From 8ec24c0ac9a0c699721c50a70630c91cc36b1c30 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Mon, 19 Sep 2022 12:04:52 -0400 Subject: Fix sizeHintChanged not being fired when item view size changes. Also menu adjustments. --- qdeduper/imageitem.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'qdeduper/imageitem.cpp') diff --git a/qdeduper/imageitem.cpp b/qdeduper/imageitem.cpp index 6fee930..f18d32c 100644 --- a/qdeduper/imageitem.cpp +++ b/qdeduper/imageitem.cpp @@ -9,6 +9,9 @@ #include #include #include +#include + +#define DEBUGPAINT 0 ImageItem::ImageItem(QString fn, QString dispn, QKeySequence hotkey, double pxratio) { @@ -40,7 +43,6 @@ void ImageItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opt so.state |= QStyle::StateFlag::State_Active; option.widget->style()->drawPrimitive(QStyle::PrimitiveElement::PE_PanelItemViewItem, &so, painter, option.widget); - QPixmap pm = index.data(Qt::ItemDataRole::DecorationRole).value(); QSize imd = pm.size().scaled(imr.size(), Qt::AspectRatioMode::KeepAspectRatio); painter->setRenderHint(QPainter::RenderHint::SmoothPixmapTransform); @@ -88,6 +90,12 @@ void ImageItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opt r.setRight(imr.right()); QString efns = option.fontMetrics.elidedText(fns, Qt::TextElideMode::ElideMiddle, r.width()); painter->drawText(r, efns, topt); +#if DEBUGPAINT + painter->setPen(QPen(Qt::GlobalColor::red)); + painter->drawRect(so.rect); + painter->drawRect(option.rect); + qDebug() << "paint" << index.row() << option.rect; +#endif } QSize ImageItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const @@ -121,6 +129,9 @@ QSize ImageItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QMod ret.setHeight(vpsz.height() / index.model()->rowCount() - lw->spacing()); ret.setHeight(std::max(min_height + extra_height, ret.height())); ret.setHeight(std::min(max_height + extra_height, ret.height())); +#if DEBUGPAINT + qDebug() << "sizehint" << index.row() << ret; +#endif return ret; } -- cgit v1.2.3