summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm9
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm14
2 files changed, 16 insertions, 7 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
index 38a402fb2f..f0ef70e3a3 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
@@ -113,7 +113,6 @@ static void convertLineOffset(QAccessibleTextInterface *text, int *line, int *of
}
@implementation QMacAccessibilityElement {
- NSString *role;
QAccessible::Id axid;
}
@@ -123,9 +122,6 @@ static void convertLineOffset(QAccessibleTextInterface *text, int *line, int *of
self = [super init];
if (self) {
axid = anId;
- QAccessibleInterface *iface = QAccessible::accessibleInterface(axid);
- Q_ASSERT(iface);
- role = QCocoaAccessible::macRole(iface);
}
return self;
@@ -295,11 +291,12 @@ static void convertLineOffset(QAccessibleTextInterface *text, int *line, int *of
}
if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) {
- return role;
+ return QCocoaAccessible::macRole(iface);
} else if ([attribute isEqualToString:NSAccessibilitySubroleAttribute]) {
return QCocoaAccessible::macSubrole(iface);
} else if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
- return NSAccessibilityRoleDescription(role, [self accessibilityAttributeValue:NSAccessibilitySubroleAttribute]);
+ return NSAccessibilityRoleDescription(QCocoaAccessible::macRole(iface),
+ [self accessibilityAttributeValue:NSAccessibilitySubroleAttribute]);
} else if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
return QCocoaAccessible::unignoredChildren(iface);
} else if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 774ccdbf4c..beb17ec44e 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -228,8 +228,9 @@ QSurfaceFormat QCocoaWindow::format() const
// Upgrade the default surface format to include an alpha channel. The default RGB format
// causes Cocoa to spend an unreasonable amount of time converting it to RGBA internally.
- if (format == QSurfaceFormat())
+ if (format.alphaBufferSize() < 0)
format.setAlphaBufferSize(8);
+
return format;
}
@@ -1487,6 +1488,17 @@ void QCocoaWindow::requestUpdate()
void QCocoaWindow::deliverUpdateRequest()
{
+ // Don't send update requests for views that need display, as the update
+ // request doesn't carry any information about dirty rects, so the app
+ // may end up painting a smaller region than required. (For some reason
+ // the layer and view's needsDisplay status isn't always in sync, even if
+ // the view is layer-backed, not layer-hosted, so we check both).
+ if (m_view.layer.needsDisplay || m_view.needsDisplay) {
+ qCDebug(lcQpaDrawing) << "View needs display, deferring update request for" << window();
+ requestUpdate();
+ return;
+ }
+
qCDebug(lcQpaDrawing) << "Delivering update request to" << window();
QPlatformWindow::deliverUpdateRequest();
}