mirror of https://github.com/procxx/kepka.git
0.9.56 stable. Crash fixed in MediaView after logout and login again.
Buttons layout improved in bot inline keyboard.
This commit is contained in:
parent
7ec2c833f2
commit
a89185565a
|
@ -34,8 +34,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico"
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 0,9,55,0
|
FILEVERSION 0,9,56,0
|
||||||
PRODUCTVERSION 0,9,55,0
|
PRODUCTVERSION 0,9,56,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -51,10 +51,10 @@ BEGIN
|
||||||
BLOCK "040904b0"
|
BLOCK "040904b0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Telegram Messenger LLP"
|
VALUE "CompanyName", "Telegram Messenger LLP"
|
||||||
VALUE "FileVersion", "0.9.55.0"
|
VALUE "FileVersion", "0.9.56.0"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2014-2016"
|
VALUE "LegalCopyright", "Copyright (C) 2014-2016"
|
||||||
VALUE "ProductName", "Telegram Desktop"
|
VALUE "ProductName", "Telegram Desktop"
|
||||||
VALUE "ProductVersion", "0.9.55.0"
|
VALUE "ProductVersion", "0.9.56.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 0,9,55,0
|
FILEVERSION 0,9,56,0
|
||||||
PRODUCTVERSION 0,9,55,0
|
PRODUCTVERSION 0,9,56,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -43,10 +43,10 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Telegram Messenger LLP"
|
VALUE "CompanyName", "Telegram Messenger LLP"
|
||||||
VALUE "FileDescription", "Telegram Updater"
|
VALUE "FileDescription", "Telegram Updater"
|
||||||
VALUE "FileVersion", "0.9.55.0"
|
VALUE "FileVersion", "0.9.56.0"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2014-2016"
|
VALUE "LegalCopyright", "Copyright (C) 2014-2016"
|
||||||
VALUE "ProductName", "Telegram Desktop"
|
VALUE "ProductName", "Telegram Desktop"
|
||||||
VALUE "ProductVersion", "0.9.55.0"
|
VALUE "ProductVersion", "0.9.56.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -1048,7 +1048,7 @@ void AppClass::checkMapVersion() {
|
||||||
if ((cAlphaVersion() || cBetaVersion()) && Local::oldMapVersion() < 9055) {
|
if ((cAlphaVersion() || cBetaVersion()) && Local::oldMapVersion() < 9055) {
|
||||||
versionFeatures = QString::fromUtf8("\xe2\x80\x94 Main window position and size are saved between the launches in Windows\n\xe2\x80\x94 Dock and top bar hiding fixed in OS X\n\xe2\x80\x94 Various design improvements and other bug fixes");
|
versionFeatures = QString::fromUtf8("\xe2\x80\x94 Main window position and size are saved between the launches in Windows\n\xe2\x80\x94 Dock and top bar hiding fixed in OS X\n\xe2\x80\x94 Various design improvements and other bug fixes");
|
||||||
// versionFeatures = langNewVersionText();
|
// versionFeatures = langNewVersionText();
|
||||||
} else if (Local::oldMapVersion() < 9050) {
|
} else if (Local::oldMapVersion() < 9056) {
|
||||||
versionFeatures = langNewVersionText();
|
versionFeatures = langNewVersionText();
|
||||||
} else {
|
} else {
|
||||||
versionFeatures = lang(lng_new_version_minor).trimmed();
|
versionFeatures = lang(lng_new_version_minor).trimmed();
|
||||||
|
|
|
@ -24,7 +24,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||||
|
|
||||||
#define BETA_VERSION_MACRO (0ULL)
|
#define BETA_VERSION_MACRO (0ULL)
|
||||||
|
|
||||||
constexpr int AppVersion = 9055;
|
constexpr int AppVersion = 9056;
|
||||||
constexpr str_const AppVersionStr = "0.9.55";
|
constexpr str_const AppVersionStr = "0.9.56";
|
||||||
constexpr bool AppAlphaVersion = true;
|
constexpr bool AppAlphaVersion = false;
|
||||||
constexpr uint64 AppBetaVersion = BETA_VERSION_MACRO;
|
constexpr uint64 AppBetaVersion = BETA_VERSION_MACRO;
|
||||||
|
|
|
@ -2306,21 +2306,34 @@ void ReplyKeyboard::resize(int width, int height) {
|
||||||
for (ButtonRow &row : _rows) {
|
for (ButtonRow &row : _rows) {
|
||||||
int s = row.size();
|
int s = row.size();
|
||||||
|
|
||||||
int widthForText = _width - ((s - 1) * _st->buttonSkip());
|
int widthForButtons = _width - ((s - 1) * _st->buttonSkip());
|
||||||
|
int widthForText = widthForButtons;
|
||||||
int widthOfText = 0;
|
int widthOfText = 0;
|
||||||
|
int maxMinButtonWidth = 0;
|
||||||
for_const (const Button &button, row) {
|
for_const (const Button &button, row) {
|
||||||
widthOfText += qMax(button.text.maxWidth(), 1);
|
widthOfText += qMax(button.text.maxWidth(), 1);
|
||||||
widthForText -= _st->minButtonWidth(button.type);
|
int minButtonWidth = _st->minButtonWidth(button.type);
|
||||||
|
widthForText -= minButtonWidth;
|
||||||
|
accumulate_max(maxMinButtonWidth, minButtonWidth);
|
||||||
}
|
}
|
||||||
bool exact = (widthForText == widthOfText);
|
bool exact = (widthForText == widthOfText);
|
||||||
|
bool enough = (widthForButtons - s * maxMinButtonWidth) >= widthOfText;
|
||||||
|
|
||||||
float64 x = 0;
|
float64 x = 0;
|
||||||
for (Button &button : row) {
|
for (Button &button : row) {
|
||||||
int buttonw = qMax(button.text.maxWidth(), 1);
|
int buttonw = qMax(button.text.maxWidth(), 1);
|
||||||
float64 textw = exact ? buttonw : (widthForText / float64(s));
|
float64 textw = buttonw, minw = _st->minButtonWidth(button.type);
|
||||||
float64 minw = _st->minButtonWidth(button.type);
|
float64 w = textw;
|
||||||
float64 w = minw + textw;
|
if (exact) {
|
||||||
accumulate_max(w, 2 * float64(_st->buttonPadding()));
|
w += minw;
|
||||||
|
} else if (enough) {
|
||||||
|
w = (widthForButtons / float64(s));
|
||||||
|
textw = w - minw;
|
||||||
|
} else {
|
||||||
|
textw = (widthForText / float64(s));
|
||||||
|
w = minw + textw;
|
||||||
|
accumulate_max(w, 2 * float64(_st->buttonPadding()));
|
||||||
|
}
|
||||||
|
|
||||||
int rectx = static_cast<int>(std::floor(x));
|
int rectx = static_cast<int>(std::floor(x));
|
||||||
int rectw = static_cast<int>(std::floor(x + w)) - rectx;
|
int rectw = static_cast<int>(std::floor(x + w)) - rectx;
|
||||||
|
@ -2358,10 +2371,14 @@ void ReplyKeyboard::setStyle(StylePtr &&st) {
|
||||||
|
|
||||||
int ReplyKeyboard::naturalWidth() const {
|
int ReplyKeyboard::naturalWidth() const {
|
||||||
auto result = 0;
|
auto result = 0;
|
||||||
for_const (const auto &row, _rows) {
|
for_const (auto &row, _rows) {
|
||||||
|
auto maxMinButtonWidth = 0;
|
||||||
|
for_const (auto &button, row) {
|
||||||
|
accumulate_max(maxMinButtonWidth, _st->minButtonWidth(button.type));
|
||||||
|
}
|
||||||
auto rowMaxButtonWidth = 0;
|
auto rowMaxButtonWidth = 0;
|
||||||
for_const (const auto &button, row) {
|
for_const (auto &button, row) {
|
||||||
accumulate_max(rowMaxButtonWidth, qMax(button.text.maxWidth(), 1) + _st->minButtonWidth(button.type));
|
accumulate_max(rowMaxButtonWidth, qMax(button.text.maxWidth(), 1) + maxMinButtonWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto rowSize = row.size();
|
auto rowSize = row.size();
|
||||||
|
@ -4894,9 +4911,9 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void onClickImpl() const override {
|
void onClickImpl() const override {
|
||||||
if (HistoryMedia *media = _item->getMedia()) {
|
if (auto media = _item->getMedia()) {
|
||||||
if (DocumentData *document = media->getDocument()) {
|
if (auto document = media->getDocument()) {
|
||||||
if (StickerData *sticker = document->sticker()) {
|
if (auto sticker = document->sticker()) {
|
||||||
if (sticker->set.type() != mtpc_inputStickerSetEmpty && App::main()) {
|
if (sticker->set.type() != mtpc_inputStickerSetEmpty && App::main()) {
|
||||||
App::main()->stickersBox(sticker->set);
|
App::main()->stickersBox(sticker->set);
|
||||||
}
|
}
|
||||||
|
@ -4918,13 +4935,15 @@ HistorySticker::HistorySticker(HistoryItem *parent, DocumentData *document) : Hi
|
||||||
, _data(document)
|
, _data(document)
|
||||||
, _emoji(_data->sticker()->alt) {
|
, _emoji(_data->sticker()->alt) {
|
||||||
_data->thumb->load();
|
_data->thumb->load();
|
||||||
if (EmojiPtr e = emojiFromText(_emoji)) {
|
if (auto e = emojiFromText(_emoji)) {
|
||||||
_emoji = emojiString(e);
|
_emoji = emojiString(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistorySticker::initDimensions() {
|
void HistorySticker::initDimensions() {
|
||||||
if (!_packLink && _data->sticker() && _data->sticker()->set.type() != mtpc_inputStickerSetEmpty) {
|
auto sticker = _data->sticker();
|
||||||
|
|
||||||
|
if (!_packLink && sticker && sticker->set.type() != mtpc_inputStickerSetEmpty) {
|
||||||
_packLink = ClickHandlerPtr(new StickerClickHandler(_parent));
|
_packLink = ClickHandlerPtr(new StickerClickHandler(_parent));
|
||||||
}
|
}
|
||||||
_pixw = _data->dimensions.width();
|
_pixw = _data->dimensions.width();
|
||||||
|
@ -4968,6 +4987,9 @@ int HistorySticker::resizeGetHeight(int width) { // return new height
|
||||||
}
|
}
|
||||||
|
|
||||||
void HistorySticker::draw(Painter &p, const QRect &r, TextSelection selection, uint64 ms) const {
|
void HistorySticker::draw(Painter &p, const QRect &r, TextSelection selection, uint64 ms) const {
|
||||||
|
auto sticker = _data->sticker();
|
||||||
|
if (!sticker) return;
|
||||||
|
|
||||||
if (_width < st::msgPadding.left() + st::msgPadding.right() + 1) return;
|
if (_width < st::msgPadding.left() + st::msgPadding.right() + 1) return;
|
||||||
|
|
||||||
_data->checkSticker();
|
_data->checkSticker();
|
||||||
|
@ -4989,16 +5011,16 @@ void HistorySticker::draw(Painter &p, const QRect &r, TextSelection selection, u
|
||||||
if (rtl()) usex = _width - usex - usew;
|
if (rtl()) usex = _width - usex - usew;
|
||||||
|
|
||||||
if (selected) {
|
if (selected) {
|
||||||
if (_data->sticker()->img->isNull()) {
|
if (sticker->img->isNull()) {
|
||||||
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), _data->thumb->pixBlurredColored(st::msgStickerOverlay, _pixw, _pixh));
|
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), _data->thumb->pixBlurredColored(st::msgStickerOverlay, _pixw, _pixh));
|
||||||
} else {
|
} else {
|
||||||
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), _data->sticker()->img->pixColored(st::msgStickerOverlay, _pixw, _pixh));
|
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), sticker->img->pixColored(st::msgStickerOverlay, _pixw, _pixh));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_data->sticker()->img->isNull()) {
|
if (sticker->img->isNull()) {
|
||||||
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), _data->thumb->pixBlurred(_pixw, _pixh));
|
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), _data->thumb->pixBlurred(_pixw, _pixh));
|
||||||
} else {
|
} else {
|
||||||
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), _data->sticker()->img->pix(_pixw, _pixh));
|
p.drawPixmap(QPoint(usex + (usew - _pixw) / 2, (_minh - _pixh) / 2), sticker->img->pix(_pixw, _pixh));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -599,6 +599,10 @@ void MainWindow::setupIntro(bool anim) {
|
||||||
cSetDialogsReceived(false);
|
cSetDialogsReceived(false);
|
||||||
if (intro && !intro->isHidden() && !main) return;
|
if (intro && !intro->isHidden() && !main) return;
|
||||||
|
|
||||||
|
if (_mediaView) {
|
||||||
|
_mediaView->clearData();
|
||||||
|
}
|
||||||
|
|
||||||
QPixmap bg = anim ? grabInner() : QPixmap();
|
QPixmap bg = anim ? grabInner() : QPixmap();
|
||||||
|
|
||||||
clearWidgets();
|
clearWidgets();
|
||||||
|
|
|
@ -494,6 +494,28 @@ void MediaView::step_radial(uint64 ms, bool timer) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaView::clearData() {
|
||||||
|
if (!isHidden()) {
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
if (!_animations.isEmpty()) {
|
||||||
|
_animations.clear();
|
||||||
|
_a_state.stop();
|
||||||
|
}
|
||||||
|
if (!_animOpacities.isEmpty()) _animOpacities.clear();
|
||||||
|
delete _gif;
|
||||||
|
_gif = nullptr;
|
||||||
|
delete _menu;
|
||||||
|
_menu = nullptr;
|
||||||
|
_history = _migrated = nullptr;
|
||||||
|
_peer = _from = nullptr;
|
||||||
|
_user = nullptr;
|
||||||
|
_photo = _additionalChatPhoto = nullptr;
|
||||||
|
_doc = nullptr;
|
||||||
|
_saveMsgText.clear();
|
||||||
|
_caption.clear();
|
||||||
|
}
|
||||||
|
|
||||||
MediaView::~MediaView() {
|
MediaView::~MediaView() {
|
||||||
deleteAndMark(_gif);
|
deleteAndMark(_gif);
|
||||||
deleteAndMark(_menu);
|
deleteAndMark(_menu);
|
||||||
|
@ -813,6 +835,7 @@ void MediaView::onCopy() {
|
||||||
|
|
||||||
void MediaView::showPhoto(PhotoData *photo, HistoryItem *context) {
|
void MediaView::showPhoto(PhotoData *photo, HistoryItem *context) {
|
||||||
_history = context ? context->history() : nullptr;
|
_history = context ? context->history() : nullptr;
|
||||||
|
_migrated = nullptr;
|
||||||
if (_history) {
|
if (_history) {
|
||||||
if (_history->peer->migrateFrom()) {
|
if (_history->peer->migrateFrom()) {
|
||||||
_migrated = App::history(_history->peer->migrateFrom()->id);
|
_migrated = App::history(_history->peer->migrateFrom()->id);
|
||||||
|
@ -820,8 +843,6 @@ void MediaView::showPhoto(PhotoData *photo, HistoryItem *context) {
|
||||||
_migrated = _history;
|
_migrated = _history;
|
||||||
_history = App::history(_history->peer->migrateTo()->id);
|
_history = App::history(_history->peer->migrateTo()->id);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
_migrated = nullptr;
|
|
||||||
}
|
}
|
||||||
_additionalChatPhoto = nullptr;
|
_additionalChatPhoto = nullptr;
|
||||||
_firstOpenedPeerPhoto = false;
|
_firstOpenedPeerPhoto = false;
|
||||||
|
@ -932,6 +953,7 @@ void MediaView::showPhoto(PhotoData *photo, PeerData *context) {
|
||||||
void MediaView::showDocument(DocumentData *doc, HistoryItem *context) {
|
void MediaView::showDocument(DocumentData *doc, HistoryItem *context) {
|
||||||
_photo = 0;
|
_photo = 0;
|
||||||
_history = context ? context->history() : nullptr;
|
_history = context ? context->history() : nullptr;
|
||||||
|
_migrated = nullptr;
|
||||||
if (_history) {
|
if (_history) {
|
||||||
if (_history->peer->migrateFrom()) {
|
if (_history->peer->migrateFrom()) {
|
||||||
_migrated = App::history(_history->peer->migrateFrom()->id);
|
_migrated = App::history(_history->peer->migrateFrom()->id);
|
||||||
|
@ -939,8 +961,6 @@ void MediaView::showDocument(DocumentData *doc, HistoryItem *context) {
|
||||||
_migrated = _history;
|
_migrated = _history;
|
||||||
_history = App::history(_history->peer->migrateTo()->id);
|
_history = App::history(_history->peer->migrateTo()->id);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
_migrated = 0;
|
|
||||||
}
|
}
|
||||||
_additionalChatPhoto = nullptr;
|
_additionalChatPhoto = nullptr;
|
||||||
_saveMsgStarted = 0;
|
_saveMsgStarted = 0;
|
||||||
|
@ -1674,7 +1694,7 @@ void MediaView::preloadData(int32 delta) {
|
||||||
int indexInOverview = _index;
|
int indexInOverview = _index;
|
||||||
bool indexOfMigratedItem = _msgmigrated;
|
bool indexOfMigratedItem = _msgmigrated;
|
||||||
if (_index < 0) {
|
if (_index < 0) {
|
||||||
if (_overview != OverviewChatPhotos) return;
|
if (_overview != OverviewChatPhotos || !_history) return;
|
||||||
indexInOverview = _history->overview[OverviewChatPhotos].size();
|
indexInOverview = _history->overview[OverviewChatPhotos].size();
|
||||||
indexOfMigratedItem = false;
|
indexOfMigratedItem = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,8 @@ public:
|
||||||
void clipCallback(ClipReaderNotification notification);
|
void clipCallback(ClipReaderNotification notification);
|
||||||
PeerData *ui_getPeerForMouseAction();
|
PeerData *ui_getPeerForMouseAction();
|
||||||
|
|
||||||
|
void clearData();
|
||||||
|
|
||||||
~MediaView();
|
~MediaView();
|
||||||
|
|
||||||
// ClickHandlerHost interface
|
// ClickHandlerHost interface
|
||||||
|
|
|
@ -2375,7 +2375,7 @@
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
SYMROOT = ./../Mac;
|
SYMROOT = ./../Mac;
|
||||||
TDESKTOP_MAJOR_VERSION = 0.9;
|
TDESKTOP_MAJOR_VERSION = 0.9;
|
||||||
TDESKTOP_VERSION = 0.9.55;
|
TDESKTOP_VERSION = 0.9.56;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
@ -2516,7 +2516,7 @@
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
SYMROOT = ./../Mac;
|
SYMROOT = ./../Mac;
|
||||||
TDESKTOP_MAJOR_VERSION = 0.9;
|
TDESKTOP_MAJOR_VERSION = 0.9;
|
||||||
TDESKTOP_VERSION = 0.9.55;
|
TDESKTOP_VERSION = 0.9.56;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
AppVersion 9055
|
AppVersion 9056
|
||||||
AppVersionStrMajor 0.9
|
AppVersionStrMajor 0.9
|
||||||
AppVersionStrSmall 0.9.55
|
AppVersionStrSmall 0.9.56
|
||||||
AppVersionStr 0.9.55
|
AppVersionStr 0.9.56
|
||||||
AlphaChannel 1
|
AlphaChannel 0
|
||||||
BetaVersion 0
|
BetaVersion 0
|
||||||
|
|
Loading…
Reference in New Issue