Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f55d3d1c6a | ||
|
|
deea69e119 | ||
|
|
6925bf6a8e | ||
|
|
a0110fed27 | ||
|
|
30a945a043 | ||
|
|
c062b4b3a1 | ||
|
|
06fb5540e1 | ||
|
|
0e9a7ffe46 | ||
|
|
2f48fe920e | ||
|
|
936d4004ff | ||
|
|
fd03217032 |
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>(
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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>();
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -131,7 +131,6 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *e) override;
|
||||
void leaveEventHook(QEvent *e) override;
|
||||
|
||||
void savePosition(Qt::WindowState state = Qt::WindowActive);
|
||||
|
||||
@@ -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 /
|
||||
|
||||
@@ -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', """
|
||||
|
||||
@@ -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
|
||||
|
||||
Submodule Telegram/lib_base updated: 3294b5a9bf...29ecc271c0
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user