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();
|
_close->raise();
|
||||||
}
|
}
|
||||||
|
|
||||||
HitTestResult TitleControls::hitTest(QPoint point) const {
|
HitTestResult TitleControls::hitTest(QPoint point, int padding) const {
|
||||||
const auto test = [&](const object_ptr<Button> &button) {
|
const auto parent = _close->parentWidget()->geometry();
|
||||||
return button && button->geometry().contains(point);
|
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;
|
return HitTestResult::Minimize;
|
||||||
} else if (test(_maximizeRestore)) {
|
} else if (test(_maximizeRestore, false)) {
|
||||||
return HitTestResult::MaximizeRestore;
|
return HitTestResult::MaximizeRestore;
|
||||||
} else if (test(_close)) {
|
} else if (test(_close, true)) {
|
||||||
return HitTestResult::Close;
|
return HitTestResult::Close;
|
||||||
}
|
}
|
||||||
return HitTestResult::None;
|
return HitTestResult::None;
|
||||||
|
|
@ -502,7 +505,8 @@ std::unique_ptr<SeparateTitleControls> SetupSeparateTitleControls(
|
||||||
) | rpl::start_with_next([=](not_null<HitTestRequest*> request) {
|
) | rpl::start_with_next([=](not_null<HitTestRequest*> request) {
|
||||||
const auto origin = raw->wrap.pos();
|
const auto origin = raw->wrap.pos();
|
||||||
const auto relative = request->point - origin;
|
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) {
|
if (controlsResult != HitTestResult::None) {
|
||||||
request->result = controlsResult;
|
request->result = controlsResult;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ public:
|
||||||
void setResizeEnabled(bool enabled);
|
void setResizeEnabled(bool enabled);
|
||||||
void raise();
|
void raise();
|
||||||
|
|
||||||
[[nodiscard]] HitTestResult hitTest(QPoint point) const;
|
[[nodiscard]] HitTestResult hitTest(QPoint point, int padding) const;
|
||||||
|
|
||||||
void buttonOver(HitTestResult testResult);
|
void buttonOver(HitTestResult testResult);
|
||||||
void buttonDown(HitTestResult testResult);
|
void buttonDown(HitTestResult testResult);
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,10 @@ HitTestResult TitleWidget::hitTest(QPoint point) const {
|
||||||
const auto origin = _paddingHelper
|
const auto origin = _paddingHelper
|
||||||
? _paddingHelper->controlsParent.pos()
|
? _paddingHelper->controlsParent.pos()
|
||||||
: QPoint();
|
: 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)
|
return (controlsResult != HitTestResult::None)
|
||||||
? controlsResult
|
? controlsResult
|
||||||
: HitTestResult::Caption;
|
: HitTestResult::Caption;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue