Changeset 53072 in webkit
- Timestamp:
- Jan 11, 2010 4:03:36 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r53069 r53072 1 2010-01-11 Joanmarie Diggs <joanmarie.diggs@gmail.com> 2 3 Reviewed by Xan Lopez. 4 5 https://bugs.webkit.org/show_bug.cgi?id=30883 6 [Gtk] Implement AtkText for HTML elements which contain text 7 8 * accessibility/gtk/AccessibilityObjectWrapperAtk.h 9 * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp: 10 (objectAndOffsetUnignored): 11 (webkit_accessible_text_get_caret_offset): 12 * editing/gtk/SelectionControllerGtk.cpp: 13 (SelectionController::notifyAccessibilityForSelectionChange) 14 15 Adjust the caret offset and object with focus to reflect the 16 unignored parent of the static text object which contains the 17 caret. This is necessary because the static text objects are 18 no longer being exposed to ATs. 19 1 20 2010-01-11 Kim Grönholm <kim.gronholm@nomovok.com> 2 21 -
trunk/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
r52890 r53072 981 981 static gint webkit_accessible_text_get_caret_offset(AtkText* text) 982 982 { 983 // coreObject is the unignored object whose offset the caller is requesting. 984 // focusedObject is the object with the caret. It is likely ignored -- unless it's a link. 985 AccessibilityObject* coreObject = core(text); 986 RenderObject* focusedNode = coreObject->selection().end().node()->renderer(); 987 AccessibilityObject* focusedObject = coreObject->document()->axObjectCache()->getOrCreate(focusedNode); 988 989 int offset; 990 // Don't ignore links if the offset is being requested for a link. 991 AccessibilityObject* object = objectAndOffsetUnignored(focusedObject, offset, !coreObject->isLink()); 992 983 993 // TODO: Verify this for RTL text. 984 return core(text)->selection().end().offsetInContainerNode();994 return offset; 985 995 } 986 996 … … 1734 1744 } 1735 1745 1746 AccessibilityObject* objectAndOffsetUnignored(AccessibilityObject* coreObject, int& offset, bool ignoreLinks) 1747 { 1748 Node* endNode = static_cast<AccessibilityRenderObject*>(coreObject)->renderer()->node(); 1749 int endOffset = coreObject->selection().end().offsetInContainerNode(); 1750 1751 AccessibilityObject* realObject = coreObject; 1752 if (realObject->accessibilityIsIgnored()) 1753 realObject = realObject->parentObjectUnignored(); 1754 1755 if (ignoreLinks && realObject->isLink()) 1756 realObject = realObject->parentObjectUnignored(); 1757 1758 RefPtr<Range> range = rangeOfContents(static_cast<AccessibilityRenderObject*>(realObject)->renderer()->node()); 1759 ExceptionCode ec = 0; 1760 range->setEndBefore(endNode, ec); 1761 offset = range->text().length() + endOffset; 1762 1763 return realObject; 1764 } 1765 1736 1766 #endif // HAVE(ACCESSIBILITY) -
trunk/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.h
r46952 r53072 61 61 AtkObject* webkit_accessible_get_focused_element(WebKitAccessible* accessible); 62 62 63 WebCore::AccessibilityObject* objectAndOffsetUnignored(WebCore::AccessibilityObject* coreObject, int& offset, bool ignoreLinks); 64 63 65 G_END_DECLS 64 66 -
trunk/WebCore/editing/gtk/SelectionControllerGtk.cpp
r52451 r53072 21 21 #include "SelectionController.h" 22 22 23 #include "AccessibilityObjectWrapperAtk.h" 23 24 #include "AXObjectCache.h" 24 25 #include "Frame.h" … … 33 34 RenderObject* focusedNode = m_selection.end().node()->renderer(); 34 35 AccessibilityObject* accessibilityObject = m_frame->document()->axObjectCache()->getOrCreate(focusedNode); 35 AtkObject* wrapper = accessibilityObject->wrapper(); 36 int offset; 37 // Always report the events w.r.t. the non-linked unignored parent. (i.e. ignoreLinks == true) 38 AccessibilityObject* object = objectAndOffsetUnignored(accessibilityObject, offset, true); 39 AtkObject* wrapper = object->wrapper(); 36 40 if (ATK_IS_TEXT(wrapper)) { 37 g_signal_emit_by_name(wrapper, "text-caret-moved", m_selection.end().computeOffsetInContainerNode()); 38 41 g_signal_emit_by_name(wrapper, "text-caret-moved", offset); 39 42 if (m_selection.isRange()) 40 43 g_signal_emit_by_name(wrapper, "text-selection-changed");
Note: See TracChangeset
for help on using the changeset viewer.