mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fix possible crash in Recent Actions.
This commit is contained in:
parent
a333615e53
commit
939f6095ba
2 changed files with 20 additions and 7 deletions
|
@ -273,13 +273,13 @@ InnerWidget::InnerWidget(
|
||||||
_scrollDateHideTimer.setCallback([=] { scrollDateHideByTimer(); });
|
_scrollDateHideTimer.setCallback([=] { scrollDateHideByTimer(); });
|
||||||
session().data().viewRepaintRequest(
|
session().data().viewRepaintRequest(
|
||||||
) | rpl::start_with_next([=](auto view) {
|
) | rpl::start_with_next([=](auto view) {
|
||||||
if (view->delegate() == this) {
|
if (myView(view)) {
|
||||||
repaintItem(view);
|
repaintItem(view);
|
||||||
}
|
}
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
session().data().viewResizeRequest(
|
session().data().viewResizeRequest(
|
||||||
) | rpl::start_with_next([=](auto view) {
|
) | rpl::start_with_next([=](auto view) {
|
||||||
if (view->delegate() == this) {
|
if (myView(view)) {
|
||||||
resizeItem(view);
|
resizeItem(view);
|
||||||
}
|
}
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
|
@ -291,7 +291,7 @@ InnerWidget::InnerWidget(
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
session().data().viewLayoutChanged(
|
session().data().viewLayoutChanged(
|
||||||
) | rpl::start_with_next([=](auto view) {
|
) | rpl::start_with_next([=](auto view) {
|
||||||
if (view->delegate() == this) {
|
if (myView(view)) {
|
||||||
if (view->isUnderCursor()) {
|
if (view->isUnderCursor()) {
|
||||||
updateSelected();
|
updateSelected();
|
||||||
}
|
}
|
||||||
|
@ -333,6 +333,10 @@ InnerWidget::InnerWidget(
|
||||||
[=] { requestAdmins(); }));
|
[=] { requestAdmins(); }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool InnerWidget::myView(not_null<const HistoryView::Element*> view) const {
|
||||||
|
return !_items.empty() && (view->delegate().get() == this);
|
||||||
|
}
|
||||||
|
|
||||||
Main::Session &InnerWidget::session() const {
|
Main::Session &InnerWidget::session() const {
|
||||||
return _controller->session();
|
return _controller->session();
|
||||||
}
|
}
|
||||||
|
@ -790,11 +794,16 @@ void InnerWidget::saveState(not_null<SectionMemento*> memento) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void InnerWidget::restoreState(not_null<SectionMemento*> memento) {
|
void InnerWidget::restoreState(not_null<SectionMemento*> memento) {
|
||||||
_items = memento->takeItems();
|
// OwnedItem::refreshView may call requestItemResize.
|
||||||
for (auto &item : _items) {
|
// So we postpone resizing until all views are created.
|
||||||
|
_items.clear();
|
||||||
|
auto items = memento->takeItems();
|
||||||
|
for (auto &item : items) {
|
||||||
item.refreshView(this);
|
item.refreshView(this);
|
||||||
_itemsByData.emplace(item->data(), item.get());
|
_itemsByData.emplace(item->data(), item.get());
|
||||||
}
|
}
|
||||||
|
_items = std::move(items);
|
||||||
|
|
||||||
_eventIds = memento->takeEventIds();
|
_eventIds = memento->takeEventIds();
|
||||||
_admins = memento->takeAdmins();
|
_admins = memento->takeAdmins();
|
||||||
_adminsCanEdit = memento->takeAdminsCanEdit();
|
_adminsCanEdit = memento->takeAdminsCanEdit();
|
||||||
|
|
|
@ -229,8 +229,12 @@ private:
|
||||||
void paintEmpty(Painter &p, not_null<const Ui::ChatStyle*> st);
|
void paintEmpty(Painter &p, not_null<const Ui::ChatStyle*> st);
|
||||||
void clearAfterFilterChange();
|
void clearAfterFilterChange();
|
||||||
void clearAndRequestLog();
|
void clearAndRequestLog();
|
||||||
void addEvents(Direction direction, const QVector<MTPChannelAdminLogEvent> &events);
|
void addEvents(
|
||||||
Element *viewForItem(const HistoryItem *item);
|
Direction direction,
|
||||||
|
const QVector<MTPChannelAdminLogEvent> &events);
|
||||||
|
[[nodiscard]] Element *viewForItem(const HistoryItem *item);
|
||||||
|
[[nodiscard]] bool myView(
|
||||||
|
not_null<const HistoryView::Element*> view) const;
|
||||||
|
|
||||||
void toggleScrollDateShown();
|
void toggleScrollDateShown();
|
||||||
void repaintScrollDateCallback();
|
void repaintScrollDateCallback();
|
||||||
|
|
Loading…
Add table
Reference in a new issue