diff options
Diffstat (limited to 'mandriva/2010.2/other/ksplash-engine-moodin/moodin-drawing_and_scaling_fixes.patch')
-rw-r--r-- | mandriva/2010.2/other/ksplash-engine-moodin/moodin-drawing_and_scaling_fixes.patch | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/mandriva/2010.2/other/ksplash-engine-moodin/moodin-drawing_and_scaling_fixes.patch b/mandriva/2010.2/other/ksplash-engine-moodin/moodin-drawing_and_scaling_fixes.patch new file mode 100644 index 000000000..a856e9932 --- /dev/null +++ b/mandriva/2010.2/other/ksplash-engine-moodin/moodin-drawing_and_scaling_fixes.patch @@ -0,0 +1,144 @@ +diff -p -up moodin/src/cache.cpp.orig moodin/src/cache.cpp +diff -p -up moodin/src/magiclabel.h.orig moodin/src/magiclabel.h +diff -p -up moodin/src/cache.h.orig moodin/src/cache.h +diff -p -up moodin/src/thememoodin.cpp.orig moodin/src/thememoodin.cpp +--- moodin/src/thememoodin.cpp.orig 2008-02-26 17:46:36.000000000 -0300 ++++ moodin/src/thememoodin.cpp 2008-02-26 17:47:26.000000000 -0300 +@@ -88,11 +88,11 @@ void ThemeMoodin::readSettings() + mLabelShadowOffset = cfg->readPointEntry("LabelShadowOffset", &pos); + QSize size(1280, 1024); + mBaseResolution = cfg->readSizeEntry("BaseResolution", &size); +- //For svg image use a negative size => force to create it. ++/* //For svg image use a negative size => force to create it. + if(!mUsersBackground && (mBackgroundImage.endsWith(".svg") || mBackgroundImage.endsWith(".svgz"))) { + mBaseResolution=QSize(); + } +- ++*/ + mTranslate = cfg->readBoolEntry("Translate", true); + mLineUpImages = cfg->readBoolEntry("LineUpImages", false); + +@@ -325,7 +325,13 @@ EffectWidget* ThemeMoodin::createEffectW + fw->setFixedSize(image->size()); + fw->setImage(image); + fw->setStart(mBeginOpacity); +- fw->show(); ++ //fw->show(); ++ ++ for (EffectWidget *f = mEffectWidgets.first(); f; f = mEffectWidgets.next()) ++ { ++ connect(f, SIGNAL(cacheNeedsUpdate()), fw, SLOT(updateCache())); ++ connect(fw, SIGNAL(cacheNeedsUpdate()), f, SLOT(updateCache())); ++ } + + return fw; + } +@@ -358,7 +364,10 @@ void ThemeMoodin::slotSetPixmap(const QS + EffectWidget *fw = mEffectWidgets.at(n); + + if (fw) ++ { ++ fw->show(); + fw->start(); ++ } + + repaint(false); + } +diff -p -up moodin/src/thememoodin.h.orig moodin/src/thememoodin.h +diff -p -up moodin/src/magiclabel.cpp.orig moodin/src/magiclabel.cpp +diff -p -up moodin/src/effectwidget.h.orig moodin/src/effectwidget.h +--- moodin/src/effectwidget.h.orig 2008-02-26 17:46:36.000000000 -0300 ++++ moodin/src/effectwidget.h 2008-02-26 17:48:33.000000000 -0300 +@@ -45,10 +45,12 @@ class EffectWidget : public QWidget + void resizeEvent(QResizeEvent *); + void moveEvent(QMoveEvent *); + +- void updateCache(); ++signals: ++ void cacheNeedsUpdate(); + + public slots: + void timerTick(); ++ void updateCache(); + + private: + static QImage *bgImage; +@@ -64,6 +66,7 @@ class EffectWidget : public QWidget + float + beginOpacity, + endOpacity; ++ bool bgUpdated; + }; + + #endif +diff -p -up moodin/src/scaler.h.orig moodin/src/scaler.h +diff -p -up moodin/src/effectwidget.cpp.orig moodin/src/effectwidget.cpp +--- moodin/src/effectwidget.cpp.orig 2008-02-26 17:46:36.000000000 -0300 ++++ moodin/src/effectwidget.cpp 2008-02-26 17:46:40.000000000 -0300 +@@ -34,6 +34,8 @@ EffectWidget::EffectWidget(QWidget* pare + setBackgroundMode(NoBackground); + setBackgroundOrigin(QWidget::ParentOrigin); + updateCache(); ++ ++ bgUpdated = false; + } + + +@@ -157,7 +159,17 @@ void EffectWidget::paintEvent(QPaintEven + + QImage upper = image->copy(); + QImage lower = background.copy(); +- KImageEffect::blendOnLower(upper, lower, KImageEffect::Centered, (currentStep + 1 == totalSteps) ? 1.0 : endOpacity / float(totalSteps) * float(currentStep) + beginOpacity); ++ ++ if ((currentStep + 1 == totalSteps) && !bgUpdated) ++ { ++ bgUpdated = true; ++ KImageEffect::blendOnLower(upper, lower, KImageEffect::Centered, 1.0); ++ QPoint p(mapToGlobal(QPoint(0,0))); ++ bitBlt(bgImage, p.x(), p.y(), &lower, 0, 0, -1, -1, 0); ++ emit cacheNeedsUpdate(); ++ } ++ else ++ KImageEffect::blendOnLower(upper, lower, KImageEffect::Centered, endOpacity / float(totalSteps) * float(currentStep) + beginOpacity); + + bitBlt(this, 0, 0, &lower); + } +diff -p -up moodin/src/scaler.cpp.orig moodin/src/scaler.cpp +--- moodin/src/scaler.cpp.orig 2008-02-26 17:46:36.000000000 -0300 ++++ moodin/src/scaler.cpp 2008-02-26 17:47:44.000000000 -0300 +@@ -15,16 +15,7 @@ + + Scaler::Scaler(QSize baseResolution, QSize targetResolution) + { +- if(mBaseResolution.isValid()) +- { +- mBaseResolution = baseResolution; +- mSvgFile =false; +- } +- else +- { +- mBaseResolution = targetResolution; +- mSvgFile = true; +- } ++ mBaseResolution = baseResolution; + mTargetResolution = targetResolution; + } + +@@ -53,7 +44,7 @@ void Scaler::autoCoords(QPoint* pt, cons + + void Scaler::scaleCoords(QPoint* pt) + { +- if (!mSvgFile && (mBaseResolution == mTargetResolution)) ++ if (mBaseResolution == mTargetResolution) + return; + + int ox = pt->x(); +@@ -104,7 +95,7 @@ bool Scaler::scaleSize(QFont* f) + + bool Scaler::resolutionDiff() + { +- return (mSvgFile || (mBaseResolution != mTargetResolution)); ++ return (mBaseResolution != mTargetResolution); + } + + |