Enlarge padded title controls hit area.
This commit is contained in:
parent
73ec29fa06
commit
5d475f54f0
3 changed files with 16 additions and 9 deletions
|
|
@ -218,15 +218,18 @@ void TitleControls::raise() {
|
|||
_close->raise();
|
||||
}
|
||||
|
||||
HitTestResult TitleControls::hitTest(QPoint point) const {
|
||||
const auto test = [&](const object_ptr<Button> &button) {
|
||||
return button && button->geometry().contains(point);
|
||||
HitTestResult TitleControls::hitTest(QPoint point, int padding) const {
|
||||
const auto parent = _close->parentWidget()->geometry();
|
||||
const auto test = [&](const object_ptr<Button> &button, bool close) {
|
||||
return button && button->geometry().marginsAdded(
|
||||
{ close ? padding : 0, padding, close ? padding : 0, 0 }
|
||||
).contains(point);
|
||||
};
|
||||
if (test(_minimize)) {
|
||||
if (test(_minimize, false)) {
|
||||
return HitTestResult::Minimize;
|
||||
} else if (test(_maximizeRestore)) {
|
||||
} else if (test(_maximizeRestore, false)) {
|
||||
return HitTestResult::MaximizeRestore;
|
||||
} else if (test(_close)) {
|
||||
} else if (test(_close, true)) {
|
||||
return HitTestResult::Close;
|
||||
}
|
||||
return HitTestResult::None;
|
||||
|
|
@ -502,7 +505,8 @@ std::unique_ptr<SeparateTitleControls> SetupSeparateTitleControls(
|
|||
) | rpl::start_with_next([=](not_null<HitTestRequest*> request) {
|
||||
const auto origin = raw->wrap.pos();
|
||||
const auto relative = request->point - origin;
|
||||
const auto controlsResult = raw->controls.hitTest(relative);
|
||||
const auto padding = window->additionalContentPadding();
|
||||
const auto controlsResult = raw->controls.hitTest(relative, padding);
|
||||
if (controlsResult != HitTestResult::None) {
|
||||
request->result = controlsResult;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public:
|
|||
void setResizeEnabled(bool enabled);
|
||||
void raise();
|
||||
|
||||
[[nodiscard]] HitTestResult hitTest(QPoint point) const;
|
||||
[[nodiscard]] HitTestResult hitTest(QPoint point, int padding) const;
|
||||
|
||||
void buttonOver(HitTestResult testResult);
|
||||
void buttonDown(HitTestResult testResult);
|
||||
|
|
|
|||
|
|
@ -130,7 +130,10 @@ HitTestResult TitleWidget::hitTest(QPoint point) const {
|
|||
const auto origin = _paddingHelper
|
||||
? _paddingHelper->controlsParent.pos()
|
||||
: QPoint();
|
||||
const auto controlsResult = _controls.hitTest(point - origin);
|
||||
const auto padding = _paddingHelper
|
||||
? _paddingHelper->padding.current()
|
||||
: 0;
|
||||
const auto controlsResult = _controls.hitTest(point - origin, padding);
|
||||
return (controlsResult != HitTestResult::None)
|
||||
? controlsResult
|
||||
: HitTestResult::Caption;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue