Changeset 43920 in webkit


Ignore:
Timestamp:
May 20, 2009 9:59:40 AM (15 years ago)
Author:
xan@webkit.org
Message:

2009-05-20 Xan Lopez <xlopez@igalia.com>

Reviewed by Gustavo Noronha.

Implement AtkObject::focus-event and
AtkObject::state-changed:focused signal emission.

Adds a new handleFocusedUIElementChangedWithRenderers, only in the
GTK port, called at the same point than
handleFocusedUIElementChanged but with two parameters, the old and
the newly focused RenderObjects. We need this, since the ATK
signals require us to pass the objects involved in the focus
change as arguments.

  • accessibility/AXObjectCache.h:
  • accessibility/gtk/AXObjectCacheAtk.cpp: (WebCore::AXObjectCache::handleFocusedUIElementChangedWithRenderers):
  • dom/Document.cpp: (WebCore::Document::setFocusedNode):
Location:
trunk/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r43918 r43920  
     12009-05-20  Xan Lopez  <xlopez@igalia.com>
     2
     3        Reviewed by Gustavo Noronha.
     4
     5        Implement AtkObject::focus-event and
     6        AtkObject::state-changed:focused signal emission.
     7
     8        Adds a new handleFocusedUIElementChangedWithRenderers, only in the
     9        GTK port, called at the same point than
     10        handleFocusedUIElementChanged but with two parameters, the old and
     11        the newly focused RenderObjects. We need this, since the ATK
     12        signals require us to pass the objects involved in the focus
     13        change as arguments.
     14
     15        * accessibility/AXObjectCache.h:
     16        * accessibility/gtk/AXObjectCacheAtk.cpp:
     17        (WebCore::AXObjectCache::handleFocusedUIElementChangedWithRenderers):
     18        * dom/Document.cpp:
     19        (WebCore::Document::setFocusedNode):
     20
    1212009-05-20  Holger Hans Peter Freyther  <zecke@selfish.org>
    222
  • trunk/WebCore/accessibility/AXObjectCache.h

    r43833 r43920  
    8181        void handleAriaRoleChanged(RenderObject*);
    8282        void handleFocusedUIElementChanged();
     83#if PLATFORM(GTK)
     84        void handleFocusedUIElementChangedWithRenderers(RenderObject*, RenderObject*);
     85#endif
    8386        static void enableAccessibility() { gAccessibilityEnabled = true; }
    8487        static void enableEnhancedUserInterfaceAccessibility() { gAccessibilityEnhancedUserInterfaceEnabled = true; }
     
    111114    inline void AXObjectCache::postNotification(RenderObject*, const String&) { }
    112115    inline void AXObjectCache::postNotificationToElement(RenderObject*, const String&) { }
     116#if PLATFORM(GTK)
     117    inline void AXObjectCache::handleFocusedUIElementChangedWithRenderers(RenderObject*, RenderObject*) { }
     118#endif
    113119#endif
    114120
  • trunk/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp

    r43833 r43920  
    5050}
    5151
     52void AXObjectCache::handleFocusedUIElementChangedWithRenderers(RenderObject* oldFocusedRender, RenderObject* newFocusedRender)
     53{
     54    RefPtr<AccessibilityObject> oldObject = getOrCreate(oldFocusedRender);
     55    if (oldObject) {
     56        g_signal_emit_by_name(oldObject->wrapper(), "focus-event", false);
     57        g_signal_emit_by_name(oldObject->wrapper(), "state-change", "focused", false);
     58    }
     59    RefPtr<AccessibilityObject> newObject = getOrCreate(newFocusedRender);
     60    if (newObject) {
     61        g_signal_emit_by_name(newObject->wrapper(), "focus-event", true);
     62        g_signal_emit_by_name(newObject->wrapper(), "state-change", "focused", true);
     63    }
     64}
     65
    5266} // namespace WebCore
  • trunk/WebCore/dom/Document.cpp

    r43866 r43920  
    25952595    if (!focusChangeBlocked && m_focusedNode && AXObjectCache::accessibilityEnabled())
    25962596        axObjectCache()->handleFocusedUIElementChanged();
     2597#elif PLATFORM(GTK)
     2598    if (!focusChangeBlocked && m_focusedNode && AXObjectCache::accessibilityEnabled()) {
     2599        RenderObject* oldFocusedRenderer = 0;
     2600        RenderObject* newFocusedRenderer = 0;
     2601
     2602        if (oldFocusedNode)
     2603            oldFocusedRenderer = oldFocusedNode.get()->renderer();
     2604        if (newFocusedNode)
     2605            newFocusedRenderer = newFocusedNode.get()->renderer();
     2606
     2607        axObjectCache()->handleFocusedUIElementChangedWithRenderers(oldFocusedRenderer, newFocusedRenderer);
     2608    }
    25972609#endif
    25982610
Note: See TracChangeset for help on using the changeset viewer.