Skip to content

Commit

Permalink
Add hit test for window context menu
Browse files Browse the repository at this point in the history
  • Loading branch information
ilya-fedin authored and john-preston committed Jul 26, 2024
1 parent 77d6e19 commit 517b456
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 13 deletions.
2 changes: 1 addition & 1 deletion Telegram/SourceFiles/calls/calls_panel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ void Panel::initWindow() {
}
const auto shown = _layerBg->topShownLayer();
return (!shown || !shown->geometry().contains(widgetPoint))
? (Flag::Move | Flag::FullScreen)
? (Flag::Move | Flag::Menu | Flag::FullScreen)
: Flag::None;
});

Expand Down
2 changes: 1 addition & 1 deletion Telegram/SourceFiles/calls/group/calls_group_panel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ void Panel::initWindow() {
}
const auto shown = _layerBg->topShownLayer();
return (!shown || !shown->geometry().contains(widgetPoint))
? (Flag::Move | Flag::Maximize)
? (Flag::Move | Flag::Menu | Flag::Maximize)
: Flag::None;
});

Expand Down
25 changes: 15 additions & 10 deletions Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -729,25 +729,27 @@ void OverlayWidget::orderWidgets() {
void OverlayWidget::setupWindow() {
_window->setBodyTitleArea([=](QPoint widgetPoint) {
using Flag = Ui::WindowTitleHitTestFlag;
if (!_windowed
|| !_widget->rect().contains(widgetPoint)
Ui::WindowTitleHitTestFlags result;
if (!_widget->rect().contains(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
|| (_streamed
&& _streamed->controls
&& _streamed->controls->dragging())) {
return Flag::None | Flag(0);
} else if ((_w > _widget->width() || _h > _maxUsedHeight)
&& (widgetPoint.y() > st::mediaviewHeaderTop)
&& QRect(_x, _y, _w, _h).contains(widgetPoint)) {
return Flag::None | Flag(0);
} 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);
Expand Down Expand Up @@ -5926,8 +5928,11 @@ void OverlayWidget::handleMouseRelease(
}

bool OverlayWidget::handleContextMenu(std::optional<QPoint> position) {
if (position && !QRect(_x, _y, _w, _h).contains(*position)) {
return false;
if (position) {
if (!QRect(_x, _y, _w, _h).contains(*position)
|| position->y() <= st::mediaviewTitleButton.height) {
return false;
}
}
_menu = base::make_unique_q<Ui::PopupMenu>(
_window,
Expand Down
2 changes: 1 addition & 1 deletion Telegram/lib_ui

0 comments on commit 517b456

Please sign in to comment.