Updated TDesktop sources to 2.7.3+d984c59
This commit is contained in:
commit
84ba90f037
28 changed files with 188 additions and 92 deletions
9
.github/workflows/win.yml
vendored
9
.github/workflows/win.yml
vendored
|
|
@ -121,6 +121,11 @@ jobs:
|
||||||
- name: Choco installs.
|
- name: Choco installs.
|
||||||
run: choco install --no-progress -y nasm yasm jom ninja
|
run: choco install --no-progress -y nasm yasm jom ninja
|
||||||
|
|
||||||
|
- name: NuGet sources.
|
||||||
|
run: |
|
||||||
|
nuget sources Disable -Name "Microsoft Visual Studio Offline Packages"
|
||||||
|
nuget sources Add -Source https://api.nuget.org/v3/index.json & exit 0
|
||||||
|
|
||||||
- name: Patches.
|
- name: Patches.
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -286,6 +291,10 @@ jobs:
|
||||||
msbuild -m opus.sln /property:Configuration=Debug /property:Platform="Win32"
|
msbuild -m opus.sln /property:Configuration=Debug /property:Platform="Win32"
|
||||||
msbuild -m opus.sln /property:Configuration=Release /property:Platform="Win32"
|
msbuild -m opus.sln /property:Configuration=Release /property:Platform="Win32"
|
||||||
|
|
||||||
|
echo "Workaround for FFmpeg."
|
||||||
|
copy Win32\Release\m.lib Win32\Release\ssp.lib
|
||||||
|
copy Win32\Release\m.lib Win32\Debug\ssp.lib
|
||||||
|
|
||||||
- name: FFmpeg cache.
|
- name: FFmpeg cache.
|
||||||
id: cache-ffmpeg
|
id: cache-ffmpeg
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
|
|
|
||||||
|
|
@ -1910,6 +1910,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_payments_shipping_address_title" = "Shipping Information";
|
"lng_payments_shipping_address_title" = "Shipping Information";
|
||||||
"lng_payments_card_title" = "New Card";
|
"lng_payments_card_title" = "New Card";
|
||||||
"lng_payments_card_number" = "Card Number";
|
"lng_payments_card_number" = "Card Number";
|
||||||
|
"lng_payments_card_cvc" = "CVC";
|
||||||
|
"lng_payments_card_expire_date" = "MM / YY";
|
||||||
"lng_payments_card_holder" = "Cardholder name";
|
"lng_payments_card_holder" = "Cardholder name";
|
||||||
"lng_payments_billing_address" = "Billing Information";
|
"lng_payments_billing_address" = "Billing Information";
|
||||||
"lng_payments_billing_country" = "Country";
|
"lng_payments_billing_country" = "Country";
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
|
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
|
||||||
ProcessorArchitecture="ARCHITECTURE"
|
ProcessorArchitecture="ARCHITECTURE"
|
||||||
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
|
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
|
||||||
Version="2.7.2.0" />
|
Version="2.7.3.0" />
|
||||||
<Properties>
|
<Properties>
|
||||||
<DisplayName>Telegram Desktop</DisplayName>
|
<DisplayName>Telegram Desktop</DisplayName>
|
||||||
<PublisherDisplayName>Telegram Messenger LLP</PublisherDisplayName>
|
<PublisherDisplayName>Telegram Messenger LLP</PublisherDisplayName>
|
||||||
|
|
|
||||||
|
|
@ -44,8 +44,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico"
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 2,7,2,0
|
FILEVERSION 2,7,3,0
|
||||||
PRODUCTVERSION 2,7,2,0
|
PRODUCTVERSION 2,7,3,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
|
@ -62,10 +62,10 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Telegram FZ-LLC"
|
VALUE "CompanyName", "Telegram FZ-LLC"
|
||||||
VALUE "FileDescription", "Telegram Desktop"
|
VALUE "FileDescription", "Telegram Desktop"
|
||||||
VALUE "FileVersion", "2.7.2.0"
|
VALUE "FileVersion", "2.7.3.0"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
|
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
|
||||||
VALUE "ProductName", "Telegram Desktop"
|
VALUE "ProductName", "Telegram Desktop"
|
||||||
VALUE "ProductVersion", "2.7.2.0"
|
VALUE "ProductVersion", "2.7.3.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 2,7,2,0
|
FILEVERSION 2,7,3,0
|
||||||
PRODUCTVERSION 2,7,2,0
|
PRODUCTVERSION 2,7,3,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
|
@ -53,10 +53,10 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Telegram FZ-LLC"
|
VALUE "CompanyName", "Telegram FZ-LLC"
|
||||||
VALUE "FileDescription", "Telegram Desktop Updater"
|
VALUE "FileDescription", "Telegram Desktop Updater"
|
||||||
VALUE "FileVersion", "2.7.2.0"
|
VALUE "FileVersion", "2.7.3.0"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
|
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
|
||||||
VALUE "ProductName", "Telegram Desktop"
|
VALUE "ProductName", "Telegram Desktop"
|
||||||
VALUE "ProductVersion", "2.7.2.0"
|
VALUE "ProductVersion", "2.7.3.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
||||||
|
|
@ -208,6 +208,55 @@ callRemoteAudioMute: FlatLabel(callStatus) {
|
||||||
}
|
}
|
||||||
callRemoteAudioMuteSkip: 12px;
|
callRemoteAudioMuteSkip: 12px;
|
||||||
|
|
||||||
|
callMuteMainBlobMinRadius: 57px;
|
||||||
|
callMuteMainBlobMaxRadius: 63px;
|
||||||
|
callMuteMinorBlobMinRadius: 64px;
|
||||||
|
callMuteMinorBlobMaxRadius: 74px;
|
||||||
|
callMuteMajorBlobMinRadius: 67px;
|
||||||
|
callMuteMajorBlobMaxRadius: 77px;
|
||||||
|
|
||||||
|
callMuteButtonActiveInner: IconButton {
|
||||||
|
width: 136px;
|
||||||
|
height: 165px;
|
||||||
|
}
|
||||||
|
callMuteButtonLabel: FlatLabel(defaultFlatLabel) {
|
||||||
|
textFg: groupCallMembersFg;
|
||||||
|
style: TextStyle(defaultTextStyle) {
|
||||||
|
font: font(14px);
|
||||||
|
linkFont: font(14px);
|
||||||
|
linkFontOver: font(14px underline);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
callMuteButtonSublabel: FlatLabel(defaultFlatLabel) {
|
||||||
|
textFg: groupCallMemberNotJoinedStatus;
|
||||||
|
}
|
||||||
|
callMuteButtonLabelsSkip: 5px;
|
||||||
|
callMuteButtonSublabelSkip: 19px;
|
||||||
|
callMuteButtonActive: CallButton {
|
||||||
|
button: callMuteButtonActiveInner;
|
||||||
|
bg: groupCallLive1;
|
||||||
|
bgSize: 100px;
|
||||||
|
bgPosition: point(18px, 18px);
|
||||||
|
outerRadius: 18px;
|
||||||
|
outerBg: callAnswerBgOuter;
|
||||||
|
label: callMuteButtonLabel;
|
||||||
|
}
|
||||||
|
callMuteButtonMuted: CallButton(callMuteButtonActive) {
|
||||||
|
bg: groupCallMuted1;
|
||||||
|
label: callMuteButtonLabel;
|
||||||
|
}
|
||||||
|
callMuteButtonConnecting: CallButton(callMuteButtonMuted) {
|
||||||
|
bg: callIconBg;
|
||||||
|
label: callMuteButtonLabel;
|
||||||
|
}
|
||||||
|
callMuteButtonLabelAdditional: 5px;
|
||||||
|
|
||||||
|
callConnectingRadial: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
|
||||||
|
color: lightButtonFg;
|
||||||
|
thickness: 4px;
|
||||||
|
size: size(100px, 100px);
|
||||||
|
}
|
||||||
|
|
||||||
callBarHeight: 38px;
|
callBarHeight: 38px;
|
||||||
callBarMuteToggle: IconButton {
|
callBarMuteToggle: IconButton {
|
||||||
width: 41px;
|
width: 41px;
|
||||||
|
|
|
||||||
|
|
@ -269,14 +269,18 @@ GroupCall::~GroupCall() {
|
||||||
destroyController();
|
destroyController();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GroupCall::setScheduledDate(TimeId date) {
|
||||||
|
const auto was = _scheduleDate;
|
||||||
|
_scheduleDate = date;
|
||||||
|
if (was && !date) {
|
||||||
|
join(inputCall());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GroupCall::subscribeToReal(not_null<Data::GroupCall*> real) {
|
void GroupCall::subscribeToReal(not_null<Data::GroupCall*> real) {
|
||||||
real->scheduleDateValue(
|
real->scheduleDateValue(
|
||||||
) | rpl::start_with_next([=](TimeId date) {
|
) | rpl::start_with_next([=](TimeId date) {
|
||||||
const auto was = _scheduleDate;
|
setScheduledDate(date);
|
||||||
_scheduleDate = date;
|
|
||||||
if (was && !date) {
|
|
||||||
join(inputCall());
|
|
||||||
}
|
|
||||||
}, _lifetime);
|
}, _lifetime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -821,11 +825,7 @@ void GroupCall::handlePossibleCreateOrJoinResponse(
|
||||||
|
|
||||||
void GroupCall::handlePossibleCreateOrJoinResponse(
|
void GroupCall::handlePossibleCreateOrJoinResponse(
|
||||||
const MTPDgroupCall &data) {
|
const MTPDgroupCall &data) {
|
||||||
if (const auto date = data.vschedule_date()) {
|
setScheduledDate(data.vschedule_date().value_or_empty());
|
||||||
_scheduleDate = date->v;
|
|
||||||
} else {
|
|
||||||
_scheduleDate = 0;
|
|
||||||
}
|
|
||||||
if (_acceptFields) {
|
if (_acceptFields) {
|
||||||
if (!_instance && !_id) {
|
if (!_instance && !_id) {
|
||||||
const auto input = MTP_inputGroupCall(
|
const auto input = MTP_inputGroupCall(
|
||||||
|
|
|
||||||
|
|
@ -259,6 +259,7 @@ private:
|
||||||
void setJoinAs(not_null<PeerData*> as);
|
void setJoinAs(not_null<PeerData*> as);
|
||||||
void saveDefaultJoinAs(not_null<PeerData*> as);
|
void saveDefaultJoinAs(not_null<PeerData*> as);
|
||||||
void subscribeToReal(not_null<Data::GroupCall*> real);
|
void subscribeToReal(not_null<Data::GroupCall*> real);
|
||||||
|
void setScheduledDate(TimeId date);
|
||||||
|
|
||||||
void audioLevelsUpdated(const tgcalls::GroupLevelsUpdate &data);
|
void audioLevelsUpdated(const tgcalls::GroupLevelsUpdate &data);
|
||||||
void setInstanceConnected(tgcalls::GroupNetworkState networkState);
|
void setInstanceConnected(tgcalls::GroupNetworkState networkState);
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "main/main_app_config.h"
|
#include "main/main_app_config.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
|
#include "facades.h" // Global::ScreenIsLocked.
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
@ -135,6 +136,10 @@ void UiIntegration::startFontsBegin() {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
bool UiIntegration::screenIsLocked() {
|
||||||
|
return Global::ScreenIsLocked();
|
||||||
|
}
|
||||||
|
|
||||||
QString UiIntegration::timeFormat() {
|
QString UiIntegration::timeFormat() {
|
||||||
return cTimeFormat();
|
return cTimeFormat();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ public:
|
||||||
void textActionsUpdated() override;
|
void textActionsUpdated() override;
|
||||||
void activationFromTopPanel() override;
|
void activationFromTopPanel() override;
|
||||||
|
|
||||||
|
bool screenIsLocked() override;
|
||||||
QString timeFormat() override;
|
QString timeFormat() override;
|
||||||
|
|
||||||
std::shared_ptr<ClickHandler> createLinkHandler(
|
std::shared_ptr<ClickHandler> createLinkHandler(
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ constexpr auto AppId = "{C4A4AE8F-B9F7-4CC7-8A6C-BF7EEE87ACA5}"_cs;
|
||||||
constexpr auto AppNameOld = "Telegram Win (Unofficial)"_cs;
|
constexpr auto AppNameOld = "Telegram Win (Unofficial)"_cs;
|
||||||
constexpr auto AppName = "Kotatogram Desktop"_cs;
|
constexpr auto AppName = "Kotatogram Desktop"_cs;
|
||||||
constexpr auto AppFile = "Kotatogram"_cs;
|
constexpr auto AppFile = "Kotatogram"_cs;
|
||||||
constexpr auto AppVersion = 2007002;
|
constexpr auto AppVersion = 2007003;
|
||||||
constexpr auto AppVersionStr = "2.7.2";
|
constexpr auto AppVersionStr = "2.7.3";
|
||||||
constexpr auto AppBetaVersion = false;
|
constexpr auto AppBetaVersion = false;
|
||||||
constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION;
|
constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION;
|
||||||
|
|
|
||||||
|
|
@ -3001,9 +3001,14 @@ void OverlayWidget::switchToPip() {
|
||||||
_streamed->instance.shared(),
|
_streamed->instance.shared(),
|
||||||
closeAndContinue,
|
closeAndContinue,
|
||||||
[=] { _pip = nullptr; });
|
[=] { _pip = nullptr; });
|
||||||
close();
|
if (isHidden()) {
|
||||||
if (const auto window = Core::App().activeWindow()) {
|
clearBeforeHide();
|
||||||
window->activate();
|
clearAfterHide();
|
||||||
|
} else {
|
||||||
|
close();
|
||||||
|
if (const auto window = Core::App().activeWindow()) {
|
||||||
|
window->activate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4369,42 +4374,50 @@ void OverlayWidget::applyHideWindowWorkaround() {
|
||||||
#endif // USE_OPENGL_OVERLAY_WIDGET
|
#endif // USE_OPENGL_OVERLAY_WIDGET
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #TODO unite and check
|
||||||
|
void OverlayWidget::clearBeforeHide() {
|
||||||
|
_sharedMedia = nullptr;
|
||||||
|
_sharedMediaData = std::nullopt;
|
||||||
|
_sharedMediaDataKey = std::nullopt;
|
||||||
|
_userPhotos = nullptr;
|
||||||
|
_userPhotosData = std::nullopt;
|
||||||
|
_collage = nullptr;
|
||||||
|
_collageData = std::nullopt;
|
||||||
|
assignMediaPointer(nullptr);
|
||||||
|
_preloadPhotos.clear();
|
||||||
|
_preloadDocuments.clear();
|
||||||
|
if (_menu) {
|
||||||
|
_menu->hideMenu(true);
|
||||||
|
}
|
||||||
|
_controlsHideTimer.cancel();
|
||||||
|
_controlsState = ControlsShown;
|
||||||
|
_controlsOpacity = anim::value(1, 1);
|
||||||
|
_groupThumbs = nullptr;
|
||||||
|
_groupThumbsRect = QRect();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OverlayWidget::clearAfterHide() {
|
||||||
|
clearStreaming();
|
||||||
|
destroyThemePreview();
|
||||||
|
_radial.stop();
|
||||||
|
_staticContent = QPixmap();
|
||||||
|
_themePreview = nullptr;
|
||||||
|
_themeApply.destroyDelayed();
|
||||||
|
_themeCancel.destroyDelayed();
|
||||||
|
_themeShare.destroyDelayed();
|
||||||
|
}
|
||||||
|
|
||||||
void OverlayWidget::setVisibleHook(bool visible) {
|
void OverlayWidget::setVisibleHook(bool visible) {
|
||||||
if (!visible) {
|
if (!visible) {
|
||||||
applyHideWindowWorkaround();
|
applyHideWindowWorkaround();
|
||||||
_sharedMedia = nullptr;
|
clearBeforeHide();
|
||||||
_sharedMediaData = std::nullopt;
|
|
||||||
_sharedMediaDataKey = std::nullopt;
|
|
||||||
_userPhotos = nullptr;
|
|
||||||
_userPhotosData = std::nullopt;
|
|
||||||
_collage = nullptr;
|
|
||||||
_collageData = std::nullopt;
|
|
||||||
assignMediaPointer(nullptr);
|
|
||||||
_preloadPhotos.clear();
|
|
||||||
_preloadDocuments.clear();
|
|
||||||
if (_menu) {
|
|
||||||
_menu->hideMenu(true);
|
|
||||||
}
|
|
||||||
_controlsHideTimer.cancel();
|
|
||||||
_controlsState = ControlsShown;
|
|
||||||
_controlsOpacity = anim::value(1, 1);
|
|
||||||
_groupThumbs = nullptr;
|
|
||||||
_groupThumbsRect = QRect();
|
|
||||||
}
|
}
|
||||||
OverlayParent::setVisibleHook(visible);
|
OverlayParent::setVisibleHook(visible);
|
||||||
if (visible) {
|
if (visible) {
|
||||||
QCoreApplication::instance()->installEventFilter(this);
|
QCoreApplication::instance()->installEventFilter(this);
|
||||||
} else {
|
} else {
|
||||||
QCoreApplication::instance()->removeEventFilter(this);
|
QCoreApplication::instance()->removeEventFilter(this);
|
||||||
|
clearAfterHide();
|
||||||
clearStreaming();
|
|
||||||
destroyThemePreview();
|
|
||||||
_radial.stop();
|
|
||||||
_staticContent = QPixmap();
|
|
||||||
_themePreview = nullptr;
|
|
||||||
_themeApply.destroyDelayed();
|
|
||||||
_themeCancel.destroyDelayed();
|
|
||||||
_themeShare.destroyDelayed();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -210,6 +210,9 @@ private:
|
||||||
void playbackPauseMusic();
|
void playbackPauseMusic();
|
||||||
void switchToPip();
|
void switchToPip();
|
||||||
|
|
||||||
|
void clearBeforeHide();
|
||||||
|
void clearAfterHide();
|
||||||
|
|
||||||
void assignMediaPointer(DocumentData *document);
|
void assignMediaPointer(DocumentData *document);
|
||||||
void assignMediaPointer(not_null<PhotoData*> photo);
|
void assignMediaPointer(not_null<PhotoData*> photo);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -303,12 +303,12 @@ not_null<RpWidget*> EditCard::setupContent() {
|
||||||
st::paymentsFieldPadding);
|
st::paymentsFieldPadding);
|
||||||
_expire = make(container, {
|
_expire = make(container, {
|
||||||
.type = FieldType::CardExpireDate,
|
.type = FieldType::CardExpireDate,
|
||||||
.placeholder = rpl::single(u"MM / YY"_q),
|
.placeholder = tr::lng_payments_card_expire_date(),
|
||||||
.validator = ExpireDateValidator(),
|
.validator = ExpireDateValidator(),
|
||||||
});
|
});
|
||||||
_cvc = make(container, {
|
_cvc = make(container, {
|
||||||
.type = FieldType::CardCVC,
|
.type = FieldType::CardCVC,
|
||||||
.placeholder = rpl::single(u"CVC"_q),
|
.placeholder = tr::lng_payments_card_cvc(),
|
||||||
.validator = CvcValidator([=] { return _number->value(); }),
|
.validator = CvcValidator([=] { return _number->value(); }),
|
||||||
});
|
});
|
||||||
container->widthValue(
|
container->widthValue(
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,7 @@ void FormSummary::setupControls() {
|
||||||
_1 + _2 < _3));
|
_1 + _2 < _3));
|
||||||
|
|
||||||
rpl::merge(
|
rpl::merge(
|
||||||
_submit->widthValue(),
|
(_submit ? _submit->widthValue() : rpl::single(0)),
|
||||||
_cancel->widthValue()
|
_cancel->widthValue()
|
||||||
) | rpl::skip(2) | rpl::start_with_next([=] {
|
) | rpl::skip(2) | rpl::start_with_next([=] {
|
||||||
updateControlsGeometry();
|
updateControlsGeometry();
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,17 @@ void StartServiceAsync(
|
||||||
try {
|
try {
|
||||||
result(); // get the error if any
|
result(); // get the error if any
|
||||||
} catch (const Glib::Error &e) {
|
} catch (const Glib::Error &e) {
|
||||||
LOG(("Native Notification Error: %1").arg(
|
static const auto NotSupportedErrors = {
|
||||||
QString::fromStdString(e.what())));
|
"org.freedesktop.DBus.Error.ServiceUnknown",
|
||||||
|
};
|
||||||
|
|
||||||
|
const auto errorName =
|
||||||
|
Gio::DBus::ErrorUtils::get_remote_error(e);
|
||||||
|
|
||||||
|
if (!ranges::contains(NotSupportedErrors, errorName)) {
|
||||||
|
LOG(("Native Notification Error: %1").arg(
|
||||||
|
QString::fromStdString(e.what())));
|
||||||
|
}
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
LOG(("Native Notification Error: %1").arg(
|
LOG(("Native Notification Error: %1").arg(
|
||||||
QString::fromStdString(e.what())));
|
QString::fromStdString(e.what())));
|
||||||
|
|
@ -72,9 +81,7 @@ void StartServiceAsync(
|
||||||
cancellable);
|
cancellable);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} catch (const Glib::Error &e) {
|
} catch (...) {
|
||||||
LOG(("Native Notification Error: %1").arg(
|
|
||||||
QString::fromStdString(e.what())));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
crl::on_main([=] { callback(); });
|
crl::on_main([=] { callback(); });
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "core/core_settings.h"
|
#include "core/core_settings.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
|
#include "facades.h" // Global::ScreenIsLocked.
|
||||||
#include "windows_quiethours_h.h"
|
#include "windows_quiethours_h.h"
|
||||||
|
|
||||||
#include <Shobjidl.h>
|
#include <Shobjidl.h>
|
||||||
|
|
@ -798,14 +799,10 @@ bool SkipAudio() {
|
||||||
if (UserNotificationState == QUNS_NOT_PRESENT
|
if (UserNotificationState == QUNS_NOT_PRESENT
|
||||||
|| UserNotificationState == QUNS_PRESENTATION_MODE
|
|| UserNotificationState == QUNS_PRESENTATION_MODE
|
||||||
|| QuietHoursEnabled
|
|| QuietHoursEnabled
|
||||||
|| FocusAssistBlocks) {
|
|| FocusAssistBlocks
|
||||||
|
|| Global::ScreenIsLocked()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (const auto filter = EventFilter::GetInstance()) {
|
|
||||||
if (filter->sessionLoggedOff()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,10 +93,6 @@ EventFilter *EventFilter::CreateInstance(not_null<MainWindow*> window) {
|
||||||
return (instance = new EventFilter(window));
|
return (instance = new EventFilter(window));
|
||||||
}
|
}
|
||||||
|
|
||||||
EventFilter *EventFilter::GetInstance() {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventFilter::Destroy() {
|
void EventFilter::Destroy() {
|
||||||
Expects(instance != nullptr);
|
Expects(instance != nullptr);
|
||||||
|
|
||||||
|
|
@ -240,9 +236,9 @@ bool EventFilter::mainWindowEvent(
|
||||||
|
|
||||||
case WM_WTSSESSION_CHANGE: {
|
case WM_WTSSESSION_CHANGE: {
|
||||||
if (wParam == WTS_SESSION_LOGOFF || wParam == WTS_SESSION_LOCK) {
|
if (wParam == WTS_SESSION_LOGOFF || wParam == WTS_SESSION_LOCK) {
|
||||||
setSessionLoggedOff(true);
|
Global::SetScreenIsLocked(true);
|
||||||
} else if (wParam == WTS_SESSION_LOGON || wParam == WTS_SESSION_UNLOCK) {
|
} else if (wParam == WTS_SESSION_LOGON || wParam == WTS_SESSION_UNLOCK) {
|
||||||
setSessionLoggedOff(false);
|
Global::SetScreenIsLocked(false);
|
||||||
}
|
}
|
||||||
} return false;
|
} return false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,15 +20,7 @@ public:
|
||||||
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
|
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
|
||||||
bool mainWindowEvent(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *result);
|
bool mainWindowEvent(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *result);
|
||||||
|
|
||||||
bool sessionLoggedOff() const {
|
|
||||||
return _sessionLoggedOff;
|
|
||||||
}
|
|
||||||
void setSessionLoggedOff(bool loggedOff) {
|
|
||||||
_sessionLoggedOff = loggedOff;
|
|
||||||
}
|
|
||||||
|
|
||||||
static EventFilter *CreateInstance(not_null<MainWindow*> window);
|
static EventFilter *CreateInstance(not_null<MainWindow*> window);
|
||||||
static EventFilter *GetInstance();
|
|
||||||
static void Destroy();
|
static void Destroy();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -42,7 +34,6 @@ private:
|
||||||
LRESULT *result);
|
LRESULT *result);
|
||||||
|
|
||||||
not_null<MainWindow*> _window;
|
not_null<MainWindow*> _window;
|
||||||
bool _sessionLoggedOff = false;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,10 @@
|
||||||
#include "ui/effects/radial_animation.h"
|
#include "ui/effects/radial_animation.h"
|
||||||
#include "lottie/lottie_icon.h"
|
#include "lottie/lottie_icon.h"
|
||||||
|
|
||||||
|
namespace st {
|
||||||
|
extern const style::InfiniteRadialAnimation &callConnectingRadial;
|
||||||
|
} // namespace st
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
|
|
||||||
class BlobsWidget;
|
class BlobsWidget;
|
||||||
|
|
|
||||||
|
|
@ -578,9 +578,10 @@ void System::updateAll() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Manager::DisplayOptions Manager::GetNotificationOptions(HistoryItem *item) {
|
Manager::DisplayOptions Manager::getNotificationOptions(
|
||||||
|
HistoryItem *item) const {
|
||||||
const auto hideEverything = Core::App().passcodeLocked()
|
const auto hideEverything = Core::App().passcodeLocked()
|
||||||
|| Global::ScreenIsLocked();
|
|| forceHideDetails();
|
||||||
|
|
||||||
const auto view = Core::App().settings().notifyView();
|
const auto view = Core::App().settings().notifyView();
|
||||||
DisplayOptions result;
|
DisplayOptions result;
|
||||||
|
|
@ -704,7 +705,7 @@ void Manager::notificationReplied(
|
||||||
void NativeManager::doShowNotification(
|
void NativeManager::doShowNotification(
|
||||||
not_null<HistoryItem*> item,
|
not_null<HistoryItem*> item,
|
||||||
int forwardedCount) {
|
int forwardedCount) {
|
||||||
const auto options = GetNotificationOptions(item);
|
const auto options = getNotificationOptions(item);
|
||||||
|
|
||||||
const auto peer = item->history()->peer;
|
const auto peer = item->history()->peer;
|
||||||
const auto scheduled = !options.hideNameAndPhoto
|
const auto scheduled = !options.hideNameAndPhoto
|
||||||
|
|
@ -740,6 +741,10 @@ void NativeManager::doShowNotification(
|
||||||
options.hideReplyButton);
|
options.hideReplyButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NativeManager::forceHideDetails() const {
|
||||||
|
return Global::ScreenIsLocked();
|
||||||
|
}
|
||||||
|
|
||||||
System::~System() = default;
|
System::~System() = default;
|
||||||
|
|
||||||
QString WrapFromScheduled(const QString &text) {
|
QString WrapFromScheduled(const QString &text) {
|
||||||
|
|
|
||||||
|
|
@ -193,8 +193,8 @@ public:
|
||||||
bool hideMessageText = false;
|
bool hideMessageText = false;
|
||||||
bool hideReplyButton = false;
|
bool hideReplyButton = false;
|
||||||
};
|
};
|
||||||
[[nodiscard]] static DisplayOptions GetNotificationOptions(
|
[[nodiscard]] DisplayOptions getNotificationOptions(
|
||||||
HistoryItem *item);
|
HistoryItem *item) const;
|
||||||
|
|
||||||
[[nodiscard]] QString addTargetAccountName(
|
[[nodiscard]] QString addTargetAccountName(
|
||||||
const QString &title,
|
const QString &title,
|
||||||
|
|
@ -218,6 +218,9 @@ protected:
|
||||||
virtual void doClearFromItem(not_null<HistoryItem*> item) = 0;
|
virtual void doClearFromItem(not_null<HistoryItem*> item) = 0;
|
||||||
virtual void doClearFromHistory(not_null<History*> history) = 0;
|
virtual void doClearFromHistory(not_null<History*> history) = 0;
|
||||||
virtual void doClearFromSession(not_null<Main::Session*> session) = 0;
|
virtual void doClearFromSession(not_null<Main::Session*> session) = 0;
|
||||||
|
[[nodiscard]] virtual bool forceHideDetails() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
virtual void onBeforeNotificationActivated(NotificationId id) {
|
virtual void onBeforeNotificationActivated(NotificationId id) {
|
||||||
}
|
}
|
||||||
virtual void onAfterNotificationActivated(
|
virtual void onAfterNotificationActivated(
|
||||||
|
|
@ -256,6 +259,8 @@ protected:
|
||||||
not_null<HistoryItem*> item,
|
not_null<HistoryItem*> item,
|
||||||
int forwardedCount) override;
|
int forwardedCount) override;
|
||||||
|
|
||||||
|
bool forceHideDetails() const override;
|
||||||
|
|
||||||
virtual void doShowNativeNotification(
|
virtual void doShowNativeNotification(
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
std::shared_ptr<Data::CloudImageView> &userpicView,
|
std::shared_ptr<Data::CloudImageView> &userpicView,
|
||||||
|
|
|
||||||
|
|
@ -725,7 +725,7 @@ void Notification::actionsOpacityCallback() {
|
||||||
void Notification::updateNotifyDisplay() {
|
void Notification::updateNotifyDisplay() {
|
||||||
if (!_history || (!_item && _forwardedCount < 2)) return;
|
if (!_history || (!_item && _forwardedCount < 2)) return;
|
||||||
|
|
||||||
const auto options = Manager::GetNotificationOptions(_item);
|
const auto options = manager()->getNotificationOptions(_item);
|
||||||
_hideReplyButton = options.hideReplyButton;
|
_hideReplyButton = options.hideReplyButton;
|
||||||
|
|
||||||
int32 w = width(), h = height();
|
int32 w = width(), h = height();
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
AppVersion 2007002
|
AppVersion 2007003
|
||||||
AppVersionStrMajor 2.7
|
AppVersionStrMajor 2.7
|
||||||
AppVersionStrSmall 2.7.2
|
AppVersionStrSmall 2.7.3
|
||||||
AppVersionStr 2.7.2
|
AppVersionStr 2.7.3
|
||||||
BetaChannel 0
|
BetaChannel 0
|
||||||
AlphaVersion 0
|
AlphaVersion 0
|
||||||
AppVersionOriginal 2.7.2
|
AppVersionOriginal 2.7.3
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 99dd340df02ac896c2238d4d9f23a86e163f2e02
|
Subproject commit f013f994d96e1924e46d88f5c92524ce5d7b4262
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 545a79203336b5b19bd3493d9fc18b54efa126b3
|
Subproject commit 0710f40dd1d6486c518d6e193a1b7d7a4f5c7a06
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
|
2.7.3 (27.04.21)
|
||||||
|
|
||||||
|
- Fix crash on some versions of Linux.
|
||||||
|
- Fix video not stopping when PiP window is closed.
|
||||||
|
- Fix messages marking as read if the Windows session is locked.
|
||||||
|
|
||||||
2.7.2 (26.04.21)
|
2.7.2 (26.04.21)
|
||||||
|
|
||||||
- Offer real goods and services for sale in any group, channel or bot – Telegram doesn't charge a commission.
|
- Offer real goods and services for sale in any group, channel or bot – Telegram doesn't charge a commission.
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,8 @@ layout:
|
||||||
bind: $SNAP/usr/share/alsa
|
bind: $SNAP/usr/share/alsa
|
||||||
/usr/share/X11:
|
/usr/share/X11:
|
||||||
bind: $SNAP/usr/share/X11
|
bind: $SNAP/usr/share/X11
|
||||||
|
/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0:
|
||||||
|
bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0
|
||||||
|
|
||||||
parts:
|
parts:
|
||||||
kotatogram:
|
kotatogram:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue