summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-05-07 05:45:40 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-05-07 05:45:40 (GMT)
commit5fb8157047aca69c68438054ca7ea47ae595f428 (patch)
tree666c15422c7cc7c45cb46844052fd540e96756a7 /src/declarative
parentb530723f5a7254d6a2a144aa27789651fe872c6d (diff)
parent45f531b9863fb64e6d4df2c77af01f14019f217e (diff)
downloadQt-5fb8157047aca69c68438054ca7ea47ae595f428.zip
Qt-5fb8157047aca69c68438054ca7ea47ae595f428.tar.gz
Qt-5fb8157047aca69c68438054ca7ea47ae595f428.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/canvas/qsimplecanvas.cpp7
-rw-r--r--src/declarative/canvas/qsimplecanvas.h2
-rw-r--r--src/declarative/fx/qfxkeyproxy.cpp4
-rw-r--r--src/declarative/fx/qfxtextedit.cpp24
-rw-r--r--src/declarative/fx/qfxtextedit.h3
5 files changed, 20 insertions, 20 deletions
diff --git a/src/declarative/canvas/qsimplecanvas.cpp b/src/declarative/canvas/qsimplecanvas.cpp
index c404da6..e1dd0e8 100644
--- a/src/declarative/canvas/qsimplecanvas.cpp
+++ b/src/declarative/canvas/qsimplecanvas.cpp
@@ -904,6 +904,13 @@ QSimpleCanvasItem *QSimpleCanvas::activeFocusPanel() const
return d->focusPanels.top();
}
+QSimpleCanvasItem *QSimpleCanvas::focusItem(QSimpleCanvasItem *item) const
+{
+ while (item && d->focusPanelData.contains(item))
+ item = d->focusPanelData.value(item);
+ return item;
+}
+
bool QSimpleCanvas::event(QEvent *e)
{
if (e->type() == QEvent::User && d->isSimpleCanvas()) {
diff --git a/src/declarative/canvas/qsimplecanvas.h b/src/declarative/canvas/qsimplecanvas.h
index a35cbf5..20dab28 100644
--- a/src/declarative/canvas/qsimplecanvas.h
+++ b/src/declarative/canvas/qsimplecanvas.h
@@ -141,6 +141,8 @@ public:
void checkState();
QSimpleCanvasItem *focusItem() const;
+ QSimpleCanvasItem *focusItem(QSimpleCanvasItem *item) const;
+
QSimpleCanvasItem *activeFocusPanel() const;
QImage asImage() const;
diff --git a/src/declarative/fx/qfxkeyproxy.cpp b/src/declarative/fx/qfxkeyproxy.cpp
index 6d9c6ab..1bb54ec 100644
--- a/src/declarative/fx/qfxkeyproxy.cpp
+++ b/src/declarative/fx/qfxkeyproxy.cpp
@@ -96,7 +96,7 @@ void QFxKeyProxy::keyPressEvent(QKeyEvent *e)
for (int ii = 0; ii < d->targets.count(); ++ii) {
QSimpleCanvasItem *i = d->targets.at(ii);
if (i)
- i->keyPressEvent(e);
+ canvas()->focusItem(i)->keyPressEvent(e);
if (e->isAccepted())
return;
}
@@ -107,7 +107,7 @@ void QFxKeyProxy::keyReleaseEvent(QKeyEvent *e)
for (int ii = 0; ii < d->targets.count(); ++ii) {
QSimpleCanvasItem *i = d->targets.at(ii);
if (i)
- i->keyReleaseEvent(e);
+ canvas()->focusItem(i)->keyReleaseEvent(e);
if (e->isAccepted())
return;
}
diff --git a/src/declarative/fx/qfxtextedit.cpp b/src/declarative/fx/qfxtextedit.cpp
index a1b5484..bf7a16d 100644
--- a/src/declarative/fx/qfxtextedit.cpp
+++ b/src/declarative/fx/qfxtextedit.cpp
@@ -582,25 +582,17 @@ void QFxTextEdit::keyReleaseEvent(QKeyEvent *event)
}
/*!
-\overload
-Handles the given focus \a event.
-*/
-void QFxTextEdit::focusInEvent(QFocusEvent *event)
-{
- Q_D(QFxTextEdit);
- QFxPaintedItem::focusInEvent(event);
- d->control->processEvent(event, QPointF(0, 0));
-}
-
-/*!
-\overload
-Handles the given focus \a event.
+ \overload
+ Handles changing of the focus property. Focus is applied to the control
+ even if the edit does not have active focus. This is because things
+ like KeyProxy can give the behavior of focus even when activeFocus isn't
+ true.
*/
-void QFxTextEdit::focusOutEvent(QFocusEvent *event)
+void QFxTextEdit::focusChanged(bool hasFocus)
{
Q_D(QFxTextEdit);
- QFxPaintedItem::focusOutEvent(event);
- d->control->processEvent(event, QPointF(0, 0));
+ QFocusEvent focusEvent(hasFocus ? QEvent::FocusIn : QEvent::FocusOut);
+ d->control->processEvent(&focusEvent, QPointF(0, 0));
}
static QMouseEvent *sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *e)
diff --git a/src/declarative/fx/qfxtextedit.h b/src/declarative/fx/qfxtextedit.h
index b017635..e5e9421 100644
--- a/src/declarative/fx/qfxtextedit.h
+++ b/src/declarative/fx/qfxtextedit.h
@@ -161,8 +161,7 @@ protected:
void keyPressEvent(QKeyEvent *);
void keyReleaseEvent(QKeyEvent *);
- void focusInEvent(QFocusEvent *);
- void focusOutEvent(QFocusEvent *);
+ void focusChanged(bool);
// mouse filter?
void mousePressEvent(QGraphicsSceneMouseEvent *event);