mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-04-18 13:16:28 +00:00
Fix delayed pattern-with-negative-intensity appearance.
This commit is contained in:
parent
7f20cc7b44
commit
e492bbb883
@ -124,6 +124,9 @@ constexpr auto kMinAcceptableContrast = 1.14;// 4.5;
|
||||
QImage::Format_ARGB32_Premultiplied),
|
||||
.gradient = gradient,
|
||||
.area = request.area,
|
||||
.waitingForNegativePattern = (request.background.isPattern
|
||||
&& request.background.prepared.isNull()
|
||||
&& request.background.patternOpacity < 0.)
|
||||
};
|
||||
} else {
|
||||
const auto rects = ComputeChatBackgroundRects(
|
||||
@ -206,7 +209,8 @@ CachedBackground::CachedBackground(CacheBackgroundResult &&result)
|
||||
: pixmap(PixmapFromImage(std::move(result.image)))
|
||||
, area(result.area)
|
||||
, x(result.x)
|
||||
, y(result.y) {
|
||||
, y(result.y)
|
||||
, waitingForNegativePattern(result.waitingForNegativePattern) {
|
||||
}
|
||||
|
||||
ChatTheme::ChatTheme() {
|
||||
|
@ -79,6 +79,7 @@ struct CacheBackgroundResult {
|
||||
QSize area;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
bool waitingForNegativePattern = false;
|
||||
};
|
||||
|
||||
struct CachedBackground {
|
||||
@ -89,6 +90,7 @@ struct CachedBackground {
|
||||
QSize area;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
bool waitingForNegativePattern = false;
|
||||
};
|
||||
|
||||
struct BackgroundState {
|
||||
|
@ -191,7 +191,11 @@ void SectionWidget::PaintBackground(
|
||||
const auto to = QRect(
|
||||
QPoint(cache.x, fromy + cache.y),
|
||||
cache.pixmap.size() / cIntRetinaFactor());
|
||||
if (cache.area == fill) {
|
||||
if (cache.waitingForNegativePattern) {
|
||||
// While we wait for pattern being loaded we paint just gradient.
|
||||
// But in case of negative patter opacity we just fill-black.
|
||||
p.fillRect(to, Qt::black);
|
||||
} else if (cache.area == fill) {
|
||||
p.drawPixmap(to, cache.pixmap);
|
||||
} else {
|
||||
const auto sx = fill.width() / float64(cache.area.width());
|
||||
|
Loading…
Reference in New Issue
Block a user