mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 14:17:12 +02:00
Fixed closing media viewer in fullscreen mode with click on top area.
This commit is contained in:
parent
d961b56a2d
commit
9803342c93
3 changed files with 38 additions and 0 deletions
|
@ -474,6 +474,25 @@ OverlayWidget::OverlayWidget()
|
|||
}
|
||||
return base::EventFilterResult::Continue;
|
||||
});
|
||||
_helper->mouseEvents(
|
||||
) | rpl::start_with_next([=](not_null<QMouseEvent*> e) {
|
||||
const auto type = e->type();
|
||||
const auto position = e->pos();
|
||||
if (_helper->skipTitleHitTest(position)) {
|
||||
return;
|
||||
}
|
||||
if (type == QEvent::MouseButtonPress) {
|
||||
handleMousePress(position, e->button());
|
||||
} else if (type == QEvent::MouseButtonRelease) {
|
||||
handleMouseRelease(position, e->button());
|
||||
} else if (type == QEvent::MouseMove) {
|
||||
handleMouseMove(position);
|
||||
} else if (type == QEvent::MouseButtonDblClick) {
|
||||
if (!handleDoubleClick(position, e->button())) {
|
||||
handleMousePress(position, e->button());
|
||||
}
|
||||
}
|
||||
}, lifetime());
|
||||
|
||||
_window->setTitle(u"Media viewer"_q);
|
||||
_window->setTitleStyle(st::mediaviewTitle);
|
||||
|
|
|
@ -234,4 +234,18 @@ void DefaultOverlayWidgetHelper::setControlsOpacity(float64 opacity) {
|
|||
_buttons->setMasterOpacity(opacity);
|
||||
}
|
||||
|
||||
auto DefaultOverlayWidgetHelper::mouseEvents() const
|
||||
-> rpl::producer<not_null<QMouseEvent*>> {
|
||||
return _controls->wrap.events(
|
||||
) | rpl::filter([](not_null<QEvent*> e) {
|
||||
const auto type = e->type();
|
||||
return (type == QEvent::MouseButtonPress)
|
||||
|| (type == QEvent::MouseButtonRelease)
|
||||
|| (type == QEvent::MouseMove)
|
||||
|| (type == QEvent::MouseButtonDblClick);
|
||||
}) | rpl::map([](not_null<QEvent*> e) {
|
||||
return not_null{ static_cast<QMouseEvent*>(e.get()) };
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace Platform
|
||||
|
|
|
@ -49,6 +49,10 @@ public:
|
|||
}
|
||||
virtual void setControlsOpacity(float64 opacity) {
|
||||
}
|
||||
[[nodiscard]] virtual auto mouseEvents() const
|
||||
-> rpl::producer<not_null<QMouseEvent*>> {
|
||||
return rpl::never<not_null<QMouseEvent*>>();
|
||||
}
|
||||
};
|
||||
|
||||
[[nodiscard]] std::unique_ptr<OverlayWidgetHelper> CreateOverlayWidgetHelper(
|
||||
|
@ -68,6 +72,7 @@ public:
|
|||
void beforeShow(bool fullscreen) override;
|
||||
void clearState() override;
|
||||
void setControlsOpacity(float64 opacity) override;
|
||||
rpl::producer<not_null<QMouseEvent*>> mouseEvents() const override;
|
||||
|
||||
private:
|
||||
class Buttons;
|
||||
|
|
Loading…
Add table
Reference in a new issue