mirror of
https://github.com/Qz3rK/tdesktop.git
synced 2026-07-03 14:15:08 +02:00
Removed workaround in peer QR box by drawing content directly.
This commit is contained in:
@@ -196,7 +196,7 @@ void Paint(
|
||||
|
||||
not_null<Ui::RpWidget*> PrepareQrWidget(
|
||||
not_null<Ui::VerticalLayout*> container,
|
||||
not_null<Ui::RpWidget*> topWidget,
|
||||
std::shared_ptr<Ui::DynamicImage> userpicMedia,
|
||||
rpl::producer<int> fontSizeValue,
|
||||
rpl::producer<bool> userpicToggled,
|
||||
rpl::producer<bool> backgroundToggled,
|
||||
@@ -223,10 +223,11 @@ not_null<Ui::RpWidget*> PrepareQrWidget(
|
||||
bool backgroundToggled = false;
|
||||
};
|
||||
const auto result = Ui::CreateChild<Ui::RpWidget>(divider);
|
||||
topWidget->setParent(result);
|
||||
topWidget->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||
const auto state = result->lifetime().make_state<State>(
|
||||
[=] { result->update(); });
|
||||
userpicMedia->subscribeToUpdates(crl::guard(result, [=] {
|
||||
result->update();
|
||||
}));
|
||||
const auto qrMaxSize = st::boxWideWidth
|
||||
- rect::m::sum::h(st::boxRowPadding)
|
||||
- rect::m::sum::h(st::profileQrBackgroundMargins);
|
||||
@@ -309,9 +310,6 @@ not_null<Ui::RpWidget*> PrepareQrWidget(
|
||||
|
||||
divider->resize(container->width(), result->height());
|
||||
result->moveToLeft((container->width() - result->width()) / 2, 0);
|
||||
topWidget->setVisible(userpicToggled);
|
||||
topWidget->moveToLeft(0, std::numeric_limits<int>::min());
|
||||
topWidget->raise();
|
||||
|
||||
aboutLabel->raise();
|
||||
aboutLabel->moveToLeft(
|
||||
@@ -349,14 +347,14 @@ not_null<Ui::RpWidget*> PrepareQrWidget(
|
||||
return;
|
||||
}
|
||||
const auto photoSize = state->photoSize;
|
||||
const auto top = Ui::GrabWidget(
|
||||
topWidget,
|
||||
QRect(),
|
||||
Qt::transparent).scaled(
|
||||
Size(photoSize * style::DevicePixelRatio()),
|
||||
Qt::IgnoreAspectRatio,
|
||||
Qt::SmoothTransformation);
|
||||
p.drawPixmap((result->width() - photoSize) / 2, -photoSize / 2, top);
|
||||
const auto pixelSize = photoSize * style::DevicePixelRatio();
|
||||
p.drawImage(
|
||||
QRect(
|
||||
(result->width() - photoSize) / 2,
|
||||
-photoSize / 2,
|
||||
photoSize,
|
||||
photoSize),
|
||||
userpicMedia->image(pixelSize));
|
||||
}, result->lifetime());
|
||||
return result;
|
||||
}
|
||||
@@ -471,18 +469,9 @@ void FillPeerQrBox(
|
||||
: (rpl::single(QString()) | rpl::type_erased);
|
||||
};
|
||||
|
||||
const auto userpic = Ui::CreateChild<Ui::RpWidget>(box);
|
||||
const auto userpicSize = st::defaultUserpicButton.photoSize;
|
||||
userpic->resize(Size(userpicSize));
|
||||
const auto userpicMedia = Ui::MakeUserpicThumbnail(peer
|
||||
? peer
|
||||
: controller->session().user().get());
|
||||
userpicMedia->subscribeToUpdates(
|
||||
crl::guard(userpic, [=] { userpic->update(); }));
|
||||
userpic->paintRequest() | rpl::on_next([=] {
|
||||
auto p = QPainter(userpic);
|
||||
p.drawImage(0, 0, userpicMedia->image(userpicSize));
|
||||
}, userpic->lifetime());
|
||||
|
||||
linkValue() | rpl::on_next([=](const QString &link) {
|
||||
if (link.isEmpty()) {
|
||||
@@ -493,10 +482,9 @@ void FillPeerQrBox(
|
||||
}
|
||||
}, box->lifetime());
|
||||
|
||||
userpic->setVisible(peer != nullptr);
|
||||
PrepareQrWidget(
|
||||
box->verticalLayout(),
|
||||
userpic,
|
||||
userpicMedia,
|
||||
state->fontSizeValue.value(),
|
||||
state->userpicToggled.value(),
|
||||
state->backgroundToggled.value(),
|
||||
|
||||
Reference in New Issue
Block a user