Fix oversized pixelated preview images shown in symbol and

shape button tooltips
This commit is contained in:
Nyall Dawson 2023-06-22 08:45:47 +10:00
parent 255d7c8d1a
commit 357a546968
3 changed files with 6 additions and 6 deletions

View File

@ -207,7 +207,7 @@ void QgsLegendPatchShapeButton::prepareMenu()
{
if ( const QgsSymbol *symbol = QgsStyle::defaultStyle()->previewSymbolForPatchShape( shape ) )
{
QIcon icon = QgsSymbolLayerUtils::symbolPreviewPixmap( symbol, QSize( iconSize, iconSize ), 1, nullptr, false, nullptr, &shape );
QIcon icon = QgsSymbolLayerUtils::symbolPreviewPixmap( symbol, QSize( iconSize, iconSize ), 1, nullptr, false, nullptr, &shape, screen() );
QAction *action = new QAction( name, this );
action->setIcon( icon );
connect( action, &QAction::triggered, this, [ = ] { loadPatchFromStyle( name ); } );
@ -297,11 +297,11 @@ void QgsLegendPatchShapeButton::updatePreview()
int width = static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 23 );
int height = static_cast< int >( width / 1.61803398875 ); // golden ratio
QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( mPreviewSymbol.get(), QSize( width, height ), height / 20, nullptr, false, nullptr, &mShape );
QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( mPreviewSymbol.get(), QSize( width, height ), height / 20, nullptr, false, nullptr, &mShape, screen() );
QByteArray data;
QBuffer buffer( &data );
pm.save( &buffer, "PNG", 100 );
setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3'>" ).arg( QString( data.toBase64() ) ) );
setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3' width=\"%4\">" ).arg( QString( data.toBase64() ) ).arg( width ) );
}
void QgsLegendPatchShapeButton::setDialogTitle( const QString &title )

View File

@ -712,11 +712,11 @@ void QgsSymbolButton::updatePreview( const QColor &color, QgsSymbol *tempSymbol
const int width = static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 23 );
const int height = static_cast< int >( width / 1.61803398875 ); // golden ratio
const QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( previewSymbol.get(), QSize( width, height ), height / 20 );
const QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( previewSymbol.get(), QSize( width, height ), height / 20, nullptr, false, nullptr, nullptr, screen() );
QByteArray data;
QBuffer buffer( &data );
pm.save( &buffer, "PNG", 100 );
setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3'>" ).arg( QString( data.toBase64() ) ) );
setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3' width=\"%4\">" ).arg( QString( data.toBase64() ) ).arg( width ) );
}
bool QgsSymbolButton::colorFromMimeData( const QMimeData *mimeData, QColor &resultColor, bool &hasAlpha )

View File

@ -625,7 +625,7 @@ void QgsSimpleLineSymbolLayerWidget::updatePatternIcon()
QByteArray data;
QBuffer buffer( &data );
pm.save( &buffer, "PNG", 100 );
mChangePatternButton->setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3'>" ).arg( QString( data.toBase64() ) ) );
mChangePatternButton->setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3' width=\"%4\">" ).arg( QString( data.toBase64() ) ).arg( width ) );
}
void QgsSimpleLineSymbolLayerWidget::resizeEvent( QResizeEvent *event )