summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-02-10 15:43:15 +0100
committerMarc Mutz <marc.mutz@kdab.com>2016-02-12 18:29:46 +0000
commitd06b4ca9a1a9baf3faa83a8b0c467fa660920efd (patch)
tree2f98c3f6e3ae4d292e4a56c7532b0db8cf45d4b3
parent22d075fef0ed2a52283bbe5b41be83be028c899a (diff)
QBitmap: restore nothrow move special members
The user-defined dtor inhibits the move special member functions. We cannot do something about it in Qt 5, because the class is exported (which it shouldn't be), and because it's polymorphic (which it also shouldn't be), so we need to supply all the missing member functions manually. Add a note to remove the inheritance from QPixmap in Qt 6. Change-Id: I86a1a3fe7b84247b3e604cb008aa17bb673c8468 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
-rw-r--r--src/gui/image/qbitmap.cpp4
-rw-r--r--src/gui/image/qbitmap.h7
2 files changed, 11 insertions, 0 deletions
diff --git a/src/gui/image/qbitmap.cpp b/src/gui/image/qbitmap.cpp
index 54a4dc646b..e8405a6d11 100644
--- a/src/gui/image/qbitmap.cpp
+++ b/src/gui/image/qbitmap.cpp
@@ -196,6 +196,8 @@ QBitmap &QBitmap::operator=(const QPixmap &pixmap)
return *this;
}
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+
/*!
Destroys the bitmap.
*/
@@ -203,6 +205,8 @@ QBitmap::~QBitmap()
{
}
+#endif
+
/*!
\fn void QBitmap::swap(QBitmap &other)
\since 4.8
diff --git a/src/gui/image/qbitmap.h b/src/gui/image/qbitmap.h
index 878aeaafa3..68727e74b5 100644
--- a/src/gui/image/qbitmap.h
+++ b/src/gui/image/qbitmap.h
@@ -55,7 +55,14 @@ public:
QBitmap(int w, int h);
explicit QBitmap(const QSize &);
explicit QBitmap(const QString &fileName, const char *format = Q_NULLPTR);
+ // ### Qt 6: don't inherit QPixmap
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ QBitmap(const QBitmap &other) : QPixmap(other) {}
+ // QBitmap(QBitmap &&other) : QPixmap(std::move(other)) {} // QPixmap doesn't, yet, have a move ctor
+ QBitmap &operator=(const QBitmap &other) { QPixmap::operator=(other); return *this; }
+ QBitmap &operator=(QBitmap &&other) Q_DECL_NOTHROW { QPixmap::operator=(std::move(other)); return *this; }
~QBitmap();
+#endif
QBitmap &operator=(const QPixmap &);
inline void swap(QBitmap &other) { QPixmap::swap(other); } // prevent QBitmap<->QPixmap swaps