Updated TD to 1.8.15

This commit is contained in:
Eric Kotato 2019-10-07 18:38:36 +03:00
commit 7dd3d16d58
16 changed files with 113 additions and 49 deletions

View file

@ -1768,6 +1768,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_restricted_send_inline" = "The admins of this group restricted you from posting inline content here.";
"lng_restricted_send_polls" = "The admins of this group restricted you from posting polls here.";
"lng_restricted_send_message_until" = "The admins of this group restricted you from writing here until {date}, {time}.";
"lng_restricted_send_media_until" = "The admins of this group restricted you from posting media content here until {date}, {time}.";
"lng_restricted_send_stickers_until" = "The admins of this group restricted you from posting stickers here until {date}, {time}.";
"lng_restricted_send_gifs_until" = "The admins of this group restricted you from posting GIFs here until {date}, {time}.";
"lng_restricted_send_inline_until" = "The admins of this group restricted you from posting inline content here until {date}, {time}.";
"lng_restricted_send_polls_until" = "The admins of this group restricted you from posting polls here until {date}, {time}.";
"lng_restricted_send_message_all" = "Writing messages isn't allowed in this group.";
"lng_restricted_send_media_all" = "Posting media content isn't allowed in this group.";
"lng_restricted_send_stickers_all" = "Posting stickers isn't allowed in this group.";

View file

@ -9,7 +9,7 @@
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
ProcessorArchitecture="ARCHITECTURE"
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
Version="1.8.13.0" />
Version="1.8.15.0" />
<Properties>
<DisplayName>Telegram Desktop</DisplayName>
<PublisherDisplayName>Telegram FZ-LLC</PublisherDisplayName>

View file

@ -170,7 +170,7 @@ void AppendFoundEmoji(
const std::vector<LangPackEmoji> &list) {
// It is important that the 'result' won't relocate while inserting.
result.reserve(result.size() + list.size());
const auto alreadyBegin = result.data();
const auto alreadyBegin = begin(result);
const auto alreadyEnd = alreadyBegin + result.size();
auto &&add = ranges::view::all(
@ -204,6 +204,12 @@ void AppendLegacySuggestions(
}
const auto suggestions = GetSuggestions(QStringToUTF16(query));
// It is important that the 'result' won't relocate while inserting.
result.reserve(result.size() + suggestions.size());
const auto alreadyBegin = begin(result);
const auto alreadyEnd = alreadyBegin + result.size();
auto &&add = ranges::view::all(
suggestions
) | ranges::view::transform([](const Suggestion &suggestion) {
@ -214,10 +220,14 @@ void AppendLegacySuggestions(
};
}) | ranges::view::filter([&](const Result &entry) {
const auto i = entry.emoji
? ranges::find(result, entry.emoji, &Result::emoji)
: end(result);
? ranges::find(
alreadyBegin,
alreadyEnd,
entry.emoji,
&Result::emoji)
: alreadyEnd;
return (entry.emoji != nullptr)
&& (i == end(result));
&& (i == alreadyEnd);
});
result.insert(end(result), add.begin(), add.end());
}
@ -593,21 +603,24 @@ std::vector<Result> EmojiKeywords::query(
}
auto result = std::vector<Result>();
for (const auto &[language, item] : _data) {
const auto oldcount = result.size();
const auto list = item->query(normalized, exact);
// It is important that the 'result' won't relocate while inserting.
result.reserve(result.size() + list.size());
const auto alreadyBegin = begin(result);
const auto alreadyEnd = alreadyBegin + result.size();
auto &&add = ranges::view::all(
list
) | ranges::view::filter([&](Result entry) {
// In each item->query() result the list has no duplicates.
// So we need to check only for duplicates between queries.
const auto oldbegin = begin(result);
const auto oldend = oldbegin + oldcount;
const auto i = ranges::find(
oldbegin,
oldend,
alreadyBegin,
alreadyEnd,
entry.emoji,
&Result::emoji);
return (i == oldend);
return (i == alreadyEnd);
});
result.insert(end(result), add.begin(), add.end());
}

View file

@ -15,8 +15,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#define TDESKTOP_ALPHA_VERSION (0ULL)
#endif // TDESKTOP_OFFICIAL_TARGET
constexpr auto AppVersion = 1008013;
constexpr auto AppVersionStr = "1.8.13";
constexpr auto AppVersion = 1008015;
constexpr auto AppVersionStr = "1.8.15";
constexpr auto AppBetaVersion = true;
constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION;
constexpr auto AppKotatoVersion = 1000007;

View file

@ -757,6 +757,38 @@ std::optional<QString> RestrictionError(
using Flag = ChatRestriction;
if (const auto restricted = peer->amRestricted(restriction)) {
const auto all = restricted.isWithEveryone();
const auto channel = peer->asChannel();
if (!all && channel) {
auto restrictedUntil = channel->restrictedUntil();
if (restrictedUntil > 0 && !ChannelData::IsRestrictedForever(restrictedUntil)) {
auto restrictedUntilDateTime = base::unixtime::parse(channel->restrictedUntil());
auto date = restrictedUntilDateTime.toString(qsl("dd.MM.yy"));
auto time = restrictedUntilDateTime.toString(cTimeFormat());
switch (restriction) {
case Flag::f_send_polls:
return tr::lng_restricted_send_polls_until(
tr::now, lt_date, date, lt_time, time);
case Flag::f_send_messages:
return tr::lng_restricted_send_message_until(
tr::now, lt_date, date, lt_time, time);
case Flag::f_send_media:
return tr::lng_restricted_send_media_until(
tr::now, lt_date, date, lt_time, time);
case Flag::f_send_stickers:
return tr::lng_restricted_send_stickers_until(
tr::now, lt_date, date, lt_time, time);
case Flag::f_send_gifs:
return tr::lng_restricted_send_gifs_until(
tr::now, lt_date, date, lt_time, time);
case Flag::f_send_inline:
case Flag::f_send_games:
return tr::lng_restricted_send_inline_until(
tr::now, lt_date, date, lt_time, time);
}
Unexpected("Restriction in Data::RestrictionErrorKey.");
}
}
switch (restriction) {
case Flag::f_send_polls:
return all

View file

@ -3227,7 +3227,7 @@ void HistoryWidget::chooseAttach() {
} else if (const auto error = Data::RestrictionError(
_peer,
ChatRestriction::f_send_media)) {
Ui::Toast::Show(*error);
ShowErrorToast(*error);
return;
} else if (showSlowmodeError()) {
return;

View file

@ -170,7 +170,7 @@ void ScheduledWidget::chooseAttach() {
if (const auto error = Data::RestrictionError(
_history->peer,
ChatRestriction::f_send_media)) {
Ui::Toast::Show(*error);
ShowErrorToast(*error);
return;
}

View file

@ -625,7 +625,7 @@ void Photo::prepareThumbnail(QSize size, QSize frame) const {
}
Video::Video(not_null<Context*> context, Result *result) : FileBase(context, result)
, _link(getResultContentUrlHandler())
, _link(getResultPreviewHandler())
, _title(st::emojiPanWidth - st::emojiScroll.width - st::inlineResultsLeft - st::inlineThumbSize - st::inlineThumbSkip)
, _description(st::emojiPanWidth - st::emojiScroll.width - st::inlineResultsLeft - st::inlineThumbSize - st::inlineThumbSkip) {
if (int duration = content_duration()) {
@ -1057,7 +1057,7 @@ void Contact::prepareThumbnail(int width, int height) const {
Article::Article(not_null<Context*> context, Result *result, bool withThumb) : ItemBase(context, result)
, _url(getResultUrlHandler())
, _link(getResultContentUrlHandler())
, _link(getResultPreviewHandler())
, _withThumb(withThumb)
, _title(st::emojiPanWidth - st::emojiScroll.width - st::inlineResultsLeft - st::inlineThumbSize - st::inlineThumbSkip)
, _description(st::emojiPanWidth - st::emojiScroll.width - st::inlineResultsLeft - st::inlineThumbSize - st::inlineThumbSkip) {

View file

@ -187,11 +187,16 @@ ClickHandlerPtr ItemBase::getResultUrlHandler() const {
return ClickHandlerPtr();
}
ClickHandlerPtr ItemBase::getResultContentUrlHandler() const {
ClickHandlerPtr ItemBase::getResultPreviewHandler() const {
if (!_result->_content_url.isEmpty()) {
return std::make_shared<UrlClickHandler>(
_result->_content_url,
false);
} else if (_result->_document && _result->_document->canBePlayed()) {
return std::make_shared<DocumentOpenClickHandler>(
_result->_document);
} else if (_result->_photo) {
return std::make_shared<PhotoOpenClickHandler>(_result->_photo);
}
return ClickHandlerPtr();
}

View file

@ -103,7 +103,7 @@ protected:
int getResultDuration() const;
QString getResultUrl() const;
ClickHandlerPtr getResultUrlHandler() const;
ClickHandlerPtr getResultContentUrlHandler() const;
ClickHandlerPtr getResultPreviewHandler() const;
QString getResultThumbLetter() const;
not_null<Context*> context() const {

View file

@ -272,9 +272,9 @@ bool Result::onChoose(Layout::ItemBase *layout) {
} else if (_document->loading()) {
_document->cancel();
} else {
_document->save(
DocumentSaveClickHandler::Save(
Data::FileOriginSavedGifs(),
QString());
_document);
}
return false;
}

View file

@ -809,6 +809,7 @@ void MainWidget::hiderLayer(base::unique_qptr<Window::HistoryHider> hider) {
_hider->hidden(
) | rpl::start_with_next([=, instance = _hider.get()] {
clearHider(instance);
instance->hide();
instance->deleteLater();
}, _hider->lifetime());

View file

@ -2358,25 +2358,19 @@ void OverlayWidget::playbackPauseResume() {
Expects(_streamed != nullptr);
_streamed->resumeOnCallEnd = false;
if (const auto item = Auth().data().message(_msgid)) {
if (_streamed->player.failed()) {
clearStreaming();
initStreaming();
} else if (_streamed->player.finished()) {
_streamingStartPaused = false;
restartAtSeekPosition(0);
} else if (_streamed->player.paused()) {
_streamed->player.resume();
updatePlaybackState();
playbackPauseMusic();
} else {
_streamed->player.pause();
updatePlaybackState();
}
} else {
if (_streamed->player.failed()) {
clearStreaming();
updateControls();
update();
initStreaming();
} else if (_streamed->player.finished()) {
_streamingStartPaused = false;
restartAtSeekPosition(0);
} else if (_streamed->player.paused()) {
_streamed->player.resume();
updatePlaybackState();
playbackPauseMusic();
} else {
_streamed->player.pause();
updatePlaybackState();
}
}
@ -3324,7 +3318,7 @@ void OverlayWidget::mousePressEvent(QMouseEvent *e) {
void OverlayWidget::mouseDoubleClickEvent(QMouseEvent *e) {
updateOver(e->pos());
if (_over == OverVideo) {
if (_over == OverVideo && _streamed) {
playbackToggleFullScreen();
playbackPauseResume();
} else {

View file

@ -118,14 +118,18 @@ bool ComputeCheckTilde(const style::TextStyle &st) {
bool chIsBad(QChar ch) {
return (ch == 0)
|| (ch >= 8232 && ch < 8237)
|| (ch >= 65024 && ch < 65040 && ch != 65039)
|| (ch >= 127 && ch < 160 && ch != 156)
|| (ch >= 8232 && ch < 8237)
|| (ch >= 65024 && ch < 65040 && ch != 65039)
|| (ch >= 127 && ch < 160 && ch != 156)
// qt harfbuzz crash see https://github.com/telegramdesktop/tdesktop/issues/4551
|| (Platform::IsMac() && ch == 6158)
// qt harfbuzz crash see https://github.com/telegramdesktop/tdesktop/issues/4551
|| (Platform::IsMac() && ch == 6158)
// tmp hack see https://bugreports.qt.io/browse/QTBUG-48910
|| (Platform::IsMac()
&& !Platform::IsMac10_7OrGreater()
&& (ch == 8207 || ch == 8206 || ch == 8288))
// tmp hack see https://bugreports.qt.io/browse/QTBUG-48910
|| (Platform::IsMac10_11OrGreater()
&& !Platform::IsMac10_12OrGreater()
&& ch >= 0x0B00

View file

@ -1,6 +1,6 @@
AppVersion 1008013
AppVersion 1008015
AppVersionStrMajor 1.8
AppVersionStrSmall 1.8.13
AppVersionStr 1.8.13
AppVersionStrSmall 1.8.15
AppVersionStr 1.8.15
BetaChannel 0
AlphaVersion 0

View file

@ -1,3 +1,11 @@
1.8.15 (07.10.19)
- Bug fixes and other minor improvements.
1.8.14 (03.10.19)
- Bug fixes and other minor improvements.
1.8.13 (03.10.19)
- Bug fixes and other minor improvements.