Make Startup Feedback Effect aka Bouncing Cursor respect global size for small icons
BUG: 305611 REVIEW: 106166 FIXED-IN: 4.9.1
This commit is contained in:
parent
2f18fe002f
commit
9adb2d3ed0
2 changed files with 11 additions and 5 deletions
|
@ -73,7 +73,8 @@ static const QColor BLINKING_COLORS[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
StartupFeedbackEffect::StartupFeedbackEffect()
|
StartupFeedbackEffect::StartupFeedbackEffect()
|
||||||
: m_startupInfo(new KStartupInfo(KStartupInfo::CleanOnCantDetect, this))
|
: m_bounceSizesRatio(1.0)
|
||||||
|
, m_startupInfo(new KStartupInfo(KStartupInfo::CleanOnCantDetect, this))
|
||||||
, m_selection(new KSelectionOwner("_KDE_STARTUP_FEEDBACK", -1, this))
|
, m_selection(new KSelectionOwner("_KDE_STARTUP_FEEDBACK", -1, this))
|
||||||
, m_active(false)
|
, m_active(false)
|
||||||
, m_frame(0)
|
, m_frame(0)
|
||||||
|
@ -313,6 +314,9 @@ void StartupFeedbackEffect::start(const QString& icon)
|
||||||
if (!m_active)
|
if (!m_active)
|
||||||
effects->startMousePolling();
|
effects->startMousePolling();
|
||||||
m_active = true;
|
m_active = true;
|
||||||
|
// get ratio for bouncing cursor so we don't need to manually calculate the sizes for each icon size
|
||||||
|
if (m_type == BouncingFeedback)
|
||||||
|
m_bounceSizesRatio = IconSize(KIconLoader::Small) / 16.0;
|
||||||
QPixmap iconPixmap = KIconLoader::global()->loadIcon(icon, KIconLoader::Small, 0,
|
QPixmap iconPixmap = KIconLoader::global()->loadIcon(icon, KIconLoader::Small, 0,
|
||||||
KIconLoader::DefaultState, QStringList(), 0, true); // return null pixmap if not found
|
KIconLoader::DefaultState, QStringList(), 0, true); // return null pixmap if not found
|
||||||
if (iconPixmap.isNull())
|
if (iconPixmap.isNull())
|
||||||
|
@ -369,15 +373,16 @@ void StartupFeedbackEffect::prepareTextures(const QPixmap& pix)
|
||||||
|
|
||||||
QImage StartupFeedbackEffect::scalePixmap(const QPixmap& pm, const QSize& size) const
|
QImage StartupFeedbackEffect::scalePixmap(const QPixmap& pm, const QSize& size) const
|
||||||
{
|
{
|
||||||
QImage scaled = pm.toImage().scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
|
const QSize& adjustedSize = size * m_bounceSizesRatio;
|
||||||
|
QImage scaled = pm.toImage().scaled(adjustedSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
|
||||||
if (scaled.format() != QImage::Format_ARGB32_Premultiplied && scaled.format() != QImage::Format_ARGB32)
|
if (scaled.format() != QImage::Format_ARGB32_Premultiplied && scaled.format() != QImage::Format_ARGB32)
|
||||||
scaled = scaled.convertToFormat(QImage::Format_ARGB32);
|
scaled = scaled.convertToFormat(QImage::Format_ARGB32);
|
||||||
|
|
||||||
QImage result(20, 20, QImage::Format_ARGB32);
|
QImage result(20 * m_bounceSizesRatio, 20 * m_bounceSizesRatio, QImage::Format_ARGB32);
|
||||||
QPainter p(&result);
|
QPainter p(&result);
|
||||||
p.setCompositionMode(QPainter::CompositionMode_Source);
|
p.setCompositionMode(QPainter::CompositionMode_Source);
|
||||||
p.fillRect(result.rect(), Qt::transparent);
|
p.fillRect(result.rect(), Qt::transparent);
|
||||||
p.drawImage((20 - size.width()) / 2, (20 - size.height()) / 2, scaled, 0, 0, size.width(), size.height());
|
p.drawImage((20 * m_bounceSizesRatio - adjustedSize.width()) / 2, (20*m_bounceSizesRatio - adjustedSize.height()) / 2, scaled, 0, 0, adjustedSize.width(), adjustedSize.height() * m_bounceSizesRatio);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,7 +405,7 @@ QRect StartupFeedbackEffect::feedbackRect() const
|
||||||
switch(m_type) {
|
switch(m_type) {
|
||||||
case BouncingFeedback:
|
case BouncingFeedback:
|
||||||
texture = m_bouncingTextures[ FRAME_TO_BOUNCE_TEXTURE[ m_frame ]];
|
texture = m_bouncingTextures[ FRAME_TO_BOUNCE_TEXTURE[ m_frame ]];
|
||||||
yOffset = FRAME_TO_BOUNCE_YOFFSET[ m_frame ];
|
yOffset = FRAME_TO_BOUNCE_YOFFSET[ m_frame ] * m_bounceSizesRatio;
|
||||||
break;
|
break;
|
||||||
case BlinkingFeedback: // fall through
|
case BlinkingFeedback: // fall through
|
||||||
case PassiveFeedback:
|
case PassiveFeedback:
|
||||||
|
|
|
@ -64,6 +64,7 @@ private:
|
||||||
void prepareTextures(const QPixmap& pix);
|
void prepareTextures(const QPixmap& pix);
|
||||||
QRect feedbackRect() const;
|
QRect feedbackRect() const;
|
||||||
|
|
||||||
|
qreal m_bounceSizesRatio;
|
||||||
KStartupInfo* m_startupInfo;
|
KStartupInfo* m_startupInfo;
|
||||||
KSelectionOwner* m_selection;
|
KSelectionOwner* m_selection;
|
||||||
KStartupInfoId m_currentStartup;
|
KStartupInfoId m_currentStartup;
|
||||||
|
|
Loading…
Reference in a new issue