2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-31 22:46:10 +00:00

Save item views in App::*Item() variables.

Also remove App::contextItem.
Also use owning pointers for history context menus.
This commit is contained in:
John Preston
2018-01-11 16:07:29 +03:00
parent 8060cb7426
commit 062b0b2165
33 changed files with 1201 additions and 1056 deletions

View File

@@ -89,11 +89,10 @@ namespace {
using SentData = QMap<uint64, QPair<PeerId, QString>>;
SentData sentData;
HistoryItem *hoveredItem = nullptr,
HistoryView::Message *hoveredItem = nullptr,
*pressedItem = nullptr,
*hoveredLinkItem = nullptr,
*pressedLinkItem = nullptr,
*contextItem = nullptr,
*mousedItem = nullptr;
QPixmap *emoji = nullptr, *emojiLarge = nullptr;
@@ -934,7 +933,7 @@ namespace {
: nullptr);
existing->setViewsCount(m.has_views() ? m.vviews.v : -1);
existing->indexAsNewItem();
if (!existing->detached()) {
if (existing->mainView()) {
App::checkSavedGif(existing);
return true;
}
@@ -1836,23 +1835,20 @@ namespace {
}
}
void historyItemDetached(HistoryItem *item) {
if (::hoveredItem == item) {
void messageViewDestroyed(not_null<HistoryView::Message*> view) {
if (::hoveredItem == view) {
hoveredItem(nullptr);
}
if (::pressedItem == item) {
if (::pressedItem == view) {
pressedItem(nullptr);
}
if (::hoveredLinkItem == item) {
if (::hoveredLinkItem == view) {
hoveredLinkItem(nullptr);
}
if (::pressedLinkItem == item) {
if (::pressedLinkItem == view) {
pressedLinkItem(nullptr);
}
if (::contextItem == item) {
contextItem(nullptr);
}
if (::mousedItem == item) {
if (::mousedItem == view) {
mousedItem(nullptr);
}
}
@@ -1867,7 +1863,6 @@ namespace {
data->erase(i);
}
}
historyItemDetached(item);
auto j = ::dependentItems.find(item);
if (j != ::dependentItems.cend()) {
DependentItemsSet items;
@@ -1903,13 +1898,13 @@ namespace {
QVector<HistoryItem*> toDelete;
for_const (auto item, msgsData) {
if (item->detached()) {
if (!item->mainView()) {
toDelete.push_back(item);
}
}
for_const (auto &chMsgsData, channelMsgsData) {
for_const (auto item, chMsgsData) {
if (item->detached()) {
if (!item->mainView()) {
toDelete.push_back(item);
}
}
@@ -2187,51 +2182,43 @@ namespace {
clearAllImages();
}
void hoveredItem(HistoryItem *item) {
void hoveredItem(HistoryView::Message *item) {
::hoveredItem = item;
}
HistoryItem *hoveredItem() {
HistoryView::Message *hoveredItem() {
return ::hoveredItem;
}
void pressedItem(HistoryItem *item) {
void pressedItem(HistoryView::Message *item) {
::pressedItem = item;
}
HistoryItem *pressedItem() {
HistoryView::Message *pressedItem() {
return ::pressedItem;
}
void hoveredLinkItem(HistoryItem *item) {
void hoveredLinkItem(HistoryView::Message *item) {
::hoveredLinkItem = item;
}
HistoryItem *hoveredLinkItem() {
HistoryView::Message *hoveredLinkItem() {
return ::hoveredLinkItem;
}
void pressedLinkItem(HistoryItem *item) {
void pressedLinkItem(HistoryView::Message *item) {
::pressedLinkItem = item;
}
HistoryItem *pressedLinkItem() {
HistoryView::Message *pressedLinkItem() {
return ::pressedLinkItem;
}
void contextItem(HistoryItem *item) {
::contextItem = item;
}
HistoryItem *contextItem() {
return ::contextItem;
}
void mousedItem(HistoryItem *item) {
void mousedItem(HistoryView::Message *item) {
::mousedItem = item;
}
HistoryItem *mousedItem() {
HistoryView::Message *mousedItem() {
return ::mousedItem;
}
@@ -2240,7 +2227,6 @@ namespace {
pressedItem(nullptr);
hoveredLinkItem(nullptr);
pressedLinkItem(nullptr);
contextItem(nullptr);
mousedItem(nullptr);
}