← Back to team overview

ubuntu-sdk-team team mailing list archive

[Merge] lp:~aacid/ubuntu-ui-toolkit/fix-borderimage-regression into lp:ubuntu-ui-toolkit/staging

 

Albert Astals Cid has proposed merging lp:~aacid/ubuntu-ui-toolkit/fix-borderimage-regression into lp:ubuntu-ui-toolkit/staging.

Commit message:
Fix regression that broke BorderImage


Requested reviews:
  ubuntu-sdk-build-bot (ubuntu-sdk-build-bot): continuous-integration
  Ubuntu SDK team (ubuntu-sdk-team)
Related bugs:
  Bug #1671449 in Canonical System Image: "Unity8 window shadows have gone missing"
  https://bugs.launchpad.net/canonical-devices-system-image/+bug/1671449

For more details, see:
https://code.launchpad.net/~aacid/ubuntu-ui-toolkit/fix-borderimage-regression/+merge/319556

Sorry :/
-- 
Your team Ubuntu SDK team is requested to review the proposed merge of lp:~aacid/ubuntu-ui-toolkit/fix-borderimage-regression into lp:ubuntu-ui-toolkit/staging.
=== modified file 'src/UbuntuToolkit/ucqquickimageextension.cpp'
--- src/UbuntuToolkit/ucqquickimageextension.cpp	2017-02-06 13:20:30 +0000
+++ src/UbuntuToolkit/ucqquickimageextension.cpp	2017-03-10 12:04:49 +0000
@@ -86,19 +86,23 @@
             // This way if the Image {} has a sourceSize set the lambda gets called because of it
             // and if there's no sourceSize set the lambda gets called because we registered the finalize callback
 
-            connect(m_image, &QQuickImageBase::sourceSizeChanged,
-                             this,
-                             [&] {
-                                 QObject::disconnect(m_image, &QQuickImageBase::sourceSizeChanged, this, nullptr);
-                                 reloadSource();
-                            });
-
+            // WARNING do not convert this to a "modern-style" connect, i.e. &QQuickImageBase::sourceSizeChanged,
+            // it will break if m_image is a QQuickBorderImage since it redeclares the sourceSizeChanged
+            // See https://codereview.qt-project.org/#/c/187967/
+            connect(m_image, SIGNAL(sourceSizeChanged()), this, SLOT(onSourceSizeChanged()));
             QQmlEnginePrivate *engPriv = QQmlEnginePrivate::get(qmlEngine(m_image));
             engPriv->registerFinalizeCallback(m_image, m_image->metaObject()->indexOfSignal("sourceSizeChanged()"));
         }
     }
 }
 
+void UCQQuickImageExtension::onSourceSizeChanged()
+{
+    // See WARNING above
+    QObject::disconnect(m_image, SIGNAL(sourceSizeChanged()), this, SLOT(onSourceSizeChanged()));
+    reloadSource();
+}
+
 void UCQQuickImageExtension::reloadSource()
 {
     if (!m_image) {

=== modified file 'src/UbuntuToolkit/ucqquickimageextension_p.h'
--- src/UbuntuToolkit/ucqquickimageextension_p.h	2017-02-06 10:52:06 +0000
+++ src/UbuntuToolkit/ucqquickimageextension_p.h	2017-03-10 12:04:49 +0000
@@ -49,6 +49,7 @@
 
 protected Q_SLOTS:
     void reloadSource();
+    void onSourceSizeChanged();
 
 protected:
     bool rewriteSciFile(const QString &sciFilePath, const QString &scaleFactor, QTextStream& output);