Added ability to paint non-optimized ministars to fix possible glitches.

This commit is contained in:
23rd 2023-11-07 20:06:52 +03:00
parent 49d5cf939c
commit 6ca777102c
7 changed files with 21 additions and 11 deletions

View File

@ -95,7 +95,7 @@ void GiftBox(
+ st::defaultUserpicButton.size.height()));
using ColoredMiniStars = Ui::Premium::ColoredMiniStars;
const auto stars = box->lifetime().make_state<ColoredMiniStars>(top);
const auto stars = box->lifetime().make_state<ColoredMiniStars>(top, true);
const auto userpic = Ui::CreateChild<Ui::UserpicButton>(
top,

View File

@ -171,7 +171,8 @@ void AddPremiumTopBarWithDefaultTitleBar(
nullptr,
tr::lng_giveaway_new_title(),
tr::lng_giveaway_new_about(Ui::Text::RichLangValue),
true);
true,
false);
bar->setAttribute(Qt::WA_TransparentForMouseEvents);
box->addRow(

View File

@ -523,7 +523,7 @@ TopBarUser::TopBarUser(
, _content(this)
, _title(_content, st::settingsPremiumUserTitle)
, _about(_content, st::userPremiumCover.about)
, _ministars(_content)
, _ministars(_content, true)
, _smallTop({
.widget = object_ptr<Ui::RpWidget>(this),
.text = Ui::Text::String(

View File

@ -13,10 +13,16 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Ui {
namespace Premium {
ColoredMiniStars::ColoredMiniStars(not_null<Ui::RpWidget*> parent)
: _ministars([=](const QRect &r) {
parent->update(r.translated(_position));
}, true) {
ColoredMiniStars::ColoredMiniStars(
not_null<Ui::RpWidget*> parent,
bool optimizeUpdate)
: _ministars(
optimizeUpdate
? Fn<void(const QRect &)>([=](const QRect &r) {
parent->update(r.translated(_position));
})
: Fn<void(const QRect &)>([=](const QRect &) { parent->update(); }),
true) {
}
void ColoredMiniStars::setSize(const QSize &size) {

View File

@ -16,7 +16,8 @@ namespace Premium {
class ColoredMiniStars final {
public:
ColoredMiniStars(not_null<Ui::RpWidget*> parent);
// optimizeUpdate may cause paint glitch.
ColoredMiniStars(not_null<Ui::RpWidget*> parent, bool optimizeUpdate);
void setSize(const QSize &size);
void setPosition(QPoint position);

View File

@ -155,13 +155,14 @@ TopBar::TopBar(
Fn<QVariant()> clickContextOther,
rpl::producer<QString> title,
rpl::producer<TextWithEntities> about,
bool light)
bool light,
bool optimizeMinistars)
: TopBarAbstract(parent, st)
, _light(light)
, _titleFont(st.titleFont)
, _titlePadding(st.titlePadding)
, _about(this, std::move(about), st.about)
, _ministars(this) {
, _ministars(this, optimizeMinistars) {
std::move(
title
) | rpl::start_with_next([=](QString text) {

View File

@ -72,7 +72,8 @@ public:
Fn<QVariant()> clickContextOther,
rpl::producer<QString> title,
rpl::producer<TextWithEntities> about,
bool light = false);
bool light = false,
bool optimizeMinistars = true);
~TopBar();
void setPaused(bool paused) override;