+2005-01-31 David Harrison <harrison@apple.com>
+
+ Reviewed by Darin
+
+ <rdar://problem/3850876> AX: button exposed as only an AXImage at http://appleseed.apple.com/ site (<input type=image>)
+
+ * khtml/rendering/render_form.h:
+ (khtml::RenderImageButton::isImageButton):
+ New.
+ * khtml/rendering/render_image.h:
+ (khtml::RenderImage::isImageButton):
+ New.
+ * kwq/KWQAccObject.mm:
+ (-[KWQAccObject isImageButton]):
+ (-[KWQAccObject actionElement]):
+ (-[KWQAccObject role]):
+ (-[KWQAccObject accessibilityActionNames]):
+ (-[KWQAccObject accessibilityPerformAction:]):
+ Represent RenderImageButton elements as buttons instead of images.
+
2005-01-31 David Harrison <harrison@apple.com>
Prevent nil dereference in debug code.
#import "dom_docimpl.h"
#import "dom_elementimpl.h"
+#import "html_formimpl.h"
#import "html_inlineimpl.h"
#import "html_imageimpl.h"
#import "dom_string.h"
#import "khtmlview.h"
#import "khtml_part.h"
#import "render_canvas.h"
-#import "render_object.h"
#import "render_image.h"
+#import "render_object.h"
#import "render_list.h"
#import "render_style.h"
#import "render_text.h"
#import "DOMInternal.h"
using DOM::DocumentImpl;
+using DOM::DOMString;
using DOM::ElementImpl;
using DOM::HTMLAnchorElementImpl;
-using DOM::HTMLMapElementImpl;
using DOM::HTMLAreaElementImpl;
using DOM::HTMLCollection;
using DOM::HTMLCollectionImpl;
+using DOM::HTMLInputElementImpl;
+using DOM::HTMLMapElementImpl;
using DOM::Node;
using DOM::NodeImpl;
using DOM::Position;
using DOM::Range;
-using DOM::DOMString;
-using khtml::plainText;
using khtml::EVerticalAlign;
-using khtml::RenderObject;
-using khtml::RenderWidget;
-using khtml::RenderCanvas;
-using khtml::RenderText;
+using khtml::plainText;
using khtml::RenderBlock;
-using khtml::RenderListMarker;
+using khtml::RenderCanvas;
using khtml::RenderImage;
+using khtml::RenderListMarker;
+using khtml::RenderObject;
using khtml::RenderStyle;
+using khtml::RenderText;
+using khtml::RenderWidget;
using khtml::Selection;
using khtml::TextIterator;
using khtml::VisiblePosition;
return 0;
}
+-(BOOL)isImageButton
+{
+ return m_renderer->isImage() && static_cast<RenderImage*>(m_renderer)->isImageButton();
+}
+
+-(ElementImpl *)actionElement
+{
+ if ([self isImageButton])
+ return static_cast<ElementImpl*>(m_renderer->element());
+
+ return [self anchorElement];
+}
+
-(KWQAccObject*)firstChild
{
if (!m_renderer || !m_renderer->firstChild())
return NSAccessibilityButtonRole;
if (m_renderer->isText())
return NSAccessibilityStaticTextRole;
- if (m_renderer->isImage())
+ if (m_renderer->isImage()) {
+ if ([self isImageButton])
+ return NSAccessibilityButtonRole;
return NSAccessibilityImageRole;
+ }
if (m_renderer->isCanvas())
return @"AXWebArea";
if (m_renderer->isBlockFlow())
- (NSArray*)accessibilityActionNames
{
static NSArray* actions = nil;
- if ([self anchorElement]) {
+
+ if ([self actionElement]) {
if (actions == nil)
actions = [[NSArray alloc] initWithObjects: NSAccessibilityPressAction, nil];
return actions;
- (void)accessibilityPerformAction:(NSString *)action
{
if ([action isEqualToString:NSAccessibilityPressAction]) {
- // Locate the anchor element. If it doesn't exist, just bail.
- HTMLAnchorElementImpl* anchorElt = [self anchorElement];
- if (!anchorElt)
+ ElementImpl *actionElement = [self actionElement];
+ if (!actionElement)
return;
- DocumentImpl* d = anchorElt->getDocument();
+ DocumentImpl* d = actionElement->getDocument();
if (d) {
KHTMLPart* p = d->part();
if (p) {
}
}
- anchorElt->accessKeyAction();
+ actionElement->accessKeyAction();
}
}