Compare commits

..

7 Commits

Author SHA1 Message Date
John Preston
3808874da0 Version 2.7.3.
- 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.
2021-04-27 14:15:25 +04:00
John Preston
3be8521b9a Fix 'Start Now' in scheduled voice chats. 2021-04-27 14:15:25 +04:00
John Preston
9fb72e1c3e Add 'MM / YY' and 'CVC' to langpack. 2021-04-27 14:15:25 +04:00
John Preston
e26e666135 Hide native notification details on lock screen. 2021-04-27 13:51:52 +04:00
John Preston
e9196bbbb5 Fix closing PiP that was opened without media viewer.
Fixes #16193.
2021-04-27 13:31:51 +04:00
John Preston
819ce06dfb Don't mark messages as read when screen is locked. 2021-04-27 13:31:51 +04:00
John Preston
da1168fb00 Fix crash on Linux.
Fixes #16198.
2021-04-27 13:12:04 +04:00
24 changed files with 164 additions and 86 deletions

View File

@@ -1908,6 +1908,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_payments_shipping_address_title" = "Shipping Information";
"lng_payments_card_title" = "New Card";
"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_billing_address" = "Billing Information";
"lng_payments_billing_country" = "Country";

View File

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

View File

@@ -44,8 +44,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,7,2,0
PRODUCTVERSION 2,7,2,0
FILEVERSION 2,7,3,0
PRODUCTVERSION 2,7,3,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -62,10 +62,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Telegram FZ-LLC"
VALUE "FileDescription", "Telegram Desktop"
VALUE "FileVersion", "2.7.2.0"
VALUE "FileVersion", "2.7.3.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "2.7.2.0"
VALUE "ProductVersion", "2.7.3.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -35,8 +35,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,7,2,0
PRODUCTVERSION 2,7,2,0
FILEVERSION 2,7,3,0
PRODUCTVERSION 2,7,3,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -53,10 +53,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Telegram FZ-LLC"
VALUE "FileDescription", "Telegram Desktop Updater"
VALUE "FileVersion", "2.7.2.0"
VALUE "FileVersion", "2.7.3.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "2.7.2.0"
VALUE "ProductVersion", "2.7.3.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -208,6 +208,55 @@ callRemoteAudioMute: FlatLabel(callStatus) {
}
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;
callBarMuteToggle: IconButton {
width: 41px;

View File

@@ -269,14 +269,18 @@ GroupCall::~GroupCall() {
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) {
real->scheduleDateValue(
) | rpl::start_with_next([=](TimeId date) {
const auto was = _scheduleDate;
_scheduleDate = date;
if (was && !date) {
join(inputCall());
}
setScheduledDate(date);
}, _lifetime);
}
@@ -821,11 +825,7 @@ void GroupCall::handlePossibleCreateOrJoinResponse(
void GroupCall::handlePossibleCreateOrJoinResponse(
const MTPDgroupCall &data) {
if (const auto date = data.vschedule_date()) {
_scheduleDate = date->v;
} else {
_scheduleDate = 0;
}
setScheduledDate(data.vschedule_date().value_or_empty());
if (_acceptFields) {
if (!_instance && !_id) {
const auto input = MTP_inputGroupCall(

View File

@@ -259,6 +259,7 @@ private:
void setJoinAs(not_null<PeerData*> as);
void saveDefaultJoinAs(not_null<PeerData*> as);
void subscribeToReal(not_null<Data::GroupCall*> real);
void setScheduledDate(TimeId date);
void audioLevelsUpdated(const tgcalls::GroupLevelsUpdate &data);
void setInstanceConnected(tgcalls::GroupNetworkState networkState);

View File

@@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "main/main_app_config.h"
#include "mainwindow.h"
#include "facades.h" // Global::ScreenIsLocked.
namespace Core {
namespace {
@@ -112,6 +113,10 @@ void UiIntegration::activationFromTopPanel() {
Platform::IgnoreApplicationActivationRightNow();
}
bool UiIntegration::screenIsLocked() {
return Global::ScreenIsLocked();
}
QString UiIntegration::timeFormat() {
return cTimeFormat();
}

View File

@@ -41,6 +41,7 @@ public:
void textActionsUpdated() override;
void activationFromTopPanel() override;
bool screenIsLocked() override;
QString timeFormat() override;
std::shared_ptr<ClickHandler> createLinkHandler(

View File

@@ -22,7 +22,7 @@ constexpr auto AppId = "{53F49750-6209-4FBF-9CA8-7A333C87D1ED}"_cs;
constexpr auto AppNameOld = "Telegram Win (Unofficial)"_cs;
constexpr auto AppName = "Telegram Desktop"_cs;
constexpr auto AppFile = "Telegram"_cs;
constexpr auto AppVersion = 2007002;
constexpr auto AppVersionStr = "2.7.2";
constexpr auto AppVersion = 2007003;
constexpr auto AppVersionStr = "2.7.3";
constexpr auto AppBetaVersion = false;
constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION;

View File

@@ -2999,9 +2999,14 @@ void OverlayWidget::switchToPip() {
_streamed->instance.shared(),
closeAndContinue,
[=] { _pip = nullptr; });
close();
if (const auto window = Core::App().activeWindow()) {
window->activate();
if (isHidden()) {
clearBeforeHide();
clearAfterHide();
} else {
close();
if (const auto window = Core::App().activeWindow()) {
window->activate();
}
}
}
@@ -4365,42 +4370,50 @@ void OverlayWidget::applyHideWindowWorkaround() {
#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) {
if (!visible) {
applyHideWindowWorkaround();
_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();
clearBeforeHide();
}
OverlayParent::setVisibleHook(visible);
if (visible) {
QCoreApplication::instance()->installEventFilter(this);
} else {
QCoreApplication::instance()->removeEventFilter(this);
clearStreaming();
destroyThemePreview();
_radial.stop();
_staticContent = QPixmap();
_themePreview = nullptr;
_themeApply.destroyDelayed();
_themeCancel.destroyDelayed();
_themeShare.destroyDelayed();
clearAfterHide();
}
}

View File

@@ -210,6 +210,9 @@ private:
void playbackPauseMusic();
void switchToPip();
void clearBeforeHide();
void clearAfterHide();
void assignMediaPointer(DocumentData *document);
void assignMediaPointer(not_null<PhotoData*> photo);

View File

@@ -303,12 +303,12 @@ not_null<RpWidget*> EditCard::setupContent() {
st::paymentsFieldPadding);
_expire = make(container, {
.type = FieldType::CardExpireDate,
.placeholder = rpl::single(u"MM / YY"_q),
.placeholder = tr::lng_payments_card_expire_date(),
.validator = ExpireDateValidator(),
});
_cvc = make(container, {
.type = FieldType::CardCVC,
.placeholder = rpl::single(u"CVC"_q),
.placeholder = tr::lng_payments_card_cvc(),
.validator = CvcValidator([=] { return _number->value(); }),
});
container->widthValue(

View File

@@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/core_settings.h"
#include "main/main_session.h"
#include "mainwindow.h"
#include "facades.h" // Global::ScreenIsLocked.
#include "windows_quiethours_h.h"
#include <Shobjidl.h>
@@ -798,14 +799,10 @@ bool SkipAudio() {
if (UserNotificationState == QUNS_NOT_PRESENT
|| UserNotificationState == QUNS_PRESENTATION_MODE
|| QuietHoursEnabled
|| FocusAssistBlocks) {
|| FocusAssistBlocks
|| Global::ScreenIsLocked()) {
return true;
}
if (const auto filter = EventFilter::GetInstance()) {
if (filter->sessionLoggedOff()) {
return true;
}
}
return false;
}

View File

@@ -93,10 +93,6 @@ EventFilter *EventFilter::CreateInstance(not_null<MainWindow*> window) {
return (instance = new EventFilter(window));
}
EventFilter *EventFilter::GetInstance() {
return instance;
}
void EventFilter::Destroy() {
Expects(instance != nullptr);
@@ -240,9 +236,9 @@ bool EventFilter::mainWindowEvent(
case WM_WTSSESSION_CHANGE: {
if (wParam == WTS_SESSION_LOGOFF || wParam == WTS_SESSION_LOCK) {
setSessionLoggedOff(true);
Global::SetScreenIsLocked(true);
} else if (wParam == WTS_SESSION_LOGON || wParam == WTS_SESSION_UNLOCK) {
setSessionLoggedOff(false);
Global::SetScreenIsLocked(false);
}
} return false;

View File

@@ -20,15 +20,7 @@ public:
bool nativeEventFilter(const QByteArray &eventType, void *message, long *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 *GetInstance();
static void Destroy();
private:
@@ -42,7 +34,6 @@ private:
LRESULT *result);
not_null<MainWindow*> _window;
bool _sessionLoggedOff = false;
};

View File

@@ -13,6 +13,10 @@
#include "ui/effects/radial_animation.h"
#include "lottie/lottie_icon.h"
namespace st {
extern const style::InfiniteRadialAnimation &callConnectingRadial;
} // namespace st
namespace Ui {
class BlobsWidget;

View File

@@ -576,9 +576,10 @@ void System::updateAll() {
}
}
Manager::DisplayOptions Manager::GetNotificationOptions(HistoryItem *item) {
Manager::DisplayOptions Manager::getNotificationOptions(
HistoryItem *item) const {
const auto hideEverything = Core::App().passcodeLocked()
|| Global::ScreenIsLocked();
|| forceHideDetails();
const auto view = Core::App().settings().notifyView();
DisplayOptions result;
@@ -696,7 +697,7 @@ void Manager::notificationReplied(
void NativeManager::doShowNotification(
not_null<HistoryItem*> item,
int forwardedCount) {
const auto options = GetNotificationOptions(item);
const auto options = getNotificationOptions(item);
const auto peer = item->history()->peer;
const auto scheduled = !options.hideNameAndPhoto
@@ -732,6 +733,10 @@ void NativeManager::doShowNotification(
options.hideReplyButton);
}
bool NativeManager::forceHideDetails() const {
return Global::ScreenIsLocked();
}
System::~System() = default;
QString WrapFromScheduled(const QString &text) {

View File

@@ -193,8 +193,8 @@ public:
bool hideMessageText = false;
bool hideReplyButton = false;
};
[[nodiscard]] static DisplayOptions GetNotificationOptions(
HistoryItem *item);
[[nodiscard]] DisplayOptions getNotificationOptions(
HistoryItem *item) const;
[[nodiscard]] QString addTargetAccountName(
const QString &title,
@@ -218,6 +218,9 @@ protected:
virtual void doClearFromItem(not_null<HistoryItem*> item) = 0;
virtual void doClearFromHistory(not_null<History*> history) = 0;
virtual void doClearFromSession(not_null<Main::Session*> session) = 0;
[[nodiscard]] virtual bool forceHideDetails() const {
return false;
}
virtual void onBeforeNotificationActivated(NotificationId id) {
}
virtual void onAfterNotificationActivated(
@@ -256,6 +259,8 @@ protected:
not_null<HistoryItem*> item,
int forwardedCount) override;
bool forceHideDetails() const override;
virtual void doShowNativeNotification(
not_null<PeerData*> peer,
std::shared_ptr<Data::CloudImageView> &userpicView,

View File

@@ -725,7 +725,7 @@ void Notification::actionsOpacityCallback() {
void Notification::updateNotifyDisplay() {
if (!_history || (!_item && _forwardedCount < 2)) return;
const auto options = Manager::GetNotificationOptions(_item);
const auto options = manager()->getNotificationOptions(_item);
_hideReplyButton = options.hideReplyButton;
int32 w = width(), h = height();

View File

@@ -1,7 +1,7 @@
AppVersion 2007002
AppVersion 2007003
AppVersionStrMajor 2.7
AppVersionStrSmall 2.7.2
AppVersionStr 2.7.2
AppVersionStrSmall 2.7.3
AppVersionStr 2.7.3
BetaChannel 0
AlphaVersion 0
AppVersionOriginal 2.7.2
AppVersionOriginal 2.7.3

View File

@@ -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)
- Offer real goods and services for sale in any group, channel or bot Telegram doesn't charge a commission.