/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 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.
// Setup signals and actions using the type-registry.
DALI_TYPE_REGISTRATION_BEGIN( Control, CustomActor, Create );
-// Note: Properties are registered separately below,
+// Note: Properties are registered separately below.
-DALI_SIGNAL_REGISTRATION( Control, "key-event", SIGNAL_KEY_EVENT )
-DALI_SIGNAL_REGISTRATION( Control, "tapped", SIGNAL_TAPPED )
-DALI_SIGNAL_REGISTRATION( Control, "panned", SIGNAL_PANNED )
-DALI_SIGNAL_REGISTRATION( Control, "pinched", SIGNAL_PINCHED )
-DALI_SIGNAL_REGISTRATION( Control, "long-pressed", SIGNAL_LONG_PRESSED )
+DALI_SIGNAL_REGISTRATION( Toolkit, Control, "key-event", SIGNAL_KEY_EVENT )
+DALI_SIGNAL_REGISTRATION( Toolkit, Control, "key-input-focus-gained", SIGNAL_KEY_INPUT_FOCUS_GAINED )
+DALI_SIGNAL_REGISTRATION( Toolkit, Control, "key-input-focus-lost", SIGNAL_KEY_INPUT_FOCUS_LOST )
+DALI_SIGNAL_REGISTRATION( Toolkit, Control, "tapped", SIGNAL_TAPPED )
+DALI_SIGNAL_REGISTRATION( Toolkit, Control, "panned", SIGNAL_PANNED )
+DALI_SIGNAL_REGISTRATION( Toolkit, Control, "pinched", SIGNAL_PINCHED )
+DALI_SIGNAL_REGISTRATION( Toolkit, Control, "long-pressed", SIGNAL_LONG_PRESSED )
-DALI_ACTION_REGISTRATION( Control, "control-activated", ACTION_CONTROL_ACTIVATED )
+DALI_ACTION_REGISTRATION( Toolkit, Control, "control-activated", ACTION_CONTROL_ACTIVATED )
DALI_TYPE_REGISTRATION_END()
Background* mBackground; ///< Only create the background if we use it
Vector3* mStartingPinchScale; ///< The scale when a pinch gesture starts, TODO: consider removing this
Toolkit::Control::KeyEventSignalType mKeyEventSignal;
+ Toolkit::Control::KeyInputFocusSignalType mKeyInputFocusGainedSignal;
+ Toolkit::Control::KeyInputFocusSignalType mKeyInputFocusLostSignal;
// Gesture Detection
PinchGestureDetector mPinchGestureDetector;
{
controlImpl.KeyEventSignal().Connect( tracker, functor );
}
+ else if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_INPUT_FOCUS_GAINED ) )
+ {
+ controlImpl.KeyInputFocusGainedSignal().Connect( tracker, functor );
+ }
+ else if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_INPUT_FOCUS_LOST ) )
+ {
+ controlImpl.KeyInputFocusLostSignal().Connect( tracker, functor );
+ }
else if( 0 == strcmp( signalName.c_str(), SIGNAL_TAPPED ) )
{
controlImpl.EnableGestureDetection( Gesture::Tap );
return mImpl->mKeyEventSignal;
}
+Toolkit::Control::KeyInputFocusSignalType& Control:: KeyInputFocusGainedSignal()
+{
+ return mImpl->mKeyInputFocusGainedSignal;
+}
+
+Toolkit::Control::KeyInputFocusSignalType& Control:: KeyInputFocusLostSignal()
+{
+ return mImpl->mKeyInputFocusLostSignal;
+}
+
bool Control::EmitKeyEventSignal( const KeyEvent& event )
{
// Guard against destruction during signal emission
{
}
+void Control::EmitKeyInputFocusSignal( bool focusGained )
+{
+ Dali::Toolkit::Control handle( GetOwner() );
+
+ if ( focusGained )
+ {
+ // signals are allocated dynamically when someone connects
+ if ( !mImpl->mKeyInputFocusGainedSignal.Empty() )
+ {
+ mImpl->mKeyInputFocusGainedSignal.Emit( handle );
+ }
+ }
+ else
+ {
+ // signals are allocated dynamically when someone connects
+ if ( !mImpl->mKeyInputFocusLostSignal.Empty() )
+ {
+ mImpl->mKeyInputFocusLostSignal.Emit( handle );
+ }
+ }
+}
+
void Control::OnKeyInputFocusGained()
{
- // Do Nothing
+ EmitKeyInputFocusSignal( true );
}
void Control::OnKeyInputFocusLost()
{
- // Do Nothing
+ EmitKeyInputFocusSignal( false );
}
void Control::OnSizeAnimation(Animation& animation, const Vector3& targetSize)