Move method only used in keypad navigation to a better place

QDesktopWidget in particular doesn't use that code anymore.

Change-Id: I8eed752175c5478663b25872c7ffe78c814245d7
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Volker Hilsheimer 2020-07-07 22:11:14 +02:00
parent a2cef41a31
commit 4f952aaea1
2 changed files with 14 additions and 27 deletions

View File

@ -6872,30 +6872,6 @@ void QWidgetPrivate::reparentFocusWidgets(QWidget * oldtlw)
}
/*!\internal
Measures the shortest distance from a point to a rect.
This function is called from QDesktopwidget::screen(QPoint) to find the
closest screen for a point.
In directional KeypadNavigation, it is called to find the closest
widget to the current focus widget center.
*/
int QWidgetPrivate::pointToRect(const QPoint &p, const QRect &r)
{
int dx = 0;
int dy = 0;
if (p.x() < r.left())
dx = r.left() - p.x();
else if (p.x() > r.right())
dx = p.x() - r.right();
if (p.y() < r.top())
dy = r.top() - p.y();
else if (p.y() > r.bottom())
dy = p.y() - r.bottom();
return dx + dy;
}
/*!
\property QWidget::frameSize
\brief the size of the widget including any window frame
@ -11780,7 +11756,20 @@ QWidget *QWidgetPrivate::widgetInNavigationDirection(Direction direction)
&& targetCandidate->isVisible()
// ...is in the same window,
&& targetCandidate->window() == sourceWindow) {
const int targetCandidateDistance = pointToRect(sourcePoint, targetCandidateRect);
const int targetCandidateDistance = [](const QPoint &sourcePoint,
const QRect &targetCandidateRect) {
int dx = 0;
int dy = 0;
if (p.x() < r.left())
dx = r.left() - p.x();
else if (p.x() > r.right())
dx = p.x() - r.right();
if (p.y() < r.top())
dy = r.top() - p.y();
else if (p.y() > r.bottom())
dy = p.y() - r.bottom();
return dx + dy;
}();
if (targetCandidateDistance < shortestDistance) {
shortestDistance = targetCandidateDistance;
targetWidget = targetCandidate;

View File

@ -398,8 +398,6 @@ public:
void reparentFocusWidgets(QWidget *oldtlw);
static int pointToRect(const QPoint &p, const QRect &r);
void setWinId(WId);
void showChildren(bool spontaneous);
void hideChildren(bool spontaneous);