projects
/
platform
/
core
/
uifw
/
dali-toolkit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed to not always clearFocus when a touch occurs.
[platform/core/uifw/dali-toolkit.git]
/
dali-toolkit
/
internal
/
focus-manager
/
keyboard-focus-manager-impl.cpp
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
977e2e0
..
bdfdded
100644
(file)
--- a/
dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp
+++ b/
dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp
@@
-251,11
+251,6
@@
bool KeyboardFocusManager::DoSetCurrentFocusActor(Actor actor)
actor.Add(GetFocusIndicatorActor());
}
actor.Add(GetFocusIndicatorActor());
}
- // Send notification for the change of focus actor
- if(!mFocusChangedSignal.Empty())
- {
- mFocusChangedSignal.Emit(currentFocusedActor, actor);
- }
Toolkit::Control currentlyFocusedControl = Toolkit::Control::DownCast(currentFocusedActor);
if(currentlyFocusedControl)
Toolkit::Control currentlyFocusedControl = Toolkit::Control::DownCast(currentFocusedActor);
if(currentlyFocusedControl)
@@
-265,8
+260,6
@@
bool KeyboardFocusManager::DoSetCurrentFocusActor(Actor actor)
currentlyFocusedControl.ClearKeyInputFocus();
}
currentlyFocusedControl.ClearKeyInputFocus();
}
- DALI_LOG_INFO(gLogFilter, Debug::General, "[%s:%d] Focus Changed\n", __FUNCTION__, __LINE__);
-
// Save the current focused actor
mCurrentFocusActor = actor;
// Save the current focused actor
mCurrentFocusActor = actor;
@@
-303,6
+296,11
@@
bool KeyboardFocusManager::DoSetCurrentFocusActor(Actor actor)
mFocusHistory.erase(beginPos);
}
mFocusHistory.erase(beginPos);
}
+ // Send notification for the change of focus actor
+ if(!mFocusChangedSignal.Empty())
+ {
+ mFocusChangedSignal.Emit(currentFocusedActor, actor);
+ }
DALI_LOG_INFO(gLogFilter, Debug::General, "[%s:%d] SUCCEED\n", __FUNCTION__, __LINE__);
success = true;
}
DALI_LOG_INFO(gLogFilter, Debug::General, "[%s:%d] SUCCEED\n", __FUNCTION__, __LINE__);
success = true;
}
@@
-681,14
+679,10
@@
void KeyboardFocusManager::DoKeyboardEnter(Actor actor)
void KeyboardFocusManager::ClearFocus()
{
void KeyboardFocusManager::ClearFocus()
{
+ ClearFocusIndicator();
Actor actor = GetCurrentFocusActor();
if(actor)
{
Actor actor = GetCurrentFocusActor();
if(actor)
{
- if(mFocusIndicatorActor)
- {
- actor.Remove(mFocusIndicatorActor);
- }
-
// Send notification for the change of focus actor
if(!mFocusChangedSignal.Empty())
{
// Send notification for the change of focus actor
if(!mFocusChangedSignal.Empty())
{
@@
-702,8
+696,19
@@
void KeyboardFocusManager::ClearFocus()
currentlyFocusedControl.ClearKeyInputFocus();
}
}
currentlyFocusedControl.ClearKeyInputFocus();
}
}
-
mCurrentFocusActor.Reset();
mCurrentFocusActor.Reset();
+}
+
+void KeyboardFocusManager::ClearFocusIndicator()
+{
+ Actor actor = GetCurrentFocusActor();
+ if(actor)
+ {
+ if(mFocusIndicatorActor)
+ {
+ actor.Remove(mFocusIndicatorActor);
+ }
+ }
mIsFocusIndicatorShown = (mAlwaysShowIndicator == ALWAYS_SHOW) ? SHOW : HIDE;
}
mIsFocusIndicatorShown = (mAlwaysShowIndicator == ALWAYS_SHOW) ? SHOW : HIDE;
}
@@
-1005,18
+1010,30
@@
void KeyboardFocusManager::OnTouch(const TouchEvent& touch)
// We only do this on a Down event, otherwise the clear action may override a manually focused actor.
if(((touch.GetPointCount() < 1) || (touch.GetState(0) == PointState::DOWN)))
{
// We only do this on a Down event, otherwise the clear action may override a manually focused actor.
if(((touch.GetPointCount() < 1) || (touch.GetState(0) == PointState::DOWN)))
{
- // If mClearFocusOnTouch is false, do not clear the focus even if user touch the screen.
- if(mClearFocusOnTouch)
+ // If you touch the currently focused actor again, you don't need to do SetCurrentFocusActor again.
+ Actor hitActor = touch.GetHitActor(0);
+ if(hitActor && hitActor == GetCurrentFocusActor())
{
{
-
ClearFocus()
;
+
return
;
}
}
-
// If KEYBOARD_FOCUSABLE and TOUCH_FOCUSABLE is true, set focus actor
// If KEYBOARD_FOCUSABLE and TOUCH_FOCUSABLE is true, set focus actor
- Actor hitActor = touch.GetHitActor(0);
if(hitActor && hitActor.GetProperty<bool>(Actor::Property::KEYBOARD_FOCUSABLE) && hitActor.GetProperty<bool>(DevelActor::Property::TOUCH_FOCUSABLE))
{
if(hitActor && hitActor.GetProperty<bool>(Actor::Property::KEYBOARD_FOCUSABLE) && hitActor.GetProperty<bool>(DevelActor::Property::TOUCH_FOCUSABLE))
{
+ // If mClearFocusOnTouch is false, do not clear the focus
+ if(mClearFocusOnTouch)
+ {
+ ClearFocus();
+ }
SetCurrentFocusActor(hitActor);
}
SetCurrentFocusActor(hitActor);
}
+ else
+ {
+ // If mClearFocusOnTouch is false, do not clear the focus indicator even if user touch the screen.
+ if(mClearFocusOnTouch)
+ {
+ ClearFocusIndicator();
+ }
+ }
}
}
}
}