diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index bd935c9..5b50191 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -1398,7 +1398,7 @@ QDeclarativeKeysAttached *QDeclarativeKeysAttached::qmlAttachedProperties(QObjec
 */
 
 /*!
-    \property QDeclarativeItem::wantsFocus
+    \property QDeclarativeItem::activeFocus
     \internal
 */
 
@@ -1452,7 +1452,7 @@ QDeclarativeKeysAttached *QDeclarativeKeysAttached::qmlAttachedProperties(QObjec
 */
 
 /*!
-    \fn void QDeclarativeItem::wantsFocusChanged(bool)
+    \fn void QDeclarativeItem::activeFocusChanged(bool)
     \internal
 */
 
@@ -3097,31 +3097,83 @@ void QDeclarativeItem::setSize(const QSizeF &size)
 }
 
 /*!
-  \qmlproperty bool Item::wantsFocus
+  \qmlproperty bool Item::activeFocus
 
-  This property indicates whether the item has has an active focus request.
+  This property indicates whether the item has active focus.
 
-  \sa {qmlfocus}{Keyboard Focus}
+  An item with active focus will receive keyboard input,
+  or is a FocusScope ancestor of the item that will receive keyboard input.
+
+  Usually, activeFocus is gained by setting focus on an item and its enclosing
+  FocusScopes. In the following example \c input will have activeFocus.
+  \qml
+  Rectangle {
+      FocusScope {
+          focus: true
+          TextInput {
+              id: input
+              focus: true
+          }
+      }
+  }
+  \endqml
+
+  \sa focus, {qmlfocus}{Keyboard Focus}
 */
 
 /*! \internal */
-bool QDeclarativeItem::wantsFocus() const
+bool QDeclarativeItem::activeFocus() const
 {
     return focusItem() != 0;
 }
 
 /*!
   \qmlproperty bool Item::focus
-  This property indicates whether the item has keyboard input focus. Set this
-  property to true to request focus.
+  This property indicates whether the item has focus within the enclosing focus scope. If true, this item
+  will gain active focus when the enclosing focus scope gains active focus.
+  In the following example, \c input will be given active focus when \c scope gains active focus.
+  \qml
+  Rectangle {
+      FocusScope {
+          id: scope
+          TextInput {
+              id: input
+              focus: true
+          }
+      }
+  }
+  \endqml
+
+  For the purposes of this property, the top level item in the scene
+  is assumed to act like a focus scope, and to always have active focus
+  when the scene has focus. On a practical level, that means the following
+  QML will give active focus to \c input on startup.
+
+  \qml
+  Rectangle {
+      TextInput {
+          id: input
+          focus: true
+      }
+  }
+  \endqml
 
-  \sa {qmlfocus}{Keyboard Focus}
+  \sa activeFocus, {qmlfocus}{Keyboard Focus}
 */
 
 /*! \internal */
 bool QDeclarativeItem::hasFocus() const
 {
-    return QGraphicsItem::hasFocus();
+    Q_D(const QDeclarativeItem);
+    QGraphicsItem *p = d->parent;
+    while (p) {
+        if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
+            return p->focusScopeItem() == this;
+        }
+        p = p->parentItem();
+    }
+
+    return (d->flags & QGraphicsItem::ItemIsFocusScope) ? activeFocus() : (!parentItem() ? true : false);
 }
 
 /*! \internal */
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h
index 4f420f8..723bda1 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem.h
@@ -87,7 +87,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeItem : public QGraphicsObject, public QDe
     Q_PROPERTY(qreal baselineOffset READ baselineOffset WRITE setBaselineOffset NOTIFY baselineOffsetChanged)
     Q_PROPERTY(bool clip READ clip WRITE setClip NOTIFY clipChanged) // ### move to QGI/QGO, NOTIFY
     Q_PROPERTY(bool focus READ hasFocus WRITE setFocus NOTIFY focusChanged FINAL)
-    Q_PROPERTY(bool wantsFocus READ wantsFocus NOTIFY wantsFocusChanged)
+    Q_PROPERTY(bool activeFocus READ activeFocus NOTIFY activeFocusChanged)
     Q_PROPERTY(QDeclarativeListProperty<QGraphicsTransform> transform READ transform DESIGNABLE false FINAL)
     Q_PROPERTY(TransformOrigin transformOrigin READ transformOrigin WRITE setTransformOrigin NOTIFY transformOriginChanged)
     Q_PROPERTY(bool smooth READ smooth WRITE setSmooth NOTIFY smoothChanged)
@@ -138,7 +138,7 @@ public:
     QRectF boundingRect() const;
     virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
 
-    bool wantsFocus() const;
+    bool activeFocus() const;
     bool hasFocus() const;
     void setFocus(bool);
 
@@ -156,7 +156,7 @@ Q_SIGNALS:
     void baselineOffsetChanged(qreal);
     void stateChanged(const QString &);
     void focusChanged(bool);
-    void wantsFocusChanged(bool);
+    void activeFocusChanged(bool);
     void parentChanged(QDeclarativeItem *);
     void transformOriginChanged(TransformOrigin);
     void smoothChanged(bool);
diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h
index fb416c2..8472943 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h
@@ -286,7 +286,7 @@ public:
     // Reimplemented from QGraphicsItemPrivate
     virtual void subFocusItemChange()
     {
-        emit q_func()->wantsFocusChanged(subFocusItem != 0);
+        emit q_func()->activeFocusChanged(subFocusItem != 0);
     }
 
     // Reimplemented from QGraphicsItemPrivate
