diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index e212cea..21b1a24 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -7,6 +7,20 @@
 
         Based on a patch by Alp Toker.
 
+        Implement AtkObject::ref_state_set. Still quite a few states not
+        implemented.
+
+        * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-09  Xan Lopez  <xlopez@igalia.com>
+
+        Reviewed by Holger Freyther.
+
+        https://bugs.webkit.org/show_bug.cgi?id=21546
+        [GTK] ATK accessibility enhancements
+
+        Based on a patch by Alp Toker.
+
         Move fallback object creation to its own function, as it will be
         used in several places.
 
diff --git a/WebCore/page/gtk/AccessibilityObjectWrapperAtk.cpp b/WebCore/page/gtk/AccessibilityObjectWrapperAtk.cpp
index 2d52193..72654d8 100644
--- a/WebCore/page/gtk/AccessibilityObjectWrapperAtk.cpp
+++ b/WebCore/page/gtk/AccessibilityObjectWrapperAtk.cpp
@@ -217,8 +217,79 @@
     return atkRole(core(object)->roleValue());
 }
 
+static void setAtkStateSetFromCoreObject(AccessibilityObject* coreObject, AtkStateSet* stateSet)
+{
+    // Please keep the state list in alphabetical order
+
+    if (coreObject->isChecked())
+        atk_state_set_add_state(stateSet, ATK_STATE_CHECKED);
+
+    if (!coreObject->isReadOnly())
+        atk_state_set_add_state(stateSet, ATK_STATE_EDITABLE);
+
+    if (coreObject->isEnabled())
+        atk_state_set_add_state(stateSet, ATK_STATE_ENABLED);
+
+    if (coreObject->canSetFocusAttribute())
+        atk_state_set_add_state(stateSet, ATK_STATE_FOCUSABLE);
+
+    if (coreObject->isFocused())
+        atk_state_set_add_state(stateSet, ATK_STATE_FOCUSED);
+
+    // TODO: ATK_STATE_HORIZONTAL
+
+    if (coreObject->isIndeterminate())
+        atk_state_set_add_state(stateSet, ATK_STATE_INDETERMINATE);
+
+    if (coreObject->isMultiSelect())
+        atk_state_set_add_state(stateSet, ATK_STATE_MULTISELECTABLE);
+
+    // TODO: ATK_STATE_OPAQUE
+
+    if (coreObject->isPressed())
+        atk_state_set_add_state(stateSet, ATK_STATE_PRESSED);
+
+    // TODO: ATK_STATE_SELECTABLE_TEXT
+
+    // TODO: ATK_STATE_SENSITIVE
+
+    if (coreObject->isSelected())
+        atk_state_set_add_state(stateSet, ATK_STATE_SELECTED);
+
+    if (!coreObject->isOffScreen())
+        atk_state_set_add_state(stateSet, ATK_STATE_SHOWING);
+
+    // Mutually exclusive, so we group these two
+    if (coreObject->roleValue() == TextFieldRole)
+        atk_state_set_add_state(stateSet, ATK_STATE_SINGLE_LINE);
+    else if (coreObject->roleValue() == TextAreaRole)
+        atk_state_set_add_state(stateSet, ATK_STATE_MULTI_LINE);
+
+    // TODO: ATK_STATE_SENSITIVE
+
+    // TODO: ATK_STATE_VERTICAL
+
+    if (coreObject->isVisited())
+        atk_state_set_add_state(stateSet, ATK_STATE_VISITED);
+}
+
 static gpointer webkit_accessible_parent_class = NULL;
 
+static AtkStateSet* webkit_accessible_ref_state_set(AtkObject* object)
+{
+    AtkStateSet* stateSet = ATK_OBJECT_CLASS(webkit_accessible_parent_class)->ref_state_set(object);
+    AccessibilityObject* coreObject = core(object);
+
+    if (coreObject == fallbackObject()) {
+        atk_state_set_add_state(stateSet, ATK_STATE_DEFUNCT);
+        return stateSet;
+    }
+
+    setAtkStateSetFromCoreObject(coreObject, stateSet);
+
+    return stateSet;
+}
+
 static void webkit_accessible_init(AtkObject* object, gpointer data)
 {
     g_return_if_fail(WEBKIT_IS_ACCESSIBLE(object));
@@ -254,6 +325,7 @@
     klass->get_n_children = webkit_accessible_get_n_children;
     klass->ref_child = webkit_accessible_ref_child;
     klass->get_role = webkit_accessible_get_role;
+    klass->ref_state_set = webkit_accessible_ref_state_set;
 }
 
 GType
