X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ffocus-manager%2Fkeyboard-focus-manager-impl.cpp;h=3f9a81d9f99a8c373e51347a0f270fcb60ef6359;hp=d5036382699d6e8c42ed84bc10406b729776954f;hb=2cf32ac170f397aacce527efd34909b3fd62efda;hpb=acbf7e2c17c1578c7125fa07c7eaabe1fe214406 diff --git a/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp b/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp index d503638..3f9a81d 100644 --- a/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp +++ b/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -109,15 +109,13 @@ Toolkit::KeyboardFocusManager KeyboardFocusManager::Get() KeyboardFocusManager::KeyboardFocusManager() : mCurrentFocusActor(0), - mFocusIndicatorActor(Actor()), + mFocusIndicatorActor(), mFocusGroupLoopEnabled(false), mIsKeyboardFocusEnabled(false), mIsFocusIndicatorEnabled(false), mIsWaitingKeyboardFocusChangeCommit(false), mSlotDelegate(this) { - CreateDefaultFocusIndicatorActor(); - OnPhysicalKeyboardStatusChanged(PhysicalKeyboard::Get()); Toolkit::KeyInputFocusManager::Get().UnhandledKeyEventSignal().Connect(mSlotDelegate, &KeyboardFocusManager::OnKeyEvent); @@ -152,10 +150,7 @@ bool KeyboardFocusManager::DoSetCurrentFocusActor( const unsigned int actorID ) { mIsFocusIndicatorEnabled = true; // Draw the focus indicator upon the focused actor - if( mFocusIndicatorActor ) - { - actor.Add( mFocusIndicatorActor ); - } + actor.Add( GetFocusIndicatorActor() ); // Send notification for the change of focus actor if( !mFocusChangedSignal.Empty() ) @@ -453,19 +448,17 @@ void KeyboardFocusManager::SetFocusIndicatorActor(Actor indicator) Actor KeyboardFocusManager::GetFocusIndicatorActor() { - return mFocusIndicatorActor; -} - -void KeyboardFocusManager::CreateDefaultFocusIndicatorActor() -{ - // Create a focus indicator actor shared by all the keyboard focusable actors - Toolkit::ImageView focusIndicator = Toolkit::ImageView::New(FOCUS_BORDER_IMAGE_PATH); - focusIndicator.SetParentOrigin( ParentOrigin::CENTER ); + if( ! mFocusIndicatorActor ) + { + // Create the default if it hasn't been set and one that's shared by all the keyboard focusable actors + mFocusIndicatorActor = Toolkit::ImageView::New( FOCUS_BORDER_IMAGE_PATH ); + mFocusIndicatorActor.SetParentOrigin( ParentOrigin::CENTER ); - // Apply size constraint to the focus indicator - focusIndicator.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + // Apply size constraint to the focus indicator + mFocusIndicatorActor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + } - SetFocusIndicatorActor(focusIndicator); + return mFocusIndicatorActor; } void KeyboardFocusManager::OnPhysicalKeyboardStatusChanged(PhysicalKeyboard keyboard) @@ -478,10 +471,7 @@ void KeyboardFocusManager::OnPhysicalKeyboardStatusChanged(PhysicalKeyboard keyb Actor actor = GetCurrentFocusActor(); if(actor) { - if(mFocusIndicatorActor) - { - actor.Add(mFocusIndicatorActor); - } + actor.Add( GetFocusIndicatorActor() ); } mIsFocusIndicatorEnabled = true; } @@ -489,9 +479,9 @@ void KeyboardFocusManager::OnPhysicalKeyboardStatusChanged(PhysicalKeyboard keyb { // Hide indicator when keyboard focus turned off Actor actor = GetCurrentFocusActor(); - if(actor) + if( actor && mFocusIndicatorActor ) { - actor.Remove(mFocusIndicatorActor); + actor.Remove( mFocusIndicatorActor ); } mIsFocusIndicatorEnabled = false; } @@ -668,17 +658,17 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event) if(isFocusStartableKey && mIsFocusIndicatorEnabled && !isAccessibilityEnabled) { Actor actor = GetCurrentFocusActor(); - if( !actor ) + if( actor ) + { + // Make sure the focused actor is highlighted + actor.Add( GetFocusIndicatorActor() ); + } + else { // No actor is focused but keyboard focus is activated by the key press // Let's try to move the initial focus MoveFocus(Toolkit::Control::KeyboardFocus::RIGHT); } - else if(mFocusIndicatorActor) - { - // Make sure the focused actor is highlighted - actor.Add(mFocusIndicatorActor); - } } }