diff --git a/Telegram/Resources/art/background.jpg b/Telegram/Resources/art/background.jpg new file mode 100644 index 000000000..04d57e4db Binary files /dev/null and b/Telegram/Resources/art/background.jpg differ diff --git a/Telegram/Resources/art/bg.jpg b/Telegram/Resources/art/bg.jpg deleted file mode 100644 index 7fa05b3ed..000000000 Binary files a/Telegram/Resources/art/bg.jpg and /dev/null differ diff --git a/Telegram/Resources/qrc/telegram/telegram.qrc b/Telegram/Resources/qrc/telegram/telegram.qrc index 3e60181b1..fb02de99d 100644 --- a/Telegram/Resources/qrc/telegram/telegram.qrc +++ b/Telegram/Resources/qrc/telegram/telegram.qrc @@ -42,7 +42,7 @@ ../../export_html/js/script.js - ../../art/bg.jpg + ../../art/background.jpg ../../art/bg_initial.jpg ../../art/logo_256.png ../../art/logo_256_no_margin.png diff --git a/Telegram/SourceFiles/boxes/background_box.cpp b/Telegram/SourceFiles/boxes/background_box.cpp index 43d06d53a..2ea498f5f 100644 --- a/Telegram/SourceFiles/boxes/background_box.cpp +++ b/Telegram/SourceFiles/boxes/background_box.cpp @@ -239,8 +239,9 @@ void BackgroundBox::Inner::sortPapers() { return std::make_tuple( data.id() == current, night ? data.isDark() : !data.isDark(), - !data.isDefault() && !data.isLocal(), - !data.isDefault() && data.isLocal()); + !data.isDefault() && !Data::IsLegacy1DefaultWallPaper(data), + Data::IsLegacy2DefaultWallPaper(data), + Data::IsLegacy1DefaultWallPaper(data)); }); if (!_papers.empty() && _papers.front().data.id() == current) { _papers.front().data = _papers.front().data.withParamsFrom( @@ -366,6 +367,7 @@ void BackgroundBox::Inner::paintPaper( _check->paint(p, checkLeft, checkTop, width()); } else if (Data::IsCloudWallPaper(paper.data) && !Data::IsDefaultWallPaper(paper.data) + && !Data::IsLegacy2DefaultWallPaper(paper.data) && !v::is_null(over) && (&paper == &_papers[getSelectionIndex(over)])) { const auto deleteSelected = v::is(over); @@ -395,6 +397,7 @@ void BackgroundBox::Inner::mouseMoveEvent(QMouseEvent *e) { } else if (result >= _papers.size()) { return Selection(); } + auto &data = _papers[result].data; const auto deleteLeft = (column + 1) * (width + skip) - st::stickerPanDeleteIconBg.width(); const auto deleteBottom = row * (height + skip) + skip @@ -402,9 +405,10 @@ void BackgroundBox::Inner::mouseMoveEvent(QMouseEvent *e) { const auto currentId = Window::Theme::Background()->id(); const auto inDelete = (x >= deleteLeft) && (y < deleteBottom) - && Data::IsCloudWallPaper(_papers[result].data) - && !Data::IsDefaultWallPaper(_papers[result].data) - && (currentId != _papers[result].data.id()); + && Data::IsCloudWallPaper(data) + && !Data::IsDefaultWallPaper(data) + && !Data::IsLegacy2DefaultWallPaper(data) + && (currentId != data.id()); return (result >= _papers.size()) ? Selection() : inDelete diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 1f0fedb4d..d2f82e73a 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -4155,10 +4155,19 @@ void Session::setWallpapers(const QVector &data, int32 hash) { _wallpapers.push_back(*parsed); } } + + // Put the legacy2 (flowers) wallpaper to the front of the list. + const auto legacy2 = ranges::find_if( + _wallpapers, + Data::IsLegacy2DefaultWallPaper); + if (legacy2 != end(_wallpapers)) { + ranges::rotate(begin(_wallpapers), legacy2, legacy2 + 1); + } + if (ranges::none_of(_wallpapers, Data::IsDefaultWallPaper)) { _wallpapers.push_back(Data::DefaultWallPaper()); _wallpapers.back().setLocalImageAsThumbnail(std::make_shared( - u":/gui/arg/bg.jpg"_q)); + u":/gui/art/background.jpg"_q)); } } diff --git a/Telegram/SourceFiles/data/data_wall_paper.cpp b/Telegram/SourceFiles/data/data_wall_paper.cpp index 49391bf7a..f7e6d203d 100644 --- a/Telegram/SourceFiles/data/data_wall_paper.cpp +++ b/Telegram/SourceFiles/data/data_wall_paper.cpp @@ -28,7 +28,8 @@ constexpr auto kTestingEditorBackground = FromLegacyBackgroundId(-664); constexpr auto kThemeBackground = FromLegacyBackgroundId(-2); constexpr auto kCustomBackground = FromLegacyBackgroundId(-1); constexpr auto kLegacy1DefaultBackground = FromLegacyBackgroundId(0); -constexpr auto kDefaultBackground = 5947530738516623361; +constexpr auto kLegacy2DefaultBackground = 5947530738516623361; +constexpr auto kDefaultBackground = 5778236420632084488; constexpr auto kIncorrectDefaultBackground = FromLegacyBackgroundId(105); quint32 SerializeMaybeColor(std::optional color) { @@ -497,13 +498,17 @@ bool IsLegacy1DefaultWallPaper(const WallPaper &paper) { return (paper.id() == kLegacy1DefaultBackground); } +bool IsLegacy2DefaultWallPaper(const WallPaper &paper) { + return (paper.id() == kLegacy2DefaultBackground) + || (paper.id() == kIncorrectDefaultBackground); +} + WallPaper DefaultWallPaper() { return WallPaper(kDefaultBackground); } bool IsDefaultWallPaper(const WallPaper &paper) { - return (paper.id() == kDefaultBackground) - || (paper.id() == kIncorrectDefaultBackground); + return (paper.id() == kDefaultBackground); } bool IsCloudWallPaper(const WallPaper &paper) { diff --git a/Telegram/SourceFiles/data/data_wall_paper.h b/Telegram/SourceFiles/data/data_wall_paper.h index 72147d02b..994d478b6 100644 --- a/Telegram/SourceFiles/data/data_wall_paper.h +++ b/Telegram/SourceFiles/data/data_wall_paper.h @@ -98,6 +98,7 @@ private: [[nodiscard]] bool IsCustomWallPaper(const WallPaper &paper); [[nodiscard]] WallPaper Legacy1DefaultWallPaper(); [[nodiscard]] bool IsLegacy1DefaultWallPaper(const WallPaper &paper); +[[nodiscard]] bool IsLegacy2DefaultWallPaper(const WallPaper &paper); [[nodiscard]] WallPaper DefaultWallPaper(); [[nodiscard]] bool IsDefaultWallPaper(const WallPaper &paper); [[nodiscard]] bool IsCloudWallPaper(const WallPaper &paper); diff --git a/Telegram/SourceFiles/storage/localstorage.cpp b/Telegram/SourceFiles/storage/localstorage.cpp index 21fd23500..5233f2f9b 100644 --- a/Telegram/SourceFiles/storage/localstorage.cpp +++ b/Telegram/SourceFiles/storage/localstorage.cpp @@ -682,9 +682,10 @@ bool readBackground() { const auto isOldEmptyImage = (bg.stream.status() != QDataStream::Ok); if (isOldEmptyImage || Data::IsLegacy1DefaultWallPaper(*paper) + || (Data::IsLegacy2DefaultWallPaper(*paper) && bg.version < 2008012) || Data::IsDefaultWallPaper(*paper)) { _backgroundCanWrite = false; - if (isOldEmptyImage || bg.version < 8005) { + if (isOldEmptyImage || bg.version < 2008012) { Window::Theme::Background()->set(Data::DefaultWallPaper()); Window::Theme::Background()->setTile(false); } else { diff --git a/Telegram/SourceFiles/window/themes/window_theme.cpp b/Telegram/SourceFiles/window/themes/window_theme.cpp index c47b90d4c..38faedffe 100644 --- a/Telegram/SourceFiles/window/themes/window_theme.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme.cpp @@ -654,7 +654,7 @@ void ChatBackground::set(const Data::WallPaper &paper, QImage image) { || Data::details::IsTestingEditorWallPaper(_paper)) { if (Data::details::IsTestingDefaultWallPaper(_paper) || image.isNull()) { - image.load(qsl(":/gui/art/bg.jpg")); + image.load(qsl(":/gui/art/background.jpg")); setPaper(Data::details::TestingDefaultWallPaper()); } image = validateBackgroundImage(std::move(image)); @@ -671,7 +671,7 @@ void ChatBackground::set(const Data::WallPaper &paper, QImage image) { } else if (Data::IsDefaultWallPaper(_paper) || (!_paper.backgroundColor() && image.isNull())) { setPaper(Data::DefaultWallPaper().withParamsFrom(_paper)); - image.load(qsl(":/gui/art/bg.jpg")); + image.load(qsl(":/gui/art/background.jpg")); } Local::writeBackground( _paper, diff --git a/Telegram/SourceFiles/window/themes/window_theme_preview.cpp b/Telegram/SourceFiles/window/themes/window_theme_preview.cpp index 82c3a7a7f..6a95f356b 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_preview.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_preview.cpp @@ -416,7 +416,7 @@ void Generator::paintHistoryBackground() { if (background.isNull()) { const auto fakePaper = Data::WallPaper(_current.backgroundId); if (Data::IsThemeWallPaper(fakePaper)) { - background.load(qsl(":/gui/art/bg.jpg")); + background.load(qsl(":/gui/art/background.jpg")); tiled = false; } else { background = std::move(_current.backgroundImage);