QAccessibleWidget: replace QString default arg with overload

We should not use defaulted arguments of non-trivial type, because
their construction and destruction, even if not passed, is repeated at
every call site, producing O(n) executable code.

By overloading out-of-line, we execute the same code at runtime, but
we have only one copy of the arg construction and destruction, in the
library, O(1) executable code production.

Found in API-review of QAccessibleWidgetV2.

Amends the start of the public history.

Can't pick further than (unreleased) 6.10, because this adds a new
symbol.

Task-number: QTBUG-98117
Change-Id: I705bca764992d9e7a2aa1021e0f94006b6817177
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit ab53b1293122518a512335b94491566305280851)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2025-06-13 10:35:01 +02:00 committed by Qt Cherry-pick Bot
parent 4a4d11c178
commit bbb284cd70
2 changed files with 15 additions and 5 deletions

View File

@ -153,15 +153,24 @@ public:
/*!
Creates a QAccessibleWidget object for widget \a w.
\a role and \a name are optional parameters that set the object's
role and name properties.
\a role is an optional parameter that sets the object's role property.
*/
QAccessibleWidget::QAccessibleWidget(QWidget *w, QAccessible::Role role, const QString &name)
QAccessibleWidget::QAccessibleWidget(QWidget *w, QAccessible::Role role)
: QAccessibleObject(w)
{
Q_ASSERT(widget());
d = new QAccessibleWidgetPrivate();
d->role = role;
}
/*!
Creates a QAccessibleWidget object for widget \a w.
\a role and \a name are optional parameters that set the object's
role and name properties.
*/
QAccessibleWidget::QAccessibleWidget(QWidget *w, QAccessible::Role role, const QString &name)
: QAccessibleWidget(w, role)
{
d->name = name;
}
@ -490,7 +499,7 @@ QAccessibleWidgetV2::QAccessibleWidgetV2(QWidget *object, QAccessible::Role role
}
QAccessibleWidgetV2::QAccessibleWidgetV2(QWidget *object, QAccessible::Role role)
: QAccessibleWidgetV2(object, role, QString())
: QAccessibleWidget(object, role)
{
}

View File

@ -19,7 +19,8 @@ class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject,
public QAccessibleActionInterface
{
public:
explicit QAccessibleWidget(QWidget *o, QAccessible::Role r = QAccessible::Client, const QString& name = QString());
explicit QAccessibleWidget(QWidget *o, QAccessible::Role r = QAccessible::Client);
explicit QAccessibleWidget(QWidget *o, QAccessible::Role r, const QString& name);
bool isValid() const override;
QWindow *window() const override;