mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +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;
|
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->setTitle(u"Media viewer"_q);
|
||||||
_window->setTitleStyle(st::mediaviewTitle);
|
_window->setTitleStyle(st::mediaviewTitle);
|
||||||
|
|
|
@ -234,4 +234,18 @@ void DefaultOverlayWidgetHelper::setControlsOpacity(float64 opacity) {
|
||||||
_buttons->setMasterOpacity(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
|
} // namespace Platform
|
||||||
|
|
|
@ -49,6 +49,10 @@ public:
|
||||||
}
|
}
|
||||||
virtual void setControlsOpacity(float64 opacity) {
|
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(
|
[[nodiscard]] std::unique_ptr<OverlayWidgetHelper> CreateOverlayWidgetHelper(
|
||||||
|
@ -68,6 +72,7 @@ public:
|
||||||
void beforeShow(bool fullscreen) override;
|
void beforeShow(bool fullscreen) override;
|
||||||
void clearState() override;
|
void clearState() override;
|
||||||
void setControlsOpacity(float64 opacity) override;
|
void setControlsOpacity(float64 opacity) override;
|
||||||
|
rpl::producer<not_null<QMouseEvent*>> mouseEvents() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class Buttons;
|
class Buttons;
|
||||||
|
|
Loading…
Add table
Reference in a new issue