/platform/external/webkit/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp

https://github.com/aharish/totoro-gb-opensource-update2 · C++ · 71 lines · 44 code · 9 blank · 18 comment · 9 complexity · 47439ce815136018ba158ee01de6f2df MD5 · raw file

  1. /*
  2. * Copyright (C) 2008 Nuanti Ltd.
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Library General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Library General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Library General Public License
  15. * along with this library; see the file COPYING.LIB. If not, write to
  16. * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  17. * Boston, MA 02110-1301, USA.
  18. */
  19. #include "config.h"
  20. #include "AXObjectCache.h"
  21. #include "AccessibilityObject.h"
  22. #include "AccessibilityObjectWrapperAtk.h"
  23. namespace WebCore {
  24. void AXObjectCache::detachWrapper(AccessibilityObject* obj)
  25. {
  26. webkit_accessible_detach(WEBKIT_ACCESSIBLE(obj->wrapper()));
  27. }
  28. void AXObjectCache::attachWrapper(AccessibilityObject* obj)
  29. {
  30. AtkObject* atkObj = ATK_OBJECT(webkit_accessible_new(obj));
  31. obj->setWrapper(atkObj);
  32. g_object_unref(atkObj);
  33. }
  34. void AXObjectCache::postPlatformNotification(AccessibilityObject* coreObject, AXNotification notification)
  35. {
  36. if (notification == AXCheckedStateChanged) {
  37. if (!coreObject->isCheckboxOrRadio())
  38. return;
  39. g_signal_emit_by_name(coreObject->wrapper(), "state-change", "checked", coreObject->isChecked());
  40. } else if (notification == AXSelectedChildrenChanged) {
  41. if (!coreObject->isListBox())
  42. return;
  43. g_signal_emit_by_name(coreObject->wrapper(), "selection-changed");
  44. }
  45. }
  46. void AXObjectCache::handleFocusedUIElementChanged(RenderObject* oldFocusedRender, RenderObject* newFocusedRender)
  47. {
  48. RefPtr<AccessibilityObject> oldObject = getOrCreate(oldFocusedRender);
  49. if (oldObject) {
  50. g_signal_emit_by_name(oldObject->wrapper(), "focus-event", false);
  51. g_signal_emit_by_name(oldObject->wrapper(), "state-change", "focused", false);
  52. }
  53. RefPtr<AccessibilityObject> newObject = getOrCreate(newFocusedRender);
  54. if (newObject) {
  55. g_signal_emit_by_name(newObject->wrapper(), "focus-event", true);
  56. g_signal_emit_by_name(newObject->wrapper(), "state-change", "focused", true);
  57. }
  58. }
  59. void AXObjectCache::handleScrolledToAnchor(const Node*)
  60. {
  61. }
  62. } // namespace WebCore