X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=base%2Fdali-toolkit%2Finternal%2Ffocus-manager%2Fkeyinput-focus-manager-impl.h;h=3db07439bd1a35d75c7d4104d7e6ec701f51d88c;hp=43bd783c20be0dc1992528862f231567319327d2;hb=ff1b30e653d792d77c85a9fe6f20620a90d7a46c;hpb=680c5587a1478717393d3a03cf6a17801edd00e0 diff --git a/base/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h b/base/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h index 43bd783..3db0743 100644 --- a/base/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h +++ b/base/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h @@ -20,8 +20,8 @@ // EXTERNAL INCLUDES #include -#include #include +#include // INTERNAL INCLUDES #include @@ -41,13 +41,11 @@ class KeyInputFocusManager; /** * @copydoc Toolkit::KeyInputFocusManager */ -class KeyInputFocusManager : public Dali::BaseObject +class KeyInputFocusManager : public Dali::BaseObject, public Dali::ConnectionTracker { public: - - typedef std::deque< unsigned int > ActorQueue; - typedef std::deque< unsigned int >::iterator ActorQueueIterator; - typedef std::deque< unsigned int >::const_iterator ActorQueueConstIterator; + typedef Dali::Vector< Dali::BaseObject* > FocusStack; + typedef FocusStack::Iterator FocusStackIterator; /** * Construct a new KeyInputFocusManager. @@ -60,14 +58,14 @@ public: void SetFocus(Toolkit::Control control); /** - * @copydoc Toolkit::GetCurrentFocusControl + * @copydoc Toolkit::RemoveFocus */ - Toolkit::Control GetCurrentFocusControl() const; + void RemoveFocus(Toolkit::Control control); /** - * @copydoc Toolkit::RemoveFocus + * @copydoc Toolkit::GetCurrentFocusControl */ - void RemoveFocus(Toolkit::Control control); + Toolkit::Control GetCurrentFocusControl() const; /** * @copydoc Toolkit::IsKeyboardListener @@ -107,16 +105,29 @@ protected: private: /** + * Search for a control in the focus stack. + * @param[in] control The control for which to search + * @return An iterator to the control. If not found, this will equate to the + * mFocusStack.End() iterator. + */ + FocusStackIterator FindFocusControlInStack( Toolkit::Control control ) const; + + /** * Callback for the key event when no actor in the stage has gained the key input focus * @param[in] event The KeyEvent event. */ void OnKeyEvent(const KeyEvent& event); /** - * Signal handler called when a focused Actor is removed from Stage. - * @param[in] actor The actor removed from stage. + * Signal handler called when a focused Control is removed from Stage. + * @param[in] control The control removed from stage. */ - void OnFocusActorStageDisconnection( Dali::Actor actor ); + void OnFocusControlStageDisconnection( Dali::Actor control ); + + /** + * Signal handler called when an actor is destroyed. + */ + void OnObjectDestroyed(const Dali::RefObject* object); private: @@ -134,9 +145,9 @@ private: Toolkit::KeyInputFocusManager::UnhandledKeyEventSignalV2 mUnhandledKeyEventSignalV2; // Keyboard events are sent to the current focus actor, which will be the actor on the top of the focus actors stack. - ActorQueue mFocusActorsQueue; - + FocusStack mFocusStack; SlotDelegate< KeyInputFocusManager > mSlotDelegate; + ObjectRegistry mObjectRegistry; }; } // namespace Internal