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=6622b736516fa67b3a72570e7a8df0b5ba1e16dd;hb=ff1b30e653d792d77c85a9fe6f20620a90d7a46c;hpb=30f6ca1e541089b19f2b349a8a12d8a5bcaf2f9e 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 6622b73..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 @@ -1,28 +1,29 @@ #ifndef __DALI_TOOLKIT_INTERNAL_KEYINPUT_FOCUS_MANAGER_H__ #define __DALI_TOOLKIT_INTERNAL_KEYINPUT_FOCUS_MANAGER_H__ -// -// Copyright (c) 2014 Samsung Electronics Co., Ltd. -// -// Licensed under the Flora License, Version 1.0 (the License); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://floralicense.org/license/ -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an AS IS BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ // EXTERNAL INCLUDES #include -#include +#include +#include // INTERNAL INCLUDES -#include #include #include @@ -40,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. @@ -59,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 @@ -106,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: @@ -133,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