mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Replaced raw PopupMenu pointer with unique_qptr in OverlayWidget.
This commit is contained in:
parent
dd7598a701
commit
2d906bddb2
2 changed files with 18 additions and 22 deletions
|
@ -1162,8 +1162,6 @@ void OverlayWidget::clearSession() {
|
||||||
_animationOpacities.clear();
|
_animationOpacities.clear();
|
||||||
}
|
}
|
||||||
clearStreaming();
|
clearStreaming();
|
||||||
delete _menu;
|
|
||||||
_menu = nullptr;
|
|
||||||
setContext(v::null);
|
setContext(v::null);
|
||||||
_from = nullptr;
|
_from = nullptr;
|
||||||
_fromName = QString();
|
_fromName = QString();
|
||||||
|
@ -1620,7 +1618,9 @@ void OverlayWidget::onDelete() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::onOverview() {
|
void OverlayWidget::onOverview() {
|
||||||
if (_menu) _menu->hideMenu(true);
|
if (_menu) {
|
||||||
|
_menu->hideMenu(true);
|
||||||
|
}
|
||||||
update();
|
update();
|
||||||
if (const auto overviewType = computeOverviewType()) {
|
if (const auto overviewType = computeOverviewType()) {
|
||||||
close();
|
close();
|
||||||
|
@ -3858,7 +3858,9 @@ void OverlayWidget::preloadData(int delta) {
|
||||||
|
|
||||||
void OverlayWidget::mousePressEvent(QMouseEvent *e) {
|
void OverlayWidget::mousePressEvent(QMouseEvent *e) {
|
||||||
updateOver(e->pos());
|
updateOver(e->pos());
|
||||||
if (_menu || !_receiveMouse) return;
|
if (_menu || !_receiveMouse) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ClickHandler::pressed();
|
ClickHandler::pressed();
|
||||||
|
|
||||||
|
@ -4138,16 +4140,18 @@ void OverlayWidget::mouseReleaseEvent(QMouseEvent *e) {
|
||||||
|
|
||||||
void OverlayWidget::contextMenuEvent(QContextMenuEvent *e) {
|
void OverlayWidget::contextMenuEvent(QContextMenuEvent *e) {
|
||||||
if (e->reason() != QContextMenuEvent::Mouse || QRect(_x, _y, _w, _h).contains(e->pos())) {
|
if (e->reason() != QContextMenuEvent::Mouse || QRect(_x, _y, _w, _h).contains(e->pos())) {
|
||||||
if (_menu) {
|
_menu = base::make_unique_q<Ui::PopupMenu>(
|
||||||
_menu->deleteLater();
|
this,
|
||||||
_menu = nullptr;
|
st::mediaviewPopupMenu);
|
||||||
}
|
|
||||||
_menu = new Ui::PopupMenu(this, st::mediaviewPopupMenu);
|
|
||||||
updateActions();
|
updateActions();
|
||||||
for_const (auto &action, _actions) {
|
for_const (auto &action, _actions) {
|
||||||
_menu->addAction(action.text, this, action.member);
|
_menu->addAction(action.text, this, action.member);
|
||||||
}
|
}
|
||||||
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
_menu->setDestroyedCallback(crl::guard(this, [=] {
|
||||||
|
activateControls();
|
||||||
|
_receiveMouse = false;
|
||||||
|
InvokeQueued(this, [=] { receiveMouse(); });
|
||||||
|
}));
|
||||||
_menu->popup(e->globalPos());
|
_menu->popup(e->globalPos());
|
||||||
e->accept();
|
e->accept();
|
||||||
activateControls();
|
activateControls();
|
||||||
|
@ -4309,7 +4313,9 @@ void OverlayWidget::setVisibleHook(bool visible) {
|
||||||
assignMediaPointer(nullptr);
|
assignMediaPointer(nullptr);
|
||||||
_preloadPhotos.clear();
|
_preloadPhotos.clear();
|
||||||
_preloadDocuments.clear();
|
_preloadDocuments.clear();
|
||||||
if (_menu) _menu->hideMenu(true);
|
if (_menu) {
|
||||||
|
_menu->hideMenu(true);
|
||||||
|
}
|
||||||
_controlsHideTimer.cancel();
|
_controlsHideTimer.cancel();
|
||||||
_controlsState = ControlsShown;
|
_controlsState = ControlsShown;
|
||||||
_controlsOpacity = anim::value(1, 1);
|
_controlsOpacity = anim::value(1, 1);
|
||||||
|
@ -4333,15 +4339,6 @@ void OverlayWidget::setVisibleHook(bool visible) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::onMenuDestroy(QObject *obj) {
|
|
||||||
if (_menu == obj) {
|
|
||||||
_menu = nullptr;
|
|
||||||
activateControls();
|
|
||||||
}
|
|
||||||
_receiveMouse = false;
|
|
||||||
InvokeQueued(this, [=] { receiveMouse(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
void OverlayWidget::receiveMouse() {
|
void OverlayWidget::receiveMouse() {
|
||||||
_receiveMouse = true;
|
_receiveMouse = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,7 +128,6 @@ private slots:
|
||||||
void onDelete();
|
void onDelete();
|
||||||
void onOverview();
|
void onOverview();
|
||||||
void onCopy();
|
void onCopy();
|
||||||
void onMenuDestroy(QObject *obj);
|
|
||||||
void receiveMouse();
|
void receiveMouse();
|
||||||
void onPhotoAttachedStickers();
|
void onPhotoAttachedStickers();
|
||||||
void onDocumentAttachedStickers();
|
void onDocumentAttachedStickers();
|
||||||
|
@ -498,7 +497,7 @@ private:
|
||||||
anim::value _controlsOpacity;
|
anim::value _controlsOpacity;
|
||||||
bool _mousePressed = false;
|
bool _mousePressed = false;
|
||||||
|
|
||||||
Ui::PopupMenu *_menu = nullptr;
|
base::unique_qptr<Ui::PopupMenu> _menu;
|
||||||
object_ptr<Ui::DropdownMenu> _dropdown;
|
object_ptr<Ui::DropdownMenu> _dropdown;
|
||||||
base::Timer _dropdownShowTimer;
|
base::Timer _dropdownShowTimer;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue