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())); + st::defaultUserpicButton.size.height()));
using ColoredMiniStars = Ui::Premium::ColoredMiniStars; 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>( const auto userpic = Ui::CreateChild<Ui::UserpicButton>(
top, top,

View File

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

View File

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

View File

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

View File

@ -16,7 +16,8 @@ namespace Premium {
class ColoredMiniStars final { class ColoredMiniStars final {
public: 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 setSize(const QSize &size);
void setPosition(QPoint position); void setPosition(QPoint position);

View File

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

View File

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