Compare commits

..

11 Commits

Author SHA1 Message Date
John Preston
f55d3d1c6a Version 3.2.5: Add information about macOS build. 2021-11-16 14:35:28 +04:00
John Preston
deea69e119 Version 3.2.5. [Windows]
- Fix connecting in case bad characters appear in device name.
2021-11-16 12:45:34 +04:00
John Preston
6925bf6a8e Refresh global proxy after settings being read.
Fixes #16600, fixes #17249.
2021-11-16 12:39:24 +04:00
John Preston
a0110fed27 Allow to see who viewed message from the migrated history. 2021-11-16 12:39:19 +04:00
John Preston
30a945a043 Clean device name string.
Fixes #17243.
2021-11-16 12:38:59 +04:00
Amin Vakil
c062b4b3a1 Run yum clean all also for remote installations
They may try to install some dependencies from official centos mirrors.
2021-11-15 23:24:20 +04:00
Amin Vakil
06fb5540e1 Run yum clean all after package installation
KISS :)

Co-authored-by: ilya-fedin <fedin-ilja2010@ya.ru>

Make it in oneline

Co-authored-by: ilya-fedin <fedin-ilja2010@ya.ru>

perl-XML-Parser installation has been moved

Co-authored-by: ilya-fedin <fedin-ilja2010@ya.ru>

Typo

Co-authored-by: ilya-fedin <fedin-ilja2010@ya.ru>
2021-11-15 23:24:20 +04:00
John Preston
0e9a7ffe46 Version 3.2.4.
- Fix editing of scheduled messages on macOS.
- Fix launching on Chrome OS in Crostini container (fixes #17210).
2021-11-13 13:51:38 +04:00
John Preston
2f48fe920e Fixed edit of scheduled messages. 2021-11-13 13:44:56 +04:00
Ilya Fedin
936d4004ff Update controls geometry in MainWindow according to body changes 2021-11-10 19:30:29 +04:00
Ilya Fedin
fd03217032 Update patches in Docker 2021-11-09 16:17:45 +04:00
19 changed files with 317 additions and 68 deletions

View File

@@ -10,7 +10,7 @@
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
ProcessorArchitecture="ARCHITECTURE"
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
Version="3.2.3.0" />
Version="3.2.5.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 3,2,3,0
PRODUCTVERSION 3,2,3,0
FILEVERSION 3,2,5,0
PRODUCTVERSION 3,2,5,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -62,10 +62,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Telegram FZ-LLC"
VALUE "FileDescription", "Telegram Desktop"
VALUE "FileVersion", "3.2.3.0"
VALUE "FileVersion", "3.2.5.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "3.2.3.0"
VALUE "ProductVersion", "3.2.5.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -35,8 +35,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,2,3,0
PRODUCTVERSION 3,2,3,0
FILEVERSION 3,2,5,0
PRODUCTVERSION 3,2,5,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", "3.2.3.0"
VALUE "FileVersion", "3.2.5.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "3.2.3.0"
VALUE "ProductVersion", "3.2.5.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -291,10 +291,6 @@ bool WhoReadExists(not_null<HistoryItem*> item) {
const auto megagroup = peer->asMegagroup();
if (!chat && !megagroup) {
return false;
} else if (peer->migrateTo()) {
// They're all always marked as read.
// We don't know if there really are any readers.
return false;
}
const auto &appConfig = peer->session().account().appConfig();
const auto expirePeriod = TimeId(appConfig.get<double>(

View File

@@ -208,7 +208,6 @@ void Application::run() {
style::internal::StartFonts();
ThirdParty::start();
refreshGlobalProxy(); // Depends on Core::IsAppLaunched().
// Depends on OpenSSL on macOS, so on ThirdParty::start().
// Depends on notifications settings.
@@ -217,6 +216,8 @@ void Application::run() {
startLocalStorage();
ValidateScale();
refreshGlobalProxy(); // Depends on app settings being read.
if (Local::oldSettingsVersion() < AppVersion) {
RegisterUrlScheme();
psNewVersion();

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 = 3002003;
constexpr auto AppVersionStr = "3.2.3";
constexpr auto AppVersion = 3002005;
constexpr auto AppVersionStr = "3.2.5";
constexpr auto AppBetaVersion = false;
constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION;

View File

@@ -35,8 +35,6 @@ struct MsgId {
constexpr MsgId operator--(int) noexcept {
return bare--;
}
constexpr auto operator<=>(const MsgId &other) const = default;
constexpr bool operator==(const MsgId &other) const = default;
int64 bare = 0;
};
@@ -51,6 +49,30 @@ Q_DECLARE_METATYPE(MsgId);
return MsgId(a.bare - b.bare);
}
[[nodiscard]] inline constexpr bool operator==(MsgId a, MsgId b) noexcept {
return (a.bare == b.bare);
}
[[nodiscard]] inline constexpr bool operator!=(MsgId a, MsgId b) noexcept {
return (a.bare != b.bare);
}
[[nodiscard]] inline constexpr bool operator<(MsgId a, MsgId b) noexcept {
return (a.bare < b.bare);
}
[[nodiscard]] inline constexpr bool operator>(MsgId a, MsgId b) noexcept {
return (a.bare > b.bare);
}
[[nodiscard]] inline constexpr bool operator<=(MsgId a, MsgId b) noexcept {
return (a.bare <= b.bare);
}
[[nodiscard]] inline constexpr bool operator>=(MsgId a, MsgId b) noexcept {
return (a.bare >= b.bare);
}
constexpr auto StartClientMsgId = MsgId(0x01 - (1LL << 58));
constexpr auto EndClientMsgId = MsgId(-(1LL << 57));
constexpr auto ServerMaxMsgId = MsgId(1LL << 56);
@@ -110,13 +132,52 @@ struct FullMsgId {
constexpr bool operator!() const noexcept {
return msg == 0;
}
constexpr auto operator<=>(const FullMsgId &other) const = default;
constexpr bool operator==(const FullMsgId &other) const = default;
ChannelId channel = NoChannel;
MsgId msg = 0;
};
[[nodiscard]] inline constexpr bool operator<(
const FullMsgId &a,
const FullMsgId &b) noexcept {
if (a.channel < b.channel) {
return true;
} else if (a.channel > b.channel) {
return false;
}
return a.msg < b.msg;
}
[[nodiscard]] inline constexpr bool operator>(
const FullMsgId &a,
const FullMsgId &b) noexcept {
return b < a;
}
[[nodiscard]] inline constexpr bool operator<=(
const FullMsgId &a,
const FullMsgId &b) noexcept {
return !(b < a);
}
[[nodiscard]] inline constexpr bool operator>=(
const FullMsgId &a,
const FullMsgId &b) noexcept {
return !(a < b);
}
[[nodiscard]] inline constexpr bool operator==(
const FullMsgId &a,
const FullMsgId &b) noexcept {
return (a.channel == b.channel) && (a.msg == b.msg);
}
[[nodiscard]] inline constexpr bool operator!=(
const FullMsgId &a,
const FullMsgId &b) noexcept {
return !(a == b);
}
Q_DECLARE_METATYPE(FullMsgId);
namespace std {

View File

@@ -34,15 +34,103 @@ struct ChatIdType {
[[nodiscard]] constexpr bool operator!() const noexcept {
return !bare;
}
[[nodiscard]] constexpr auto operator<=>(const ChatIdType &other) const = default;
[[nodiscard]] constexpr bool operator==(const ChatIdType &other) const = default;
constexpr auto operator<=>(PeerIdZero) const = delete;
[[nodiscard]] constexpr bool operator==(PeerIdZero) const noexcept {
return (bare == 0);
}
};
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator==(
ChatIdType<Shift> a,
ChatIdType<Shift> b) noexcept {
return (a.bare == b.bare);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator!=(
ChatIdType<Shift> a,
ChatIdType<Shift> b) noexcept {
return (a.bare != b.bare);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator<(
ChatIdType<Shift> a,
ChatIdType<Shift> b) noexcept {
return (a.bare < b.bare);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator>(
ChatIdType<Shift> a,
ChatIdType<Shift> b) noexcept {
return (a.bare > b.bare);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator<=(
ChatIdType<Shift> a,
ChatIdType<Shift> b) noexcept {
return (a.bare <= b.bare);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator>=(
ChatIdType<Shift> a,
ChatIdType<Shift> b) noexcept {
return (a.bare >= b.bare);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator==(
ChatIdType<Shift> a,
PeerIdZero) noexcept {
return (a.bare == 0);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator==(
PeerIdZero,
ChatIdType<Shift> a) noexcept {
return (0 == a.bare);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator!=(
ChatIdType<Shift> a,
PeerIdZero) noexcept {
return (a.bare != 0);
}
template <uchar Shift>
[[nodiscard]] inline constexpr bool operator!=(
PeerIdZero,
ChatIdType<Shift> a) noexcept {
return (0 != a.bare);
}
template <uchar Shift>
bool operator<(ChatIdType<Shift>, PeerIdZero) = delete;
template <uchar Shift>
bool operator<(PeerIdZero, ChatIdType<Shift>) = delete;
template <uchar Shift>
bool operator>(ChatIdType<Shift>, PeerIdZero) = delete;
template <uchar Shift>
bool operator>(PeerIdZero, ChatIdType<Shift>) = delete;
template <uchar Shift>
bool operator<=(ChatIdType<Shift>, PeerIdZero) = delete;
template <uchar Shift>
bool operator<=(PeerIdZero, ChatIdType<Shift>) = delete;
template <uchar Shift>
bool operator>=(ChatIdType<Shift>, PeerIdZero) = delete;
template <uchar Shift>
bool operator>=(PeerIdZero, ChatIdType<Shift>) = delete;
using UserId = ChatIdType<0>;
using ChatId = ChatIdType<1>;
using ChannelId = ChatIdType<2>;
@@ -89,15 +177,65 @@ struct PeerId {
return !value;
}
[[nodiscard]] constexpr auto operator<=>(const PeerId &other) const = default;
[[nodiscard]] constexpr bool operator==(const PeerId &other) const = default;
constexpr auto operator<=>(PeerIdZero) const = delete;
[[nodiscard]] constexpr bool operator==(PeerIdZero) const noexcept {
return (value == 0);
}
};
[[nodiscard]] inline constexpr bool operator==(PeerId a, PeerId b) noexcept {
return (a.value == b.value);
}
[[nodiscard]] inline constexpr bool operator!=(PeerId a, PeerId b) noexcept {
return (a.value != b.value);
}
[[nodiscard]] inline constexpr bool operator<(PeerId a, PeerId b) noexcept {
return (a.value < b.value);
}
[[nodiscard]] inline constexpr bool operator>(PeerId a, PeerId b) noexcept {
return (a.value > b.value);
}
[[nodiscard]] inline constexpr bool operator<=(PeerId a, PeerId b) noexcept {
return (a.value <= b.value);
}
[[nodiscard]] inline constexpr bool operator>=(PeerId a, PeerId b) noexcept {
return (a.value >= b.value);
}
[[nodiscard]] inline constexpr bool operator==(
PeerId a,
PeerIdZero) noexcept {
return (a.value == 0);
}
[[nodiscard]] inline constexpr bool operator==(
PeerIdZero,
PeerId a) noexcept {
return (0 == a.value);
}
[[nodiscard]] inline constexpr bool operator!=(
PeerId a,
PeerIdZero) noexcept {
return (a.value != 0);
}
[[nodiscard]] inline constexpr bool operator!=(
PeerIdZero,
PeerId a) noexcept {
return (0 != a.value);
}
bool operator<(PeerId, PeerIdZero) = delete;
bool operator<(PeerIdZero, PeerId) = delete;
bool operator>(PeerId, PeerIdZero) = delete;
bool operator>(PeerIdZero, PeerId) = delete;
bool operator<=(PeerId, PeerIdZero) = delete;
bool operator<=(PeerIdZero, PeerId) = delete;
bool operator>=(PeerId, PeerIdZero) = delete;
bool operator>=(PeerIdZero, PeerId) = delete;
[[nodiscard]] inline constexpr bool peerIsUser(PeerId id) noexcept {
return id.is<UserId>();
}

View File

@@ -40,8 +40,29 @@ public:
Data::Folder *folder() const;
PeerData *peer() const;
constexpr auto operator<=>(const Key &other) const = default;
constexpr bool operator==(const Key &other) const = default;
inline bool operator<(const Key &other) const {
return _value < other._value;
}
inline bool operator>(const Key &other) const {
return (other < *this);
}
inline bool operator<=(const Key &other) const {
return !(other < *this);
}
inline bool operator>=(const Key &other) const {
return !(*this < other);
}
inline bool operator==(const Key &other) const {
return _value == other._value;
}
inline bool operator!=(const Key &other) const {
return !(*this == other);
}
// Not working :(
//friend inline auto value_ordering_helper(const Key &key) {
// return key.value;
//}
private:
Entry *_value = nullptr;
@@ -53,24 +74,41 @@ struct RowDescriptor {
RowDescriptor(Key key, FullMsgId fullId) : key(key), fullId(fullId) {
}
constexpr auto operator<=>(const RowDescriptor &other) const noexcept {
if (const auto result = (key <=> other.key); result != 0) {
return result;
} else if (!fullId.msg && !other.fullId.msg) {
return (fullId.msg <=> other.fullId.msg);
} else {
return (fullId <=> other.fullId);
}
}
constexpr bool operator==(const RowDescriptor &other) const noexcept {
return ((*this) <=> other) == 0;
}
Key key;
FullMsgId fullId;
};
inline bool operator==(const RowDescriptor &a, const RowDescriptor &b) {
return (a.key == b.key)
&& ((a.fullId == b.fullId) || (!a.fullId.msg && !b.fullId.msg));
}
inline bool operator!=(const RowDescriptor &a, const RowDescriptor &b) {
return !(a == b);
}
inline bool operator<(const RowDescriptor &a, const RowDescriptor &b) {
if (a.key < b.key) {
return true;
} else if (a.key > b.key) {
return false;
}
return a.fullId < b.fullId;
}
inline bool operator>(const RowDescriptor &a, const RowDescriptor &b) {
return (b < a);
}
inline bool operator<=(const RowDescriptor &a, const RowDescriptor &b) {
return !(b < a);
}
inline bool operator>=(const RowDescriptor &a, const RowDescriptor &b) {
return !(a < b);
}
struct EntryState {
enum class Section {
History,

View File

@@ -619,8 +619,8 @@ bool HistoryItem::allowsEdit(TimeId now) const {
return false;
}
bool HistoryItem::canStopPoll() const {
if (!isRegular()
bool HistoryItem::canBeEdited() const {
if ((!isRegular() && !isScheduled())
|| Has<HistoryMessageVia>()
|| Has<HistoryMessageForwarded>()) {
return false;
@@ -641,6 +641,10 @@ bool HistoryItem::canStopPoll() const {
return out();
}
bool HistoryItem::canStopPoll() const {
return canBeEdited() && isRegular();
}
bool HistoryItem::canDelete() const {
if (isSponsored()) {
return false;

View File

@@ -373,6 +373,7 @@ public:
}
[[nodiscard]] bool canPin() const;
[[nodiscard]] bool canBeEdited() const;
[[nodiscard]] bool canStopPoll() const;
[[nodiscard]] virtual bool allowsSendNow() const;
[[nodiscard]] virtual bool allowsForward() const;

View File

@@ -1048,7 +1048,7 @@ bool HistoryMessage::isTooOldForEdit(TimeId now) const {
}
bool HistoryMessage::allowsEdit(TimeId now) const {
return canStopPoll()
return canBeEdited()
&& !isTooOldForEdit(now)
&& (!_media || _media->allowsEdit())
&& !isLegacyMessage()

View File

@@ -318,6 +318,11 @@ MainWindow::MainWindow(not_null<Controller*> controller)
Ui::Toast::SetDefaultParent(_body.data());
body()->sizeValue(
) | rpl::start_with_next([=](QSize size) {
updateControlsGeometry();
}, lifetime());
if (_outdated) {
_outdated->heightValue(
) | rpl::filter([=] {
@@ -749,10 +754,6 @@ void MainWindow::attachToTrayIcon(not_null<QSystemTrayIcon*> icon) {
});
}
void MainWindow::resizeEvent(QResizeEvent *e) {
updateControlsGeometry();
}
rpl::producer<> MainWindow::leaveEvents() const {
return _leaveEvents.events();
}

View File

@@ -131,7 +131,6 @@ public:
}
protected:
void resizeEvent(QResizeEvent *e) override;
void leaveEventHook(QEvent *e) override;
void savePosition(Qt::WindowState state = Qt::WindowActive);

View File

@@ -20,9 +20,9 @@ ENV CMAKE_VER 3.21.3
ENV CMAKE_FILE cmake-$CMAKE_VER-Linux-x86_64.sh
ENV PATH ${PATH}:${QT5_PREFIX}/bin:${QT6_PREFIX}/bin
RUN yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
RUN yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm
RUN yum -y install centos-release-scl
RUN yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && yum clean all
RUN yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm && yum clean all
RUN yum -y install centos-release-scl && yum clean all
RUN yum -y install git meson ninja-build autoconf automake libtool \
fontconfig-devel freetype-devel libX11-devel at-spi2-core-devel alsa-lib-devel \
@@ -30,7 +30,7 @@ RUN yum -y install git meson ninja-build autoconf automake libtool \
webkitgtk4-devel pkgconfig bison yasm file which xorg-x11-util-macros \
devtoolset-9-make devtoolset-9-gcc devtoolset-9-gcc-c++ \
devtoolset-9-binutils llvm-toolset-7.0 llvm-toolset-7.0-clang-devel \
llvm-toolset-7.0-llvm-devel
llvm-toolset-7.0-llvm-devel perl-XML-Parser && yum clean all
SHELL [ "bash", "-c", ". /opt/rh/devtoolset-9/enable; exec bash -c \"$@\"", "-s"]
@@ -45,7 +45,7 @@ RUN ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
RUN rm $CMAKE_FILE
FROM builder AS patches
RUN git clone $GIT/desktop-app/patches.git && cd patches && git checkout 17c7e63cfd
RUN git clone $GIT/desktop-app/patches.git && cd patches && git checkout be978cc050
FROM builder AS extra-cmake-modules
@@ -652,7 +652,6 @@ RUN rm -rf libsigcplusplus
FROM patches AS glibmm
COPY --from=mm-common ${LibrariesPath}/mm-common-cache /
COPY --from=libsigcplusplus ${LibrariesPath}/libsigcplusplus-cache /
RUN yum -y install perl-XML-Parser
# equals to glib version of Ubuntu 14.04
RUN git clone -b 2.40.0 --depth=1 $GIT/GNOME/glibmm.git
@@ -677,6 +676,7 @@ ARG QT6
COPY --from=libffi ${LibrariesPath}/libffi-cache /
COPY --from=zlib ${LibrariesPath}/zlib-cache /
COPY --from=libepoxy ${LibrariesPath}/libepoxy-cache /
COPY --from=libproxy ${LibrariesPath}/libproxy-cache /
COPY --from=mozjpeg ${LibrariesPath}/mozjpeg-cache /
COPY --from=xcb ${LibrariesPath}/xcb-cache /

View File

@@ -401,7 +401,7 @@ if customRunCommand:
stage('patches', """
git clone https://github.com/desktop-app/patches.git
cd patches
git checkout 17c7e63cfd
git checkout 85bce38ec7
""")
stage('depot_tools', """

View File

@@ -1,7 +1,7 @@
AppVersion 3002003
AppVersion 3002005
AppVersionStrMajor 3.2
AppVersionStrSmall 3.2.3
AppVersionStr 3.2.3
AppVersionStrSmall 3.2.5
AppVersionStr 3.2.5
BetaChannel 0
AlphaVersion 0
AppVersionOriginal 3.2.3
AppVersionOriginal 3.2.5

View File

@@ -1,3 +1,13 @@
3.2.5 (16.11.21) [Windows, macOS]
- Fix connecting in case bad characters appear in device name on Windows.
- Fix custom input methods on macOS.
3.2.4 (13.11.21)
- Fix editing of scheduled messages on macOS.
- Fix launching on Chrome OS in Crostini container.
3.2.3 (08.11.21)
- Fix autoupdater launch on macOS.