[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kde-workspace/KDE/4.9] kwin/effects/startupfeedback: Make Startup Feedback Effect aka Bouncing Curs
From:       Kai Uwe Broulik <kde () privat ! broulik ! de>
Date:       2012-08-27 9:15:45
Message-ID: 20120827091545.F2048A6094 () git ! kde ! org
[Download RAW message or body]

Git commit 00d682baab5cf68536def4dd4643d325d01d0cb0 by Kai Uwe Broulik.
Committed on 27/08/2012 at 11:14.
Pushed by broulik into branch 'KDE/4.9'.

Make Startup Feedback Effect aka Bouncing Cursor respect global size for small icons

BUG: 305611
REVIEW: 106166
FIXED-IN: 4.9.1

M  +10   -5    kwin/effects/startupfeedback/startupfeedback.cpp
M  +1    -0    kwin/effects/startupfeedback/startupfeedback.h

http://commits.kde.org/kde-workspace/00d682baab5cf68536def4dd4643d325d01d0cb0

diff --git a/kwin/effects/startupfeedback/startupfeedback.cpp \
b/kwin/effects/startupfeedback/startupfeedback.cpp index ff6a51e..cab7d43 100644
--- a/kwin/effects/startupfeedback/startupfeedback.cpp
+++ b/kwin/effects/startupfeedback/startupfeedback.cpp
@@ -73,7 +73,8 @@ static const QColor BLINKING_COLORS[] = {
 };
 
 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_active(false)
     , m_frame(0)
@@ -313,6 +314,9 @@ void StartupFeedbackEffect::start(const QString& icon)
     if (!m_active)
         effects->startMousePolling();
     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,
                          KIconLoader::DefaultState, QStringList(), 0, true);  // return null pixmap if \
not found  if (iconPixmap.isNull())
@@ -369,15 +373,16 @@ void StartupFeedbackEffect::prepareTextures(const QPixmap& pix)
 
 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)  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);
     p.setCompositionMode(QPainter::CompositionMode_Source);
     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;
 }
 
@@ -400,7 +405,7 @@ QRect StartupFeedbackEffect::feedbackRect() const
     switch(m_type) {
     case BouncingFeedback:
         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;
     case BlinkingFeedback: // fall through
     case PassiveFeedback:
diff --git a/kwin/effects/startupfeedback/startupfeedback.h \
b/kwin/effects/startupfeedback/startupfeedback.h index 6758354..578957b 100644
--- a/kwin/effects/startupfeedback/startupfeedback.h
+++ b/kwin/effects/startupfeedback/startupfeedback.h
@@ -64,6 +64,7 @@ private:
     void prepareTextures(const QPixmap& pix);
     QRect feedbackRect() const;
 
+    qreal m_bounceSizesRatio;
     KStartupInfo* m_startupInfo;
     KSelectionOwner* m_selection;
     KStartupInfoId m_currentStartup;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic