12#include <QtCore/qlogging.h>
13#include <QtGui/private/qaccessiblecache_p.h>
14#include <QtGui/private/qaccessiblebridgeutils_p.h>
15#include <QtGui/qaccessible.h>
21using namespace
Qt::Literals::StringLiterals;
23#if QT_CONFIG(accessibility)
42 Q_ASSERT(*offset <= text->characterCount());
45 int curStart = 0, curEnd = 0;
49 text->textAtOffset(curStart, QAccessible::LineBoundary, &curStart, &curEnd);
51 if (curStart == -1 || curEnd == -1) {
65 text->textAtOffset(curEnd, QAccessible::LineBoundary, &nextStart, &nextEnd);
66 if (nextEnd == curEnd)
69 }
while ((*
line == -1 || curLine < *
line) && (*
offset == -1 || (curEnd <= *
offset)) && curEnd <= text->characterCount());
71 curEnd =
qMin(curEnd,
text->characterCount());
86@implementation QMacAccessibilityElement {
92 NSMutableArray<QMacAccessibilityElement *> *rows;
93 NSMutableArray<QMacAccessibilityElement *> *columns;
101 NSString *synthesizedRole;
106 return [
self initWithId:anId role:nil];
109- (instancetype)initWithId:(
QAccessible::
Id)anId role:(NSAccessibilityRole)role
119 synthesizedRole = role;
123 if (!synthesizedRole) {
124 if (QAccessibleInterface *iface = QAccessible::accessibleInterface(axid)) {
125 if (
iface->tableInterface()) {
126 [
self updateTableModel];
127 }
else if (
const auto *cell =
iface->tableCellInterface()) {
130 m_rowIndex = cell->rowIndex();
131 m_columnIndex = cell->columnIndex();
132 QAccessibleInterface *
table = cell->table();
134 QAccessibleTableInterface *tableInterface =
table->tableInterface();
135 if (tableInterface) {
136 auto *tableElement = [QMacAccessibilityElement elementWithInterface:table];
138 if (!tableElement->rows
139 ||
int(tableElement->rows.count) <= m_rowIndex
140 ||
int(tableElement->rows.count) != tableInterface->rowCount()) {
142 <<
"Cell requested for row" << m_rowIndex <<
"is out of"
143 <<
"bounds for table with" << (tableElement->rows ?
144 tableElement->rows.count : tableInterface->rowCount())
145 <<
"rows! Resizing table model.";
146 [tableElement updateTableModel];
150 Q_ASSERT(
int(tableElement->rows.count) > m_rowIndex);
152 auto *rowElement = tableElement->rows[m_rowIndex];
153 if (!rowElement->columns ||
int(rowElement->columns.count) != tableInterface->columnCount()) {
154 if (rowElement->columns) {
156 <<
"Table representation column count is out of sync:"
157 << rowElement->columns.count <<
"!=" << tableInterface->columnCount();
159 rowElement->columns = [rowElement populateTableRow:rowElement->columns
160 count:tableInterface->columnCount()];
163 qCDebug(lcAccessibilityTable) <<
"Creating cell representation for"
164 << m_rowIndex << m_columnIndex
166 << tableElement->rows.count <<
"rows and"
167 << rowElement->columns.count <<
"columns";
169 rowElement->columns[m_columnIndex] =
self;
185 QAccessibleCache *
cache = QAccessibleCache::instance();
187 QMacAccessibilityElement *element =
cache->elementForId(anId);
189 Q_ASSERT(QAccessible::accessibleInterface(anId));
190 element = [[
self alloc] initWithId:anId];
191 cache->insertElement(anId, element);
196+ (instancetype)elementWithInterface:(QAccessibleInterface *)iface
202 const QAccessible::Id anId = QAccessible::uniqueId(iface);
203 return [
self elementWithId:anId];
210 synthesizedRole = nil;
212 NSAccessibilityPostNotification(self, NSAccessibilityUIElementDestroyedNotification);
225 if ([
object isKindOfClass:[QMacAccessibilityElement class]]) {
227 return other->axid == axid &&
other->synthesizedRole == synthesizedRole;
237- (BOOL)isManagedByParent {
238 return synthesizedRole != nil;
241- (NSMutableArray *)populateTableArray:(NSMutableArray *)array role:(NSAccessibilityRole)role count:(
int)count
243 if (QAccessibleInterface *iface =
self.qtInterface) {
249 array = [NSMutableArray<QMacAccessibilityElement *> arrayWithCapacity:count];
252 [array removeAllObjects];
257 QMacAccessibilityElement *element =
258 [[QMacAccessibilityElement alloc] initWithId:axid role:role];
260 if (role == NSAccessibilityRowRole)
261 element->m_rowIndex =
n;
262 else if (role == NSAccessibilityColumnRole)
263 element->m_columnIndex =
n;
264 [array addObject:element];
267 qWarning(
"QCocoaAccessibility: invalid child");
275- (NSMutableArray *)populateTableRow:(NSMutableArray *)array count:(
int)count
277 Q_ASSERT(synthesizedRole == NSAccessibilityRowRole);
284 array = [NSMutableArray<QMacAccessibilityElement *> arrayWithCapacity:count];
296 QMacAccessibilityElement *cell =
297 [[QMacAccessibilityElement alloc] initWithId:axid role:NSAccessibilityCellRole];
299 cell->m_rowIndex = m_rowIndex;
300 cell->m_columnIndex =
n;
301 [array addObject:cell];
309- (
void)updateTableModel
311 if (QAccessibleInterface *iface =
self.qtInterface) {
312 if (QAccessibleTableInterface *
table =
iface->tableInterface()) {
314 qCDebug(lcAccessibilityTable) <<
"Updating table representation with"
316 rows = [
self populateTableArray:rows role:NSAccessibilityRowRole count:table->rowCount()];
317 columns = [
self populateTableArray:columns role:NSAccessibilityColumnRole count:table->columnCount()];
322- (QAccessibleInterface *)qtInterface
324 QAccessibleInterface *
iface = QAccessible::accessibleInterface(axid);
325 if (!iface || !
iface->isValid())
331 if (synthesizedRole == NSAccessibilityCellRole) {
333 QAccessibleTableInterface *
table =
iface->tableInterface();
335 QAccessibleInterface *cell =
table->cellAt(m_rowIndex, m_columnIndex);
342 axid = QAccessible::uniqueId(cell);
343 synthesizedRole = nil;
345 QAccessibleCache *
cache = QAccessibleCache::instance();
346 if (QMacAccessibilityElement *cellElement =
cache->elementForId(axid)) {
348 Q_ASSERT(cellElement->synthesizedRole == nil);
350 if (cellElement != self) {
352 Q_ASSERT(cellElement->m_rowIndex == m_rowIndex && cellElement->m_columnIndex == m_columnIndex);
353 [cellElement release];
357 cache->insertElement(axid, self);
366- (BOOL)isAccessibilityFocused
369 id focusedElement = NSApp.accessibilityApplicationFocusedUIElement;
370 return [focusedElement isEqual:self];
375+ (
id) lineNumberForIndex: (
int)index forText:(const
QString &)text
378 qsizetype newlines = textBefore.count(u
'\n');
382- (BOOL) accessibilityNotifiesWhenDestroyed {
386- (NSString *) accessibilityRole {
389 return synthesizedRole;
390 if (QAccessibleInterface *iface =
self.qtInterface)
391 return QCocoaAccessible::macRole(iface);
392 return NSAccessibilityUnknownRole;
395- (NSString *) accessibilitySubRole {
396 if (QAccessibleInterface *iface =
self.qtInterface)
397 return QCocoaAccessible::macSubrole(iface);
398 return NSAccessibilityUnknownRole;
401- (NSString *) accessibilityRoleDescription {
402 if (QAccessibleInterface *iface =
self.qtInterface)
403 return NSAccessibilityRoleDescription(
self.accessibilityRole,
self.accessibilitySubRole);
404 return NSAccessibilityUnknownRole;
407- (NSArray *) accessibilityChildren {
409 if (synthesizedRole == NSAccessibilityCellRole)
412 QAccessibleInterface *
iface =
self.qtInterface;
415 if (QAccessibleTableInterface *
table =
iface->tableInterface()) {
417 if (!synthesizedRole) {
450 NSArray *rs = [
self accessibilityRows];
451 NSArray *cs = [
self accessibilityColumns];
452 const int rCount = int([rs
count]);
453 const int cCount = int([cs
count]);
454 int childCount = rCount + cCount;
455 NSMutableArray<QMacAccessibilityElement *> *tableChildren =
456 [NSMutableArray<QMacAccessibilityElement *> arrayWithCapacity:childCount];
457 for (
int i = 0;
i < rCount; ++
i) {
458 [tableChildren addObject:[rs objectAtIndex:i]];
460 for (
int i = 0;
i < cCount; ++
i) {
461 [tableChildren addObject:[cs objectAtIndex:i]];
463 return NSAccessibilityUnignoredChildren(tableChildren);
464 }
else if (synthesizedRole == NSAccessibilityColumnRole) {
466 }
else if (synthesizedRole == NSAccessibilityRowRole) {
470 const int numColumns =
table->columnCount();
471 columns = [
self populateTableRow:columns count:numColumns];
472 return NSAccessibilityUnignoredChildren(columns);
475 return QCocoaAccessible::unignoredChildren(iface);
478- (NSArray *) accessibilitySelectedChildren {
479 QAccessibleInterface *
iface = QAccessible::accessibleInterface(axid);
480 if (!iface || !
iface->isValid())
483 QAccessibleSelectionInterface *
selection =
iface->selectionInterface();
487 const QList<QAccessibleInterface *> selectedList =
selection->selectedItems();
489 NSMutableArray<QMacAccessibilityElement *> *selectedChildren =
490 [NSMutableArray<QMacAccessibilityElement *> arrayWithCapacity:numSelected];
491 for (QAccessibleInterface *selectedChild : selectedList) {
492 if (selectedChild && selectedChild->isValid()) {
493 QAccessible::Id
id = QAccessible::uniqueId(selectedChild);
494 QMacAccessibilityElement *element = [QMacAccessibilityElement elementWithId:id];
496 [selectedChildren addObject:element];
499 return NSAccessibilityUnignoredChildren(selectedChildren);
502- (
id) accessibilityWindow {
504 return [
self.accessibilityParent accessibilityWindow];
507- (
id) accessibilityTopLevelUIElementAttribute {
509 return [
self.accessibilityParent accessibilityTopLevelUIElementAttribute];
512- (NSString *) accessibilityTitle {
513 if (QAccessibleInterface *iface =
self.qtInterface) {
514 if (
iface->role() == QAccessible::StaticText)
516 if (
self.isManagedByParent)
518 return iface->text(QAccessible::Name).toNSString();
523- (BOOL) isAccessibilityEnabled {
524 if (QAccessibleInterface *iface =
self.qtInterface)
525 return !
iface->state().disabled;
529- (
id)accessibilityParent {
530 if (synthesizedRole == NSAccessibilityCellRole) {
532 QMacAccessibilityElement *tableElement =
533 [QMacAccessibilityElement elementWithId:axid];
534 Q_ASSERT(tableElement && tableElement->rows);
535 Q_ASSERT(
int(tableElement->rows.count) > m_rowIndex);
536 QMacAccessibilityElement *rowElement = tableElement->rows[m_rowIndex];
540 QAccessibleInterface *
iface =
self.qtInterface;
544 if (
self.isManagedByParent) {
546 return NSAccessibilityUnignoredAncestor([QMacAccessibilityElement elementWithId:axid]);
554 if (QAccessibleInterface *parent =
iface->parent()) {
555 if (parent->tableInterface()) {
556 QMacAccessibilityElement *tableElement =
557 [QMacAccessibilityElement elementWithInterface:parent];
561 if (m_rowIndex >= 0 && m_columnIndex >= 0)
562 rowIndex = m_rowIndex;
563 else if (QAccessibleTableCellInterface *cell =
iface->tableCellInterface())
564 rowIndex = cell->rowIndex();
566 if (rowIndex >
int([tableElement->rows
count]) || rowIndex == -1)
568 QMacAccessibilityElement *rowElement = tableElement->rows[rowIndex];
569 return NSAccessibilityUnignoredAncestor(rowElement);
571 if (parent->role() != QAccessible::Application)
572 return NSAccessibilityUnignoredAncestor([QMacAccessibilityElement elementWithInterface: parent]);
577 if (platformWindow) {
585- (NSRect)accessibilityFrame {
586 QAccessibleInterface *
iface =
self.qtInterface;
591 if (
self.isManagedByParent) {
592 if (QAccessibleTableInterface *
table =
iface->tableInterface()) {
599 const bool isRow = synthesizedRole == NSAccessibilityRowRole;
601 int &
row = isRow ? cellPos.
ry() : cellPos.rx();
602 int &col = isRow ? cellPos.rx() : cellPos.ry();
605 if (trackIndex != NSNotFound) {
606 row = int(trackIndex);
607 if (QAccessibleInterface *firstCell =
table->cellAt(cellPos.y(), cellPos.x())) {
608 rect = firstCell->rect();
609 col = isRow ?
table->columnCount() :
table->rowCount();
612 if (QAccessibleInterface *lastCell =
613 table->cellAt(cellPos.y(), cellPos.x()))
614 rect =
rect.united(lastCell->rect());
626- (NSString*)accessibilityLabel {
627 if (QAccessibleInterface *iface =
self.qtInterface)
628 return iface->text(QAccessible::Description).toNSString();
629 qWarning() <<
"Called accessibilityLabel on invalid object: " << axid;
633- (
void)setAccessibilityLabel:(NSString*)label{
634 if (QAccessibleInterface *iface =
self.qtInterface)
635 iface->setText(QAccessible::Description, QString::fromNSString(
label));
638- (
id) accessibilityValue {
639 if (QAccessibleInterface *iface =
self.qtInterface) {
642 if (QCocoaAccessible::hasValueAttribute(iface))
643 return QCocoaAccessible::getValueAttribute(iface);
648- (
NSInteger) accessibilityNumberOfCharacters {
649 if (QAccessibleInterface *iface =
self.qtInterface) {
650 if (QAccessibleTextInterface *
text =
iface->textInterface())
651 return text->characterCount();
656- (NSString *) accessibilitySelectedText {
657 if (QAccessibleInterface *iface =
self.qtInterface) {
658 if (QAccessibleTextInterface *
text =
iface->textInterface()) {
668- (NSRange) accessibilitySelectedTextRange {
669 QAccessibleInterface *
iface =
self.qtInterface;
672 if (QAccessibleTextInterface *
text =
iface->textInterface()) {
675 if (
text->selectionCount() > 0) {
683 return NSMakeRange(0, 0);
687 QAccessibleInterface *
iface =
self.qtInterface;
690 if (QAccessibleTextInterface *
text =
iface->textInterface()) {
692 return textToPos.
count(
'\n');
697- (NSRange)accessibilityVisibleCharacterRange {
698 QAccessibleInterface *
iface =
self.qtInterface;
702 if (QAccessibleTextInterface *
text =
iface->textInterface())
703 return NSMakeRange(0,
static_cast<uint>(
text->characterCount()));
704 return NSMakeRange(0,
static_cast<uint>(
iface->text(QAccessible::Name).length()));
707- (
NSInteger) accessibilityInsertionPointLineNumber {
708 QAccessibleInterface *
iface =
self.qtInterface;
711 if (QAccessibleTextInterface *
text =
iface->textInterface()) {
713 return [
self accessibilityLineForIndex:position];
718- (NSArray *)accessibilityParameterizedAttributeNames {
720 QAccessibleInterface *
iface =
self.qtInterface;
722 qWarning() <<
"Called attribute on invalid object: " << axid;
726 if (
iface->textInterface()) {
728 NSAccessibilityStringForRangeParameterizedAttribute,
729 NSAccessibilityLineForIndexParameterizedAttribute,
730 NSAccessibilityRangeForLineParameterizedAttribute,
731 NSAccessibilityRangeForPositionParameterizedAttribute,
733 NSAccessibilityBoundsForRangeParameterizedAttribute,
735 NSAccessibilityStyleRangeForIndexParameterizedAttribute,
736 NSAccessibilityAttributedStringForRangeParameterizedAttribute
743- (
id)accessibilityAttributeValue:(NSString *)attribute forParameter:(
id)parameter {
744 QAccessibleInterface *
iface =
self.qtInterface;
746 qWarning() <<
"Called attribute on invalid object: " << axid;
750 if (!
iface->textInterface())
753 if ([
attribute isEqualToString: NSAccessibilityStringForRangeParameterizedAttribute]) {
754 NSRange
range = [parameter rangeValue];
756 return text.toNSString();
758 if ([
attribute isEqualToString: NSAccessibilityLineForIndexParameterizedAttribute]) {
759 int index = [parameter intValue];
760 if (index < 0 || index >
iface->textInterface()->characterCount())
763 if (
iface->state().multiLine) {
769 if ([
attribute isEqualToString: NSAccessibilityRangeForLineParameterizedAttribute]) {
770 int line = [parameter intValue];
776 convertLineOffset(
iface->textInterface(), &
line, &lineOffset, &startOffset, &endOffset);
777 return [NSValue valueWithRange:NSMakeRange(startOffset, endOffset - startOffset)];
779 if ([
attribute isEqualToString: NSAccessibilityBoundsForRangeParameterizedAttribute]) {
780 NSRange
range = [parameter rangeValue];
781 QRect firstRect =
iface->textInterface()->characterRect(
range.location);
783 if (
range.length > 0) {
788 rect = firstRect.united(lastRect);
793 return [NSValue valueWithRect:QCocoaScreen::mapToNative(rect)];
795 if ([
attribute isEqualToString: NSAccessibilityAttributedStringForRangeParameterizedAttribute]) {
796 NSRange
range = [parameter rangeValue];
798 return [[NSAttributedString alloc] initWithString:text.toNSString()];
799 }
else if ([
attribute isEqualToString: NSAccessibilityRangeForPositionParameterizedAttribute]) {
801 int offset =
iface->textInterface()->offsetAtPoint(point);
802 return [NSValue valueWithRange:NSMakeRange(static_cast<NSUInteger>(offset), 1)];
803 }
else if ([
attribute isEqualToString: NSAccessibilityStyleRangeForIndexParameterizedAttribute]) {
806 iface->textInterface()->attributes([parameter intValue], &
start, &
end);
807 return [NSValue valueWithRange:NSMakeRange(static_cast<NSUInteger>(start), static_cast<NSUInteger>(end - start))];
812- (BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
813 QAccessibleInterface *
iface =
self.qtInterface;
817 if ([
attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
818 return iface->state().focusable ? YES : NO;
819 }
else if ([
attribute isEqualToString:NSAccessibilityValueAttribute]) {
820 if (
iface->textInterface() &&
iface->state().editable)
822 if (
iface->valueInterface())
825 }
else if ([
attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) {
826 return iface->textInterface() ? YES : NO;
831- (
void)accessibilitySetValue:(
id)value forAttribute:(NSString *)attribute {
832 QAccessibleInterface *
iface =
self.qtInterface;
835 if ([
attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
836 if (QAccessibleActionInterface *action =
iface->actionInterface())
837 action->doAction(QAccessibleActionInterface::setFocusAction());
838 }
else if ([
attribute isEqualToString:NSAccessibilityValueAttribute]) {
839 if (
iface->textInterface()) {
841 iface->setText(QAccessible::Value,
text);
842 }
else if (QAccessibleValueInterface *valueIface =
iface->valueInterface()) {
843 double val = [value doubleValue];
844 valueIface->setCurrentValue(
val);
846 }
else if ([
attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) {
847 if (QAccessibleTextInterface *
text =
iface->textInterface()) {
848 NSRange
range = [value rangeValue];
849 if (
range.length > 0)
859- (NSArray *)accessibilityActionNames {
860 NSMutableArray *nsActions = [[NSMutableArray new] autorelease];
861 QAccessibleInterface *
iface =
self.qtInterface;
866 for (
const QString &qtAction : supportedActionNames) {
867 NSString *nsAction = QCocoaAccessible::getTranslatedAction(qtAction);
869 [nsActions addObject : nsAction];
875- (NSString *)accessibilityActionDescription:(NSString *)action {
876 QAccessibleInterface *
iface =
self.qtInterface;
879 QString qtAction = QCocoaAccessible::translateAction(action, iface);
882 if (qtAction.isEmpty()) {
883 if (QAccessibleActionInterface *actionInterface =
iface->actionInterface()) {
884 qtAction = QString::fromNSString((NSString *)action);
885 description = actionInterface->localizedActionDescription(qtAction);
888 description = qAccessibleLocalizedActionDescription(qtAction);
890 return description.toNSString();
893- (
void)accessibilityPerformAction:(NSString *)action {
894 if (QAccessibleInterface *iface =
self.qtInterface) {
895 const QString qtAction = QCocoaAccessible::translateAction(action, iface);
902- (BOOL)accessibilityIsIgnored {
906 if (
self.isManagedByParent)
909 if (QAccessibleInterface *iface =
self.qtInterface)
910 return QCocoaAccessible::shouldBeIgnored(iface);
914- (
id)accessibilityHitTest:(NSPoint)point {
915 QAccessibleInterface *
iface =
self.qtInterface;
918 return NSAccessibilityUnignoredAncestor(self);
922 QAccessibleInterface *childInterface =
iface->childAt(screenPoint.x(), screenPoint.y());
924 if (!childInterface || !childInterface->isValid())
925 return NSAccessibilityUnignoredAncestor(self);
928 QAccessibleInterface *childOfChildInterface =
nullptr;
930 childOfChildInterface = childInterface->childAt(screenPoint.x(), screenPoint.y());
931 if (childOfChildInterface && childOfChildInterface->isValid())
932 childInterface = childOfChildInterface;
933 }
while (childOfChildInterface && childOfChildInterface->isValid());
936 QMacAccessibilityElement *accessibleElement = [QMacAccessibilityElement elementWithInterface:childInterface];
937 if (accessibleElement)
938 return NSAccessibilityUnignoredAncestor(accessibleElement);
939 return NSAccessibilityUnignoredAncestor(self);
942- (
id)accessibilityFocusedUIElement {
943 QAccessibleInterface *
iface =
self.qtInterface;
945 qWarning(
"FocusedUIElement for INVALID");
949 QAccessibleInterface *childInterface =
iface->focusChild();
950 if (childInterface && childInterface->isValid()) {
951 QMacAccessibilityElement *accessibleElement = [QMacAccessibilityElement elementWithInterface:childInterface];
952 return NSAccessibilityUnignoredAncestor(accessibleElement);
955 return NSAccessibilityUnignoredAncestor(self);
958- (NSString *) accessibilityHelp {
959 if (QAccessibleInterface *iface =
self.qtInterface) {
972 if (synthesizedRole == NSAccessibilityCellRole)
973 return m_columnIndex;
974 if (QAccessibleInterface *iface =
self.qtInterface) {
975 if (
self.isManagedByParent) {
978 if (QAccessibleTableInterface *
table =
iface->tableInterface()) {
981 else if (m_columnIndex >= 0)
989- (NSArray *) accessibilityRows {
990 if (!synthesizedRole && rows) {
991 QAccessibleInterface *
iface =
self.qtInterface;
992 if (iface &&
iface->tableInterface())
993 return NSAccessibilityUnignoredChildren(rows);
998- (NSArray *) accessibilityColumns {
999 if (!synthesizedRole && columns) {
1000 QAccessibleInterface *
iface =
self.qtInterface;
1001 if (iface &&
iface->tableInterface())
1002 return NSAccessibilityUnignoredChildren(columns);
static bool isEqual(const aiUVTransform &a, const aiUVTransform &b)
The QAccessible class provides enums and static functions related to accessibility.
static CGPoint mapToNative(const QPointF &pos, QCocoaScreen *screen=QCocoaScreen::primaryScreen())
static QPointF mapFromNative(CGPoint pos, QCocoaScreen *screen=QCocoaScreen::primaryScreen())
qsizetype size() const noexcept
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
constexpr int & ry() noexcept
Returns a reference to the y coordinate of this point.
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
constexpr QStringView left(qsizetype n) const noexcept
\macro QT_RESTRICTED_CAST_FROM_ASCII
qsizetype count(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
QHash< int, QWidget * > hash
[35multi]
QCache< int, Employee > cache
[0]
QStringList effectiveActionNames(QAccessibleInterface *iface)
bool performEffectiveAction(QAccessibleInterface *iface, const QString &actionName)
constexpr QBindableInterface iface
QNSView * qnsview_cast(NSView *view)
Returns the view cast to a QNSview if possible.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
EGLOutputLayerEXT EGLint attribute
#define Q_LOGGING_CATEGORY(name,...)
#define qCWarning(category,...)
#define qCDebug(category,...)
constexpr const T & qMin(const T &a, const T &b)
GLenum GLuint GLenum GLsizei length
GLenum GLenum GLsizei count
GLuint GLsizei const GLchar * label
[43]
GLenum GLuint GLintptr offset
GLenum GLenum GLsizei void * row
GLenum GLenum GLsizei void * table
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
static QString helpText(const QCommandLineParser &p, const PluginInformation &pluginInfo)
QItemSelection * selection
[0]