diff --git a/Telegram/SourceFiles/window/layer_widget.cpp b/Telegram/SourceFiles/window/layer_widget.cpp index 7d918fe62..d817aba34 100644 --- a/Telegram/SourceFiles/window/layer_widget.cpp +++ b/Telegram/SourceFiles/window/layer_widget.cpp @@ -375,18 +375,23 @@ void LayerStackWidget::keyPressEvent(QKeyEvent *e) { } void LayerStackWidget::mousePressEvent(QMouseEvent *e) { - if (_hideByBackgroundClick) { - if (const auto layer = currentLayer()) { - if (!layer->closeByOutsideClick()) { - return; - } - } else if (const auto special = _specialLayer.data()) { - if (!special->closeByOutsideClick()) { - return; - } - } - hideCurrent(anim::type::normal); + crl::on_main(this, [=] { backgroundClicked(); }); +} + +void LayerStackWidget::backgroundClicked() { + if (!_hideByBackgroundClick) { + return; } + if (const auto layer = currentLayer()) { + if (!layer->closeByOutsideClick()) { + return; + } + } else if (const auto special = _specialLayer.data()) { + if (!special->closeByOutsideClick()) { + return; + } + } + hideCurrent(anim::type::normal); } void LayerStackWidget::hideCurrent(anim::type animated) { diff --git a/Telegram/SourceFiles/window/layer_widget.h b/Telegram/SourceFiles/window/layer_widget.h index d75c68661..d55644427 100644 --- a/Telegram/SourceFiles/window/layer_widget.h +++ b/Telegram/SourceFiles/window/layer_widget.h @@ -134,6 +134,7 @@ private: void replaceBox( object_ptr box, anim::type animated); + void backgroundClicked(); LayerWidget *pushBox( object_ptr box,