mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Add hit test for window context menu
This commit is contained in:
parent
77d6e19214
commit
517b456670
4 changed files with 18 additions and 13 deletions
|
@ -215,7 +215,7 @@ void Panel::initWindow() {
|
||||||
}
|
}
|
||||||
const auto shown = _layerBg->topShownLayer();
|
const auto shown = _layerBg->topShownLayer();
|
||||||
return (!shown || !shown->geometry().contains(widgetPoint))
|
return (!shown || !shown->geometry().contains(widgetPoint))
|
||||||
? (Flag::Move | Flag::FullScreen)
|
? (Flag::Move | Flag::Menu | Flag::FullScreen)
|
||||||
: Flag::None;
|
: Flag::None;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -410,7 +410,7 @@ void Panel::initWindow() {
|
||||||
}
|
}
|
||||||
const auto shown = _layerBg->topShownLayer();
|
const auto shown = _layerBg->topShownLayer();
|
||||||
return (!shown || !shown->geometry().contains(widgetPoint))
|
return (!shown || !shown->geometry().contains(widgetPoint))
|
||||||
? (Flag::Move | Flag::Maximize)
|
? (Flag::Move | Flag::Menu | Flag::Maximize)
|
||||||
: Flag::None;
|
: Flag::None;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -729,25 +729,27 @@ void OverlayWidget::orderWidgets() {
|
||||||
void OverlayWidget::setupWindow() {
|
void OverlayWidget::setupWindow() {
|
||||||
_window->setBodyTitleArea([=](QPoint widgetPoint) {
|
_window->setBodyTitleArea([=](QPoint widgetPoint) {
|
||||||
using Flag = Ui::WindowTitleHitTestFlag;
|
using Flag = Ui::WindowTitleHitTestFlag;
|
||||||
if (!_windowed
|
Ui::WindowTitleHitTestFlags result;
|
||||||
|| !_widget->rect().contains(widgetPoint)
|
if (!_widget->rect().contains(widgetPoint)
|
||||||
|| _helper->skipTitleHitTest(widgetPoint)) {
|
|| _helper->skipTitleHitTest(widgetPoint)) {
|
||||||
return Flag::None | Flag(0);
|
return result;
|
||||||
}
|
}
|
||||||
const auto inControls = (_over != Over::None) && (_over != Over::Video);
|
if (widgetPoint.y() <= st::mediaviewTitleButton.height) {
|
||||||
|
result |= Flag::Menu;
|
||||||
|
}
|
||||||
|
const auto inControls = ((_over != Over::None) && (_over != Over::Video));
|
||||||
if (inControls
|
if (inControls
|
||||||
|| (_streamed
|
|| (_streamed
|
||||||
&& _streamed->controls
|
&& _streamed->controls
|
||||||
&& _streamed->controls->dragging())) {
|
&& _streamed->controls->dragging())) {
|
||||||
return Flag::None | Flag(0);
|
|
||||||
} else if ((_w > _widget->width() || _h > _maxUsedHeight)
|
} else if ((_w > _widget->width() || _h > _maxUsedHeight)
|
||||||
&& (widgetPoint.y() > st::mediaviewHeaderTop)
|
&& (widgetPoint.y() > st::mediaviewHeaderTop)
|
||||||
&& QRect(_x, _y, _w, _h).contains(widgetPoint)) {
|
&& QRect(_x, _y, _w, _h).contains(widgetPoint)) {
|
||||||
return Flag::None | Flag(0);
|
|
||||||
} else if (_stories && _stories->ignoreWindowMove(widgetPoint)) {
|
} else if (_stories && _stories->ignoreWindowMove(widgetPoint)) {
|
||||||
return Flag::None | Flag(0);
|
} else if (_windowed) {
|
||||||
|
result |= Flag::Move;
|
||||||
}
|
}
|
||||||
return Flag::Move | Flag(0);
|
return result;
|
||||||
});
|
});
|
||||||
|
|
||||||
_window->setAttribute(Qt::WA_NoSystemBackground, true);
|
_window->setAttribute(Qt::WA_NoSystemBackground, true);
|
||||||
|
@ -5926,8 +5928,11 @@ void OverlayWidget::handleMouseRelease(
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OverlayWidget::handleContextMenu(std::optional<QPoint> position) {
|
bool OverlayWidget::handleContextMenu(std::optional<QPoint> position) {
|
||||||
if (position && !QRect(_x, _y, _w, _h).contains(*position)) {
|
if (position) {
|
||||||
return false;
|
if (!QRect(_x, _y, _w, _h).contains(*position)
|
||||||
|
|| position->y() <= st::mediaviewTitleButton.height) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_menu = base::make_unique_q<Ui::PopupMenu>(
|
_menu = base::make_unique_q<Ui::PopupMenu>(
|
||||||
_window,
|
_window,
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 45f3a330679b775f0f56bbea7b40f83ebd8f5639
|
Subproject commit 03f250aab2e791bfb6a047bffa05273748518816
|
Loading…
Add table
Reference in a new issue