OSDN Git Service

remove bits for always false condition in QPixmap::scroll()
authorIvailo Monev <xakepa10@gmail.com>
Sat, 5 Feb 2022 21:50:46 +0000 (23:50 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Sat, 5 Feb 2022 21:50:46 +0000 (23:50 +0200)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/gui/image/qpixmap.cpp
src/gui/image/qpixmap_raster.cpp
src/gui/image/qpixmap_raster_p.h
src/gui/image/qpixmap_x11.cpp
src/gui/image/qpixmap_x11_p.h
src/gui/image/qpixmapdata_p.h

index 40a5804..bca28bb 100644 (file)
@@ -351,15 +351,7 @@ void QPixmap::scroll(int dx, int dy, const QRect &rect, QRegion *exposed)
 
     detach();
 
-    if (!data->scroll(dx, dy, src)) {
-        // Fallback
-        QPixmap pix = *this;
-        QPainter painter(&pix);
-        painter.setCompositionMode(QPainter::CompositionMode_Source);
-        painter.drawPixmap(src.translated(dx, dy), *this, src);
-        painter.end();
-        *this = pix;
-    }
+    data->scroll(dx, dy, src);
 
     if (exposed) {
         *exposed += dest;
index 3224176..2214da7 100644 (file)
@@ -134,19 +134,18 @@ void QRasterPixmapData::fromImageReader(QImageReader *imageReader,
     fromImage(image, flags);
 }
 
-// from qwindowsurface.cpp
-extern void qt_scrollRectInImage(QImage *img, const QRect &rect, const QPoint &offset);
-
 void QRasterPixmapData::copy(const QPixmapData *data, const QRect &rect)
 {
     fromImage(data->toImage(rect), Qt::NoOpaqueDetection);
 }
 
-bool QRasterPixmapData::scroll(int dx, int dy, const QRect &rect)
+// from qwindowsurface.cpp
+extern void qt_scrollRectInImage(QImage *img, const QRect &rect, const QPoint &offset);
+
+void QRasterPixmapData::scroll(int dx, int dy, const QRect &rect)
 {
     if (!image.isNull())
         qt_scrollRectInImage(&image, rect, QPoint(dx, dy));
-    return true;
 }
 
 void QRasterPixmapData::fill(const QColor &color)
index b180913..74b49e5 100644 (file)
@@ -51,7 +51,7 @@ public:
     void fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags);
 
     void copy(const QPixmapData *data, const QRect &rect);
-    bool scroll(int dx, int dy, const QRect &rect);
+    void scroll(int dx, int dy, const QRect &rect);
     void fill(const QColor &color);
     void setMask(const QBitmap &mask);
     bool hasAlphaChannel() const;
index b4438b1..667d87e 100644 (file)
@@ -1018,14 +1018,13 @@ void QX11PixmapData::copy(const QPixmapData *data, const QRect &rect)
     }
 }
 
-bool QX11PixmapData::scroll(int dx, int dy, const QRect &rect)
+void QX11PixmapData::scroll(int dx, int dy, const QRect &rect)
 {
     GC gc = XCreateGC(qt_x11Data->display, hd, 0, 0);
     XCopyArea(qt_x11Data->display, hd, hd, gc,
               rect.left(), rect.top(), rect.width(), rect.height(),
               rect.left() + dx, rect.top() + dy);
     XFreeGC(qt_x11Data->display, gc);
-    return true;
 }
 
 #if !defined(QT_NO_XRENDER)
index 6ff92fc..b11f118 100644 (file)
@@ -55,7 +55,7 @@ public:
     void resize(int width, int height);
     void fromImage(const QImage &image, Qt::ImageConversionFlags flags);
     void copy(const QPixmapData *data, const QRect &rect);
-    bool scroll(int dx, int dy, const QRect &rect);
+    void scroll(int dx, int dy, const QRect &rect);
 
     void fill(const QColor &color);
     QBitmap mask() const;
index 6e7c611..041579b 100644 (file)
@@ -68,7 +68,7 @@ public:
                           Qt::ImageConversionFlags flags);
 
     virtual void copy(const QPixmapData *data, const QRect &rect) = 0;
-    virtual bool scroll(int dx, int dy, const QRect &rect) = 0;
+    virtual void scroll(int dx, int dy, const QRect &rect) = 0;
 
     virtual int metric(QPaintDevice::PaintDeviceMetric metric) const = 0;
     virtual void fill(const QColor &color) = 0;