summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksei Nikiforov <darktemplar@basealt.ru>2018-11-07 17:48:06 +0300
committerKatarina Behrens <Katarina.Behrens@cib.de>2018-11-16 10:43:27 +0100
commit5edc23dbc53773536265fd6a54319d9cd1cd9e99 (patch)
tree01f7dd2a23e74ad8e0421f70f60bdc0980f90d07
parent84a0496de8300e4e7febb0f30862d8c5f9a1472e (diff)
tdf#120777 KDE5: Update initialization of QImages
Make sure that created empty QImages are filled with transparent pixels. Copying data from previous QImage on widget resize removes blanking on window resize when qt5 vcl plugin is used. Change-Id: If072a4b8b334bc87dbe4aaea9aa8774bb5e202ee Reviewed-on: https://gerrit.libreoffice.org/63029 Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de> Tested-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--vcl/qt5/Qt5Bitmap.cxx3
-rw-r--r--vcl/qt5/Qt5Frame.cxx1
-rw-r--r--vcl/qt5/Qt5VirtualDevice.cxx1
-rw-r--r--vcl/qt5/Qt5Widget.cxx12
4 files changed, 15 insertions, 2 deletions
diff --git a/vcl/qt5/Qt5Bitmap.cxx b/vcl/qt5/Qt5Bitmap.cxx
index eb2037c214c8..defd0280ac24 100644
--- a/vcl/qt5/Qt5Bitmap.cxx
+++ b/vcl/qt5/Qt5Bitmap.cxx
@@ -63,6 +63,7 @@ bool Qt5Bitmap::Create(const Size& rSize, sal_uInt16 nBitCount, const BitmapPale
else
{
m_pImage.reset(new QImage(toQSize(rSize), getBitFormat(nBitCount)));
+ m_pImage->fill(Qt::transparent);
m_pBuffer.reset();
}
m_aPalette = rPal;
@@ -129,7 +130,7 @@ bool Qt5Bitmap::Create(const SalBitmap& rSalBmp, sal_uInt16 nNewBitCount)
// convert 4bit indexed palette to 32bit ARGB
m_pImage.reset(new QImage(pBitmap->m_aSize.Width(), pBitmap->m_aSize.Height(),
getBitFormat(nNewBitCount)));
- m_pImage->fill(0);
+ m_pImage->fill(Qt::transparent);
// prepare a whole palette
const BitmapPalette& rPal = pBitmap->m_aPalette;
diff --git a/vcl/qt5/Qt5Frame.cxx b/vcl/qt5/Qt5Frame.cxx
index f6428af8b91c..ad043ebd3ab8 100644
--- a/vcl/qt5/Qt5Frame.cxx
+++ b/vcl/qt5/Qt5Frame.cxx
@@ -211,6 +211,7 @@ SalGraphics* Qt5Frame::AcquireGraphics()
{
m_pQt5Graphics.reset(new Qt5Graphics(this));
m_pQImage.reset(new QImage(m_pQWidget->size(), Qt5_DefaultFormat32));
+ m_pQImage->fill(Qt::transparent);
m_pQt5Graphics->ChangeQImage(m_pQImage.get());
}
return m_pQt5Graphics.get();
diff --git a/vcl/qt5/Qt5VirtualDevice.cxx b/vcl/qt5/Qt5VirtualDevice.cxx
index a26ec627bea5..f1c7d9606c8f 100644
--- a/vcl/qt5/Qt5VirtualDevice.cxx
+++ b/vcl/qt5/Qt5VirtualDevice.cxx
@@ -76,6 +76,7 @@ bool Qt5VirtualDevice::SetSizeUsingBuffer(long nNewDX, long nNewDY, sal_uInt8* p
m_pImage.reset(new QImage(nNewDX, nNewDY, Qt5_DefaultFormat32));
}
+ m_pImage->fill(Qt::transparent);
m_pImage->setDevicePixelRatio(m_fScale);
// update device in existing graphics
diff --git a/vcl/qt5/Qt5Widget.cxx b/vcl/qt5/Qt5Widget.cxx
index 9edb7d15f89f..1c032e2a75ce 100644
--- a/vcl/qt5/Qt5Widget.cxx
+++ b/vcl/qt5/Qt5Widget.cxx
@@ -86,7 +86,17 @@ void Qt5Widget::resizeEvent(QResizeEvent* pEvent)
}
else
{
- QImage* pImage = new QImage(size(), Qt5_DefaultFormat32);
+ QImage* pImage = nullptr;
+
+ if (m_pFrame->m_pQImage)
+ pImage = new QImage(
+ m_pFrame->m_pQImage->copy(0, 0, pEvent->size().width(), pEvent->size().height()));
+ else
+ {
+ pImage = new QImage(size(), Qt5_DefaultFormat32);
+ pImage->fill(Qt::transparent);
+ }
+
m_pFrame->m_pQt5Graphics->ChangeQImage(pImage);
m_pFrame->m_pQImage.reset(pImage);
}