[enable_debug=$enableval],
[enable_debug=no])
- # option for JavaScript plugin
- AC_ARG_ENABLE(javascript,
+ # option to build JavaScript plugin
+ # configure settings and output
+ # --enable-javascript // enable_javascript = yes
+ # --enable-javascript=yes // enable_javascript = yes
+ # --enable-javascript=no // enable_javascript = no
+ # --disable-javascript // enable_javascript = no
+ # no setting // enable_javascript = automatic ( enable if v8 present)
+ AC_ARG_ENABLE([javascript],
[AC_HELP_STRING([--enable-javascript],
- [Enable JavaScript plugin])] ,
- [enable_javascript=yes],
+ [Enable JavaScript plugin])] ,
+ [enable_javascript=$enableval],
- [enable_javascript=automatic])
-
+ [enable_javascript=no])
++#TODO MESH_REWORK Change default back to automatic
if test "x$enable_debug" = "xyes"; then
DALI_TOOLKIT_CFLAGS="$DALI_TOOLKIT_CFLAGS -DDEBUG_ENABLED"
- DALI_SCRIPTV8_CFLAGS="$DALI_TOOLKIT_CFLAGS -DDEBUG_ENABLED"
fi
if test "x$enable_debug" = "xno" -a "x$enable_exportall" = "xno"; then
DALI_TOOLKIT_CFLAGS="$DALI_TOOLKIT_CFLAGS -fvisibility=hidden -DHIDE_DALI_INTERNALS"
- DALI_SCRIPTV8_CFLAGS="$DALI_TOOLKIT_CFLAGS -fvisibility=hidden -DHIDE_DALI_INTERNALS"
fi
- #set a variable for the makefile to conditionally compile the plugin
- AM_CONDITIONAL([ENABLE_JAVASCRIPT_PLUGIN], [test x$enable_javascript = xyes])
+
# Tizen Profile options
AC_ARG_ENABLE([profile],
- [AC_HELP_STRING([--enable-profile=COMMON,MOBILE,LITE,WEARABLE,TV],
+ [AC_HELP_STRING([--enable-profile=COMMON,MOBILE,WEARABLE,TV],
[Select the variant of tizen])],
[dali_profile=$enableval],
[dali_profile=COMMON])
dataReadOnlyDir=${prefix}/share/dali/
fi
+ # v8 version 4+ requires c++11
+ PKG_CHECK_MODULES(V8, v8 = 3.32.7, [ pkg_check_v8=yes ], [ pkg_check_v8=no ] )
+
+ # Rules for building JavaScript plugin
+ # If enable_javascript=yes and v8 installed = build javascript
+ # If enable_javascript=automatic and v8 installed = build javascript
+ # If enable_javascript=yes and v8 not installed = throw an error
+ build_javascript_plugin=no
+ if test x$enable_javascript = xyes; then
+ if test x$pkg_check_v8 = xno; then
+ [build_javascript_plugin=no]
+ AC_MSG_ERROR("V8 not found or incorrect version installed")
+ AC_MSG_NOTICE("To disable building of JavaScript plugin use --disable-javascript")
+ else
+ [build_javascript_plugin=yes]
+ AC_MSG_NOTICE(V8 library found. Building DALi JavaScript plugin)
+ fi
+ fi
+ if test x$enable_javascript = xautomatic && test x$pkg_check_v8 = xyes; then
+ [build_javascript_plugin=yes]
+ AC_MSG_NOTICE( V8 library found. Automatic building of JavaScript plugin. Use use --disable-javascript to disable)
+ fi
+
+
+ #set a variable for the makefile to force compile the JAvaSplugin
+ AM_CONDITIONAL([ENABLE_JAVASCRIPT_PLUGIN], [test x$build_javascript_plugin = xyes])
+
AC_SUBST(dataReadWriteDir)
AC_SUBST(dataReadOnlyDir)
AC_SUBST(DALI_TOOLKIT_CFLAGS)
- AC_SUBST(DALI_SCRIPTV8_CFLAGS)
- AC_SUBST(DALI_SCRIPTV8_LIBS)
+
# Specify the include directory for development headers
#devincludepath=${includedir}/dali/internal
-------------
Prefix: $prefix
Debug Build: $enable_debug
- JavaScript support (V8 required) $enable_javascript
+ JavaScript support (V8 required) $build_javascript_plugin
Profile: $dali_profile
Data Dir (Read/Write): $dataReadWriteDir
Data Dir (Read Only): $dataReadOnlyDir
#include <dali-toolkit/public-api/builder/tree-node.h>
#include <dali-toolkit/public-api/controls/alignment/alignment.h>
#include <dali-toolkit/public-api/controls/bloom-view/bloom-view.h>
-#include <dali-toolkit/public-api/controls/bubble-effect/bubble-emitter.h>
#include <dali-toolkit/public-api/controls/buttons/button.h>
#include <dali-toolkit/public-api/controls/buttons/check-box-button.h>
#include <dali-toolkit/public-api/controls/buttons/push-button.h>
#include <dali-toolkit/public-api/controls/scrollable/item-view/item-factory.h>
#include <dali-toolkit/public-api/controls/scrollable/item-view/item-layout.h>
#include <dali-toolkit/public-api/controls/scrollable/item-view/item-view.h>
- #include <dali-toolkit/public-api/controls/scrollable/item-view/navigation-layout.h>
- #include <dali-toolkit/public-api/controls/scrollable/item-view/roll-layout.h>
#include <dali-toolkit/public-api/controls/scrollable/item-view/spiral-layout.h>
#include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view-carousel-effect.h>
#include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view-constraints.h>
#include <dali-toolkit/public-api/shader-effects/alpha-discard-effect.h>
#include <dali-toolkit/public-api/shader-effects/bendy-effect.h>
#include <dali-toolkit/public-api/shader-effects/blind-effect.h>
-#include <dali-toolkit/public-api/shader-effects/bouncing-effect.h>
#include <dali-toolkit/public-api/shader-effects/carousel-effect.h>
#include <dali-toolkit/public-api/shader-effects/displacement-effect.h>
#include <dali-toolkit/public-api/shader-effects/dissolve-local-effect.h>
#include <dali-toolkit/public-api/shader-effects/spot-effect.h>
#include <dali-toolkit/public-api/shader-effects/square-dissolve-effect.h>
#include <dali-toolkit/public-api/shader-effects/water-effect.h>
-#include <dali-toolkit/public-api/shader-effects/bubble-effect/bubble-effect.h>
-#include <dali-toolkit/public-api/shader-effects/bubble-effect/color-adjuster.h>
#include <dali-toolkit/public-api/shader-effects/dissolve-effect.h>
#include <dali-toolkit/public-api/shader-effects/image-region-effect.h>
#include <dali-toolkit/public-api/shader-effects/iris-effect.h>
// special field 'effect' references the shader effect instances
if(key == "effect")
{
- RenderableActor actor = RenderableActor::DownCast(handle);
+ ImageActor actor = ImageActor::DownCast(handle);
if( actor )
{
OptionalString str = constant.IsString( keyChild.second );
if( Property::INVALID_INDEX == index )
{
- RenderableActor actor = RenderableActor::DownCast(handle);
+ ImageActor actor = ImageActor::DownCast(handle);
if( actor )
{
if( ShaderEffect effect = actor.GetShaderEffect() )
if( actor )
{
+ // TEMP: Assume all script created actors are not using size negotiation for now
+ actor.SetRelayoutEnabled( false );
+
// add children of all the styles
if( OptionalChild actors = IsChild( node, KEYNAME_ACTORS ) )
{
if( SetPropertyFromNode( *pointsProperty, Property::ARRAY, points ) )
{
ret = Path::New();
- ret.SetProperty( Path::Property::Points, points);
+ ret.SetProperty( Path::Property::POINTS, points);
//control-points property
if( OptionalChild pointsProperty = IsChild( *path, "control-points") )
Dali::Property::Value points(Property::ARRAY);
if( SetPropertyFromNode( *pointsProperty, Property::ARRAY, points ) )
{
- ret.SetProperty( Path::Property::ControlPoints, points);
+ ret.SetProperty( Path::Property::CONTROL_POINTS, points);
}
}
else
#include <dali/public-api/events/mouse-wheel-event.h>
#include <dali/public-api/events/touch-event.h>
#include <dali/public-api/object/type-registry.h>
+ #include <dali/public-api/object/type-registry-helper.h>
// INTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/scrollable/item-view/item-factory.h>
-#include <dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.h>
#include <dali-toolkit/internal/controls/scrollable/scroll-connector-impl.h>
using std::string;
using std::set;
using namespace Dali;
- namespace // unnamed namespace
+ namespace // Unnamed namespace
{
//Type registration
- TypeRegistration mType( typeid(Toolkit::ItemView), typeid(Toolkit::Scrollable), NULL );
+
+ DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ItemView, Toolkit::Scrollable, NULL )
+ DALI_TYPE_REGISTRATION_END()
const float DEFAULT_MINIMUM_SWIPE_SPEED = 1.0f;
const float DEFAULT_MINIMUM_SWIPE_DISTANCE = 3.0f;
const float parentOvershoot = parentOvershootProperty.GetFloat();
const Toolkit::ControlOrientation::Type& parentOrientation = static_cast<Toolkit::ControlOrientation::Type>(parentScrollDirection.z);
- Quaternion rotation;
-
+ float multiplier = 0;
if(Toolkit::IsVertical(parentOrientation))
{
if(fabsf(parentScrollDirection.y) <= Math::MACHINE_EPSILON_1)
if( (parentOrientation == Toolkit::ControlOrientation::Up && parentOvershoot < Math::MACHINE_EPSILON_0)
|| (parentOrientation == Toolkit::ControlOrientation::Down && parentOvershoot > Math::MACHINE_EPSILON_0) )
{
- rotation = Quaternion(0.5f * Math::PI, Vector3::ZAXIS);
+ multiplier = 0.5f;
}
else
{
- rotation = Quaternion(1.5f * Math::PI, Vector3::ZAXIS);
+ multiplier = 1.5f;
}
}
else if( (parentOvershoot > Math::MACHINE_EPSILON_0 && parentScrollDirection.y > Math::MACHINE_EPSILON_0)
|| (parentOvershoot < Math::MACHINE_EPSILON_0 && parentScrollDirection.y < Math::MACHINE_EPSILON_0) )
{
- rotation = Quaternion(0.0f, Vector3::ZAXIS);
+ multiplier = 0.0f;
}
else
{
- rotation = Quaternion(Math::PI, Vector3::ZAXIS);
+ multiplier = 1.0f;
}
}
else
if( (parentOrientation == Toolkit::ControlOrientation::Left && parentOvershoot > Math::MACHINE_EPSILON_0)
||(parentOrientation == Toolkit::ControlOrientation::Right && parentOvershoot < Math::MACHINE_EPSILON_0) )
{
- rotation = Quaternion(Math::PI, Vector3::ZAXIS);
+ multiplier = 1.0f;
}
else
{
- rotation = Quaternion(0.0f, Vector3::ZAXIS);
+ multiplier = 0.0f;
}
}
else if( (parentOvershoot > Math::MACHINE_EPSILON_0 && parentScrollDirection.x > Math::MACHINE_EPSILON_0)
|| (parentOvershoot < Math::MACHINE_EPSILON_0 && parentScrollDirection.x < Math::MACHINE_EPSILON_0) )
{
- rotation = Quaternion(1.5f * Math::PI, Vector3::ZAXIS);
+ multiplier = 1.5f;
}
else
{
- rotation = Quaternion(0.5f * Math::PI, Vector3::ZAXIS);
+ multiplier = 0.5f;
}
}
+ Quaternion rotation( Radian( multiplier * Math::PI ), Vector3::ZAXIS );
+
return rotation;
}
};
void ItemView::OnInitialize()
{
- SetSizePolicy( Toolkit::Control::Fixed, Toolkit::Control::Fixed );
-
RegisterCommonProperties();
Actor self = Self();
+ // Disable size negotiation for item views
+ self.SetRelayoutEnabled( false );
+
mScrollConnector = Dali::Toolkit::ScrollConnector::New();
mScrollPositionObject = mScrollConnector.GetScrollPositionObject();
mScrollConnector.ScrollPositionChangedSignal().Connect( this, &ItemView::OnScrollPositionChanged );
LocalSource(mPropertyPosition),
LocalSource(mPropertyPositionMin),
LocalSource(mPropertyPositionMax),
- LocalSource(Actor::Property::Size),
+ LocalSource(Actor::Property::SIZE),
RelativePositionConstraint);
self.ApplyConstraint(constraint);
// Move the items to the new layout positions...
- bool resizeAnimationNeeded(false);
for (ConstItemPoolIter iter = mItemPool.begin(); iter != mItemPool.end(); ++iter)
{
unsigned int itemId = iter->first;
Vector3 size;
if(mActiveLayout->GetItemSize(itemId, targetSize, size))
{
- if( durationSeconds > 0.0f )
- {
- // Use a size animation
- if (!resizeAnimationNeeded)
- {
- resizeAnimationNeeded = true;
- RemoveAnimation(mResizeAnimation);
- mResizeAnimation = Animation::New(durationSeconds);
- }
-
- // The layout provides its own resize animation
- mActiveLayout->GetResizeAnimation(mResizeAnimation, actor, size, durationSeconds);
- }
- else
- {
- // resize immediately
- actor.SetSize(size);
- }
+ // resize immediately
+ actor.SetResizePolicy( FIXED, ALL_DIMENSIONS );
+ actor.SetPreferredSize( size.GetVectorXY() );
}
mActiveLayout->ApplyConstraints(actor, itemId, durationSeconds, mScrollPositionObject, Self() );
}
- if (resizeAnimationNeeded)
- {
- mResizeAnimation.Play();
- }
-
// Refresh the new layout
ItemRange range = GetItemRange(*mActiveLayout, targetSize, GetCurrentLayoutPosition(0), false/* don't reserve extra*/);
AddActorsWithinRange( range, durationSeconds );
}
}
+ void ItemView::Refresh()
+ {
+ for (ItemPoolIter iter = mItemPool.begin(); iter != mItemPool.end(); ++iter )
+ {
+ ReleaseActor( iter->first, iter->second );
+ }
+ mItemPool.clear();
+
+ DoRefresh(GetCurrentLayoutPosition(0), true);
+ }
+
void ItemView::DoRefresh(float currentLayoutPosition, bool cacheExtra)
{
if (mActiveLayout)
Vector3 size;
if( mActiveLayout->GetItemSize( item.first, mActiveLayoutTargetSize, size ) )
{
- item.second.SetSize( size );
+ item.second.SetResizePolicy( FIXED, ALL_DIMENSIONS );
+ item.second.SetPreferredSize( size.GetVectorXY() );
}
mActiveLayout->ApplyConstraints( item.second, item.first, durationSeconds, mScrollPositionObject, Self() );
if( enable )
{
Property::Index effectOvershootPropertyIndex = Property::INVALID_INDEX;
- mOvershootOverlay = CreateBouncingEffectActor( effectOvershootPropertyIndex );
- mOvershootOverlay.SetColor(mOvershootEffectColor);
- mOvershootOverlay.SetParentOrigin(ParentOrigin::TOP_LEFT);
- mOvershootOverlay.SetAnchorPoint(AnchorPoint::TOP_LEFT);
- mOvershootOverlay.SetDrawMode(DrawMode::OVERLAY);
- self.Add(mOvershootOverlay);
- Constraint constraint = Constraint::New<Vector3>( Actor::Property::Size,
+ Constraint constraint = Constraint::New<Vector3>( Actor::Property::SIZE,
ParentSource( mPropertyScrollDirection ),
Source( mScrollPositionObject, ScrollConnector::OVERSHOOT ),
- ParentSource( Actor::Property::Size ),
+ ParentSource( Actor::Property::SIZE ),
OvershootOverlaySizeConstraint() );
mOvershootOverlay.ApplyConstraint(constraint);
mOvershootOverlay.SetSize(OVERSHOOT_BOUNCE_ACTOR_DEFAULT_SIZE.width, OVERSHOOT_BOUNCE_ACTOR_DEFAULT_SIZE.height);
- constraint = Constraint::New<Quaternion>( Actor::Property::Rotation,
+ constraint = Constraint::New<Quaternion>( Actor::Property::ORIENTATION,
ParentSource( mPropertyScrollDirection ),
Source( mScrollPositionObject, ScrollConnector::OVERSHOOT ),
OvershootOverlayRotationConstraint() );
mOvershootOverlay.ApplyConstraint(constraint);
- constraint = Constraint::New<Vector3>( Actor::Property::Position,
- ParentSource( Actor::Property::Size ),
+ constraint = Constraint::New<Vector3>( Actor::Property::POSITION,
+ ParentSource( Actor::Property::SIZE ),
ParentSource( mPropertyScrollDirection ),
Source( mScrollPositionObject, ScrollConnector::OVERSHOOT ),
OvershootOverlayPositionConstraint() );
mOvershootOverlay.ApplyConstraint(constraint);
- constraint = Constraint::New<bool>( Actor::Property::Visible,
+ constraint = Constraint::New<bool>( Actor::Property::VISIBLE,
ParentSource( mPropertyCanScrollVertical ),
OvershootOverlayVisibilityConstraint() );
mOvershootOverlay.ApplyConstraint(constraint);
{
DALI_ASSERT_DEBUG( ( 0 <= cursorPosition-1 ) && ( cursorPosition-1 < mTextViewCharacterPositioning.StyledTextSize() ) );
const TextStyle styleAtCursor = mTextViewCharacterPositioning.GetStyleAt( cursorPosition-1 );
- mCursor.SetRotation( styleAtCursor.IsItalicsEnabled() ? Degree( styleAtCursor.GetItalicsAngle() - CURSOR_ANGLE_OFFSET ) : Degree( 0.f ), Vector3::ZAXIS );
+ mCursor.SetOrientation( styleAtCursor.IsItalicsEnabled() ? Degree( styleAtCursor.GetItalicsAngle() - CURSOR_ANGLE_OFFSET ) : Degree( 0.f ), Vector3::ZAXIS );
}
DALI_ASSERT_DEBUG( cursorPosition <= mTextViewCharacterPositioning.GetNumberOfCharactersInText() );
{
DALI_ASSERT_DEBUG( parent && "Highlight target parent does not exist" );
- if ( !mHighlightMeshActor )
- {
- mHighlightMeshActor = MeshActor::New( mTextHighlight.CreateHighLightMesh() );
- mHighlightMeshActor.SetName( "HighlightMeshActor" );
- parent.Add( mHighlightMeshActor );
- }
}
void Decorator::RemoveHighlight()
{
- if ( mHighlightMeshActor )
- {
- mHighlightMeshActor.Unparent();
- mHighlightMeshActor.Reset();
- // NOTE: We cannot dereference mHighlightMesh, due to a how the scene-graph MeshRenderer uses the Mesh data.
- }
}
void Decorator::HighlightVisibility( bool visiblility )
{
- if ( mHighlightMeshActor )
- {
- mHighlightMeshActor.SetVisible( visiblility );
- }
}
/**
Actor selectionHandleTwo = mTextInputHandles.GetSelectionHandleTwo();
// Exceeding horizontal boundary
- PropertyNotification leftNotification = selectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionX, LessThanCondition( mBoundingRectangleWorldCoordinates.x + handlesize.x) );
+ PropertyNotification leftNotification = selectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, LessThanCondition( mBoundingRectangleWorldCoordinates.x + handlesize.x) );
leftNotification.NotifySignal().Connect( this, &Decorator::OnLeftBoundaryExceeded );
- PropertyNotification rightNotification = selectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionX, GreaterThanCondition( mBoundingRectangleWorldCoordinates.z - handlesize.x ) );
+ PropertyNotification rightNotification = selectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, GreaterThanCondition( mBoundingRectangleWorldCoordinates.z - handlesize.x ) );
rightNotification.NotifySignal().Connect( this, &Decorator::OnRightBoundaryExceeded );
// Within horizontal boundary
- PropertyNotification leftLeaveNotification = selectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionX, GreaterThanCondition( mBoundingRectangleWorldCoordinates.x + 2*handlesize.x ) );
+ PropertyNotification leftLeaveNotification = selectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, GreaterThanCondition( mBoundingRectangleWorldCoordinates.x + 2*handlesize.x ) );
leftLeaveNotification.NotifySignal().Connect( this, &Decorator::OnReturnToLeftBoundary );
- PropertyNotification rightLeaveNotification = selectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionX, LessThanCondition( mBoundingRectangleWorldCoordinates.z - 2*handlesize.x ) );
+ PropertyNotification rightLeaveNotification = selectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, LessThanCondition( mBoundingRectangleWorldCoordinates.z - 2*handlesize.x ) );
rightLeaveNotification.NotifySignal().Connect( this, &Decorator::OnReturnToRightBoundary );
// Exceeding vertical boundary
- PropertyNotification verticalExceedNotificationOne = selectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalExceedNotificationOne = selectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
OutsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalExceedNotificationOne.NotifySignal().Connect( this, &Decorator::OnHandleOneLeavesBoundary );
- PropertyNotification verticalExceedNotificationTwo = selectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalExceedNotificationTwo = selectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
OutsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalExceedNotificationTwo.NotifySignal().Connect( this, &Decorator::OnHandleTwoLeavesBoundary );
// Within vertical boundary
- PropertyNotification verticalWithinNotificationOne = selectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalWithinNotificationOne = selectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
InsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalWithinNotificationOne.NotifySignal().Connect( this, &Decorator::OnHandleOneWithinBoundary );
- PropertyNotification verticalWithinNotificationTwo = selectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalWithinNotificationTwo = selectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
InsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalWithinNotificationTwo.NotifySignal().Connect( this, &Decorator::OnHandleTwoWithinBoundary );
DALI_ASSERT_DEBUG( mPopUpTarget && "PopUp Target Actor does not exist" );
- if( mHighlightMeshActor ) // Text Selection mode
- {
- position = PositionOfPopUpRelativeToSelectionHandles();
- }
- else // Not in Text Selection mode so position relative to cursor.
{
position = PositionOfPopUpRelativeToCursor();
}
{
bool isAllTextSelectedAlready = ( mTextViewCharacterPositioning.StyledTextSize() == GetSelectedText().size() );
bool isTextEmpty = mTextViewCharacterPositioning.IsStyledTextEmpty() ;
- bool isSubsetOfTextAlreadySelected = ( !isAllTextSelectedAlready ) && mHighlightMeshActor;
+ bool isSubsetOfTextAlreadySelected = ( !isAllTextSelectedAlready ) &&false;
Clipboard clipboard = Clipboard::Get();
bool hasClipboardGotContent = clipboard.NumberOfItems();
{
Vector3 position, alternativePosition;
- if( mHighlightMeshActor ) // Text Selection mode
- {
- alternativePosition = AlternatePopUpPositionRelativeToSelectionHandles();
- }
- else // Not in Text Selection mode
{
alternativePosition = AlternatePopUpPositionRelativeToCursor();
// if can't be positioned above, then position below row.
// Note Property notifications ignore any set anchor point so conditions must allow for this. Default is Top Left.
// Exceeding vertical boundary
- PropertyNotification verticalExceedNotificationOne = mPopUpPanel.Self().AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalExceedNotificationOne = mPopUpPanel.Self().AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
OutsideCondition( mBoundingRectangleWorldCoordinates.y + mPopUpPanel.GetSize().y/2,
mBoundingRectangleWorldCoordinates.w - mPopUpPanel.GetSize().y/2 ) );
verticalExceedNotificationOne.NotifySignal().Connect( this, &Decorator::PopUpLeavesVerticalBoundary );
PositionSelectionHandle( selectionHandleOne, mSelectionHandleOneActualPosition, mSelectionHandleOnePosition );
PositionSelectionHandle( selectionHandleTwo, mSelectionHandleTwoActualPosition, mSelectionHandleTwoPosition );
- if( mHighlightMeshActor )
- {
- mHighlightMeshActor.SetVisible( true );
- ShowUpdatedHighlight();
- }
}
}
{
MarkupProcessor::StyledTextArray currentSelectedText;
- if ( mHighlightMeshActor ) // Text Selected
- {
- MarkupProcessor::StyledTextArray::iterator it = mTextViewCharacterPositioning.GetStyledTextArray().begin() + std::min(mSelectionHandleOnePosition, mSelectionHandleTwoPosition);
- MarkupProcessor::StyledTextArray::iterator end = mTextViewCharacterPositioning.GetStyledTextArray().begin() + std::max(mSelectionHandleOnePosition, mSelectionHandleTwoPosition);
-
- for(; it != end; ++it)
- {
- MarkupProcessor::StyledText& styledText( *it );
- currentSelectedText.push_back( styledText );
- }
- }
return currentSelectedText;
}
#include <dali/public-api/events/key-event.h>
#include <dali/public-api/events/touch-event.h>
#include <dali/public-api/object/type-registry.h>
+ #include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/object/property-notification.h>
+ #include <dali/public-api/size-negotiation/relayout-container.h>
#include <dali/integration-api/debug.h>
#include <dali/public-api/images/resource-image.h>
const Vector3 UI_OFFSET(0.0f, 0.0f, UI_Z_OFFSET); ///< Text Selection Handles/Cursor offset.
const Vector3 DEFAULT_HANDLE_ONE_OFFSET(0.0f, -5.0f, 0.0f); ///< Handle One's Offset
const Vector3 DEFAULT_HANDLE_TWO_OFFSET(0.0f, -5.0f, 0.0f); ///< Handle Two's Offset
- const float TOP_HANDLE_TOP_OFFSET( 34.0f); ///< Offset between top handle and cutCopyPaste pop-up
- const float BOTTOM_HANDLE_BOTTOM_OFFSET(34.0f); ///< Offset between bottom handle and cutCopyPaste pop-up
+ const float TOP_HANDLE_TOP_OFFSET( 34.0f); ///< Offset between top handle and cutCopyPaste pop-up
+ const float BOTTOM_HANDLE_BOTTOM_OFFSET(34.0f); ///< Offset between bottom handle and cutCopyPaste pop-up
const float CURSOR_THICKNESS(4.0f);
const Degree CURSOR_ANGLE_OFFSET(2.0f); ///< Offset from the angle of italic angle.
const Vector4 DEFAULT_CURSOR_COLOR(1.0f, 1.0f, 1.0f, 1.0f);
- const std::string NEWLINE( "\n" );
+ const char* const NEWLINE = "\n";
const TextStyle DEFAULT_TEXT_STYLE;
namespace Toolkit
{
- // Properties
- const Property::Index TextInput::HIGHLIGHT_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX;
- const Property::Index TextInput::CUT_AND_PASTE_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+1;
- const Property::Index TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+2;
- const Property::Index TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+3;
- const Property::Index TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+4;
- const Property::Index TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+5;
- const Property::Index TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+6;
- const Property::Index TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+7;
- const Property::Index TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+8;
- const Property::Index TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+9;
- const Property::Index TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+10;
- const Property::Index TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+11;
- const Property::Index TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+12;
- const Property::Index TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+13;
- const Property::Index TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+14;
- const Property::Index TextInput::CURSOR_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+15;
-
namespace Internal
{
- namespace
+ namespace // Unnamed namespace
{
- // Signals
-
- const char* const SIGNAL_START_INPUT = "start-input";
- const char* const SIGNAL_END_INPUT = "end-input";
- const char* const SIGNAL_STYLE_CHANGED = "style-changed";
- const char* const SIGNAL_MAX_INPUT_CHARACTERS_REACHED = "max-input-characters-reached";
- const char* const SIGNAL_TOOLBAR_DISPLAYED = "toolbar-displayed";
- const char* const SIGNAL_TEXT_EXCEED_BOUNDARIES = "text-exceed-boundaries";
-
BaseHandle Create()
{
return Toolkit::TextInput::New();
}
- TypeRegistration typeRegistration( typeid( Toolkit::TextInput ), typeid( Toolkit::Control ), Create );
+ // Setup properties, signals and actions using the type-registry.
+ DALI_TYPE_REGISTRATION_BEGIN( Toolkit::TextInput, Toolkit::Control, Create )
- SignalConnectorType signalConnector1( typeRegistration, SIGNAL_START_INPUT, &TextInput::DoConnectSignal );
- SignalConnectorType signalConnector2( typeRegistration, SIGNAL_END_INPUT, &TextInput::DoConnectSignal );
- SignalConnectorType signalConnector3( typeRegistration, SIGNAL_STYLE_CHANGED, &TextInput::DoConnectSignal );
- SignalConnectorType signalConnector4( typeRegistration, SIGNAL_MAX_INPUT_CHARACTERS_REACHED, &TextInput::DoConnectSignal );
- SignalConnectorType signalConnector5( typeRegistration, SIGNAL_TOOLBAR_DISPLAYED, &TextInput::DoConnectSignal );
- SignalConnectorType signalConnector6( typeRegistration, SIGNAL_TEXT_EXCEED_BOUNDARIES, &TextInput::DoConnectSignal );
+ DALI_PROPERTY_REGISTRATION( TextInput, "highlight-color", VECTOR4, HIGHLIGHT_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-bg-color", VECTOR4, CUT_AND_PASTE_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-pressed-color", VECTOR4, CUT_AND_PASTE_PRESSED_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-border-color", VECTOR4, CUT_AND_PASTE_BORDER_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-icon-color", VECTOR4, CUT_AND_PASTE_ICON_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-icon-pressed-color", VECTOR4, CUT_AND_PASTE_ICON_PRESSED_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-text-color", VECTOR4, CUT_AND_PASTE_TEXT_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-text-pressed-color", VECTOR4, CUT_AND_PASTE_TEXT_PRESSED_COLOR )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cut-button-position-priority", UNSIGNED_INTEGER, CUT_BUTTON_POSITION_PRIORITY )
+ DALI_PROPERTY_REGISTRATION( TextInput, "copy-button-position-priority", UNSIGNED_INTEGER, COPY_BUTTON_POSITION_PRIORITY )
+ DALI_PROPERTY_REGISTRATION( TextInput, "paste-button-position-priority", UNSIGNED_INTEGER, PASTE_BUTTON_POSITION_PRIORITY )
+ DALI_PROPERTY_REGISTRATION( TextInput, "select-button-position-priority", UNSIGNED_INTEGER, SELECT_BUTTON_POSITION_PRIORITY )
+ DALI_PROPERTY_REGISTRATION( TextInput, "select-all-button-position-priority", UNSIGNED_INTEGER, SELECT_ALL_BUTTON_POSITION_PRIORITY )
+ DALI_PROPERTY_REGISTRATION( TextInput, "clipboard-button-position-priority", UNSIGNED_INTEGER, CLIPBOARD_BUTTON_POSITION_PRIORITY )
+ DALI_PROPERTY_REGISTRATION( TextInput, "popup-offset-from-text", VECTOR4, POP_UP_OFFSET_FROM_TEXT )
+ DALI_PROPERTY_REGISTRATION( TextInput, "cursor-color", VECTOR4, CURSOR_COLOR )
- }
+ DALI_SIGNAL_REGISTRATION( TextInput, "start-input", SIGNAL_START_INPUT )
+ DALI_SIGNAL_REGISTRATION( TextInput, "end-input", SIGNAL_END_INPUT )
+ DALI_SIGNAL_REGISTRATION( TextInput, "style-changed", SIGNAL_STYLE_CHANGED )
+ DALI_SIGNAL_REGISTRATION( TextInput, "max-input-characters-reached", SIGNAL_MAX_INPUT_CHARACTERS_REACHED )
+ DALI_SIGNAL_REGISTRATION( TextInput, "toolbar-displayed", SIGNAL_TOOLBAR_DISPLAYED )
+ DALI_SIGNAL_REGISTRATION( TextInput, "text-exceed-boundaries", SIGNAL_TEXT_EXCEED_BOUNDARIES )
- PropertyRegistration property1( typeRegistration, "highlight-color", Toolkit::TextInput::HIGHLIGHT_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property2( typeRegistration, "cut-and-paste-bg-color", Toolkit::TextInput::CUT_AND_PASTE_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property3( typeRegistration, "cut-and-paste-pressed-color", Toolkit::TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property4( typeRegistration, "cut-and-paste-icon-color", Toolkit::TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property5( typeRegistration, "cut-and-paste-icon-pressed-color", Toolkit::TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property6( typeRegistration, "cut-and-paste-text-color", Toolkit::TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property7( typeRegistration, "cut-and-paste-text-pressed-color", Toolkit::TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property8( typeRegistration, "cut-and-paste-border-color", Toolkit::TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property9( typeRegistration, "cut-button-position-priority", Toolkit::TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property10( typeRegistration, "copy-button-position-priority", Toolkit::TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property11( typeRegistration, "paste-button-position-priority", Toolkit::TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property12( typeRegistration, "select-button-position-priority", Toolkit::TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property13( typeRegistration, "select-all-button-position-priority", Toolkit::TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property14( typeRegistration, "clipboard-button-position-priority", Toolkit::TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property15( typeRegistration, "popup-offset-from-text", Toolkit::TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
- PropertyRegistration property16( typeRegistration, "cursor-color", Toolkit::TextInput::CURSOR_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
+ DALI_TYPE_REGISTRATION_END()
+ }
// [TextInput::HighlightInfo] /////////////////////////////////////////////////
void TextInput::SetMaterialDiffuseColor( const Vector4& color )
{
mMaterialColor = color;
- if ( mCustomMaterial )
- {
- mCustomMaterial.SetDiffuseColor( mMaterialColor );
- mMeshData.SetMaterial( mCustomMaterial );
- }
}
const Vector4& TextInput::GetMaterialDiffuseColor() const
bool TextInput::IsTextSelected() const
{
- return mHighlightMeshActor;
+ return false;
}
void TextInput::DeSelectText()
mActiveLayer.SetSize(targetSize);
}
- void TextInput::OnRelayout( const Vector2& size, ActorSizeContainer& container )
+ void TextInput::OnRelayout( const Vector2& size, RelayoutContainer& container )
{
- Relayout( mDisplayedTextView, size, container );
- Relayout( mPopupPanel.GetRootActor(), size, container );
+ container.Add( mDisplayedTextView, size );
+ container.Add( mPopupPanel.GetRootActor(), size );
GetTextLayoutInfo();
DALI_LOG_INFO( gLogFilter, Debug::General, "OnLongPress\n" );
// Ignore longpress if in selection mode already
- if( mHighlightMeshActor )
- {
- return;
- }
if(longPress.state == Dali::Gesture::Started)
{
popup.HideFinishedSignal().Disconnect( this, &TextInput::OnPopupHideFinished );
// Change Popup menu to Cut/Copy/Paste if text has been selected.
- if(mHighlightMeshActor && mState == StateEdit)
- {
- ShowPopupCutCopyPaste();
- }
}
//FIXME this routine needs to be re-written as it contains too many branches.
} // Return
else if ( keyName == "space" )
{
- if ( mHighlightMeshActor )
- {
- // Some text is selected so erase it before adding space.
- DeleteHighlightedText( true );
- }
mCursorPosition = mCursorPosition + InsertAt(Text(keyString), mCursorPosition, 0);
} // space
else if (keyName == "BackSpace")
{
- if ( mHighlightMeshActor )
- {
- // Some text is selected so erase it
- DeleteHighlightedText( true );
- update = true;
- }
- else
{
if ( mCursorPosition > 0 )
{
mSelectionHandleOne.SetPosition( mSelectionHandleOneActualPosition + UI_OFFSET + mSelectionHandleOneOffset );
mSelectionHandleTwo.SetPosition( mSelectionHandleTwoActualPosition + UI_OFFSET + mSelectionHandleTwoOffset );
- if( mHighlightMeshActor )
- {
- mHighlightMeshActor.SetVisible( true );
- UpdateHighlight();
- }
}
}
mDisplayedTextView.SetLineJustification( Toolkit::TextView::Left );
mDisplayedTextView.SetTextAlignment( static_cast<Toolkit::Alignment::Type>( Toolkit::Alignment::HorizontalLeft | Toolkit::Alignment::VerticalTop ) );
mDisplayedTextView.SetPosition( Vector3( 0.0f, 0.0f, DISPLAYED_TEXT_VIEW_Z_OFFSET ) );
- mDisplayedTextView.SetSizePolicy( Toolkit::Control::Fixed, Toolkit::Control::Fixed );
mDisplayedTextView.ScrolledSignal().Connect( this, &TextInput::OnTextViewScrolled );
mIgnoreFirstCommitFlag = false;
// Some text may be selected, hiding keyboard causes an empty predictive string to be sent, we don't want to delete highlight in this case
- if ( mHighlightMeshActor && (!imfEvent.predictiveString.empty()) )
- {
- // replaces highlighted text with new character
- DeleteHighlightedText( false );
- }
preeditResetRequired = PreEditReceived( imfEvent.predictiveString, imfEvent.cursorOffset );
// A Commit message is a word that has been accepted, it may have been a pre-edit word previously but now commited.
// Some text may be selected, hiding keyboard causes an empty predictive string to be sent, we don't want to delete highlight in this case
- if ( mHighlightMeshActor && (!imfEvent.predictiveString.empty()) )
- {
- // replaces highlighted text with new character
- DeleteHighlightedText( false );
- }
// A PreEditReset can cause a commit message to be sent, the Ignore Commit flag is used in scenarios where the word is
// not needed, one such scenario is when the pre-edit word is too long to fit.
std::size_t toDelete = 0;
std::size_t numberOfCharacters = 0;
- if( mHighlightMeshActor )
- {
- // delete highlighted text.
- toDelete = std::min( mSelectionHandleOnePosition, mSelectionHandleTwoPosition );
- numberOfCharacters = std::max( mSelectionHandleOnePosition, mSelectionHandleTwoPosition ) - toDelete;
- }
- else
{
if( static_cast<std::size_t>(std::abs( imfEvent.cursorOffset )) < mCursorPosition )
{
{
// If text is selected/highlighted and surrounding text received we do not want the keyboard to store the word at cursor and return it as a predictive word along with
// the next key pressed. Instead the Select function sets the cursor position and surrounding text.
- if (! ( mHighlightMeshActor || mSelectingText ) )
+ if (! ( false || mSelectingText ) )
{
std::string text( GetText() );
DALI_LOG_INFO( gLogFilter, Debug::General, "OnKey - surrounding text - set text [%s] and cursor[%u] \n", text.c_str(), mCursorPosition );
{
DALI_LOG_INFO( gLogFilter, Debug::General, "DeleteHighlightedText handlePosOne[%u] handlePosTwo[%u]\n", mSelectionHandleOnePosition, mSelectionHandleTwoPosition);
- if( mHighlightMeshActor )
- {
- mCursorPosition = std::min( mSelectionHandleOnePosition, mSelectionHandleTwoPosition );
-
- MarkupProcessor::StyledTextArray::iterator start = mStyledText.begin() + mCursorPosition;
- MarkupProcessor::StyledTextArray::iterator end = mStyledText.begin() + std::max( mSelectionHandleOnePosition, mSelectionHandleTwoPosition );
-
- // Get the styled text of the characters to be deleted as it may be needed if
- // the "exceed the text-input's boundaries" option is disabled.
- MarkupProcessor::StyledTextArray styledCharactersToDelete;
-
- styledCharactersToDelete.insert( styledCharactersToDelete.begin(), start, end );
-
- mStyledText.erase( start, end ); // erase range of characters
-
- // Remove text from TextView and update place holder text if required
-
- // Set the placeholder text only if the styled text is empty.
- if( mStyledText.empty() )
- {
- ShowPlaceholderText( mStyledPlaceHolderText );
- }
- else
- {
- const std::size_t numberOfCharacters = std::max( mSelectionHandleOnePosition, mSelectionHandleTwoPosition ) - mCursorPosition;
-
- mDisplayedTextView.RemoveTextFrom( mCursorPosition, numberOfCharacters );
-
- // It may happen than after removing a white space or a new line character,
- // two words merge, this new word could be big enough to not fit in its
- // current line, so moved to the next one, and make some part of the text to
- // exceed the text-input's boundary.
- if( !mExceedEnabled )
- {
- // Get the new text layout after removing some characters.
- mDisplayedTextView.GetTextLayoutInfo( mTextLayoutInfo );
-
- // Get text-input's size.
- const Vector3& size = GetControlSize();
-
- if( ( mTextLayoutInfo.mTextSize.width > size.width ) ||
- ( mTextLayoutInfo.mTextSize.height > size.height ) )
- {
- mDisplayedTextView.InsertTextAt( mCursorPosition, styledCharactersToDelete );
-
- mStyledText.insert( mStyledText.begin() + mCursorPosition,
- styledCharactersToDelete.begin(),
- styledCharactersToDelete.end() );
- }
- }
- }
- GetTextLayoutInfo();
-
- RemoveHighlight();
-
- EmitTextModified();
-
- if( inheritStyle )
- {
- const TextStyle oldInputStyle( mInputStyle );
-
- mInputStyle = GetStyleAtCursor(); // Inherit style from cursor position
-
- if( oldInputStyle != mInputStyle )
- {
- // Updates the line height accordingly with the input style.
- UpdateLineHeight();
-
- EmitStyleChangedSignal();
- }
- }
- }
}
void TextInput::DeleteRange( const std::size_t start, const std::size_t ncharacters )
mStyledText.erase(itStart, itEnd);
// update the selection handles if they are visible.
- if( mHighlightMeshActor )
- {
- std::size_t& minHandle = ( mSelectionHandleOnePosition <= mSelectionHandleTwoPosition ? mSelectionHandleOnePosition : mSelectionHandleTwoPosition );
- std::size_t& maxHandle = ( mSelectionHandleTwoPosition > mSelectionHandleOnePosition ? mSelectionHandleTwoPosition : mSelectionHandleOnePosition );
-
- if( minHandle >= start + ncharacters )
- {
- minHandle -= ncharacters;
- }
- else if( ( minHandle > start ) && ( minHandle < start + ncharacters ) )
- {
- minHandle = start;
- }
-
- if( maxHandle >= start + ncharacters )
- {
- maxHandle -= ncharacters;
- }
- else if( ( maxHandle > start ) && ( maxHandle < start + ncharacters ) )
- {
- maxHandle = start;
- }
- }
// Set text is not called here as currently it can not process the set text from deletion and then the set text from the in-coming pre-edit.
}
mCursor.SetSize(size);
// If the character is italic then the cursor also tilts.
- mCursor.SetRotation( mInputStyle.IsItalicsEnabled() ? Degree( mInputStyle.GetItalicsAngle() - CURSOR_ANGLE_OFFSET ) : Degree( 0.f ), Vector3::ZAXIS );
+ mCursor.SetOrientation( mInputStyle.IsItalicsEnabled() ? Degree( mInputStyle.GetItalicsAngle() - CURSOR_ANGLE_OFFSET ) : Degree( 0.f ), Vector3::ZAXIS );
DALI_ASSERT_DEBUG( mCursorPosition <= mTextLayoutInfo.mCharacterLayoutInfoTable.size() );
Vector3 handlesize = GetSelectionHandleSize();
// Exceeding horizontal boundary
- PropertyNotification leftNotification = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionX, LessThanCondition( mBoundingRectangleWorldCoordinates.x + handlesize.x) );
+ PropertyNotification leftNotification = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, LessThanCondition( mBoundingRectangleWorldCoordinates.x + handlesize.x) );
leftNotification.NotifySignal().Connect( this, &TextInput::OnLeftBoundaryExceeded );
- PropertyNotification rightNotification = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionX, GreaterThanCondition( mBoundingRectangleWorldCoordinates.z - handlesize.x ) );
+ PropertyNotification rightNotification = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, GreaterThanCondition( mBoundingRectangleWorldCoordinates.z - handlesize.x ) );
rightNotification.NotifySignal().Connect( this, &TextInput::OnRightBoundaryExceeded );
// Within horizontal boundary
- PropertyNotification leftLeaveNotification = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionX, GreaterThanCondition( mBoundingRectangleWorldCoordinates.x + 2*handlesize.x ) );
+ PropertyNotification leftLeaveNotification = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, GreaterThanCondition( mBoundingRectangleWorldCoordinates.x + 2*handlesize.x ) );
leftLeaveNotification.NotifySignal().Connect( this, &TextInput::OnReturnToLeftBoundary );
- PropertyNotification rightLeaveNotification = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionX, LessThanCondition( mBoundingRectangleWorldCoordinates.z - 2*handlesize.x ) );
+ PropertyNotification rightLeaveNotification = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_X, LessThanCondition( mBoundingRectangleWorldCoordinates.z - 2*handlesize.x ) );
rightLeaveNotification.NotifySignal().Connect( this, &TextInput::OnReturnToRightBoundary );
// Exceeding vertical boundary
- PropertyNotification verticalExceedNotificationOne = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalExceedNotificationOne = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
OutsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalExceedNotificationOne.NotifySignal().Connect( this, &TextInput::OnHandleOneLeavesBoundary );
- PropertyNotification verticalExceedNotificationTwo = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalExceedNotificationTwo = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
OutsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalExceedNotificationTwo.NotifySignal().Connect( this, &TextInput::OnHandleTwoLeavesBoundary );
// Within vertical boundary
- PropertyNotification verticalWithinNotificationOne = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalWithinNotificationOne = mSelectionHandleOne.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
InsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalWithinNotificationOne.NotifySignal().Connect( this, &TextInput::OnHandleOneWithinBoundary );
- PropertyNotification verticalWithinNotificationTwo = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WorldPositionY,
+ PropertyNotification verticalWithinNotificationTwo = mSelectionHandleTwo.AddPropertyNotification( Actor::Property::WORLD_POSITION_Y,
InsideCondition( mBoundingRectangleWorldCoordinates.y + handlesize.y,
mBoundingRectangleWorldCoordinates.w - handlesize.y ) );
verticalWithinNotificationTwo.NotifySignal().Connect( this, &TextInput::OnHandleTwoWithinBoundary );
// 9* *7
//
- if ( mHighlightMeshActor )
- {
- // vertex and triangle buffers should always be present if MeshActor is alive.
- HighlightInfo newHighlightInfo = CalculateHighlightInfoRtl();
- MeshData::VertexContainer vertices;
- Dali::MeshData::FaceIndices faceIndices;
-
- if( !newHighlightInfo.mQuadList.empty() )
- {
- std::vector<QuadCoordinates>::iterator iter = newHighlightInfo.mQuadList.begin();
- std::vector<QuadCoordinates>::iterator endIter = newHighlightInfo.mQuadList.end();
-
- // vertex position defaults to (0 0 0)
- MeshData::Vertex vertex;
- // set normal for all vertices as (0 0 1) pointing outward from TextInput Actor.
- vertex.nZ = 1.0f;
-
- for(std::size_t v = 0; iter != endIter; ++iter,v+=4 )
- {
- // Add each quad geometry (a sub-selection) to the mesh data.
-
- // 0-----1
- // |\ |
- // | \ A |
- // | \ |
- // | B \ |
- // | \|
- // 2-----3
-
- QuadCoordinates& quad = *iter;
- // top-left (v+0)
- vertex.x = quad.min.x;
- vertex.y = quad.min.y;
- vertices.push_back( vertex );
-
- // top-right (v+1)
- vertex.x = quad.max.x;
- vertex.y = quad.min.y;
- vertices.push_back( vertex );
-
- // bottom-left (v+2)
- vertex.x = quad.min.x;
- vertex.y = quad.max.y;
- vertices.push_back( vertex );
-
- // bottom-right (v+3)
- vertex.x = quad.max.x;
- vertex.y = quad.max.y;
- vertices.push_back( vertex );
-
- // triangle A (3, 1, 0)
- faceIndices.push_back( v + 3 );
- faceIndices.push_back( v + 1 );
- faceIndices.push_back( v );
-
- // triangle B (0, 2, 3)
- faceIndices.push_back( v );
- faceIndices.push_back( v + 2 );
- faceIndices.push_back( v + 3 );
-
- mMeshData.SetFaceIndices( faceIndices );
- }
-
- BoneContainer bones(0); // passed empty as bones not required
- mMeshData.SetData( vertices, faceIndices, bones, mCustomMaterial );
- mHighlightMesh.UpdateMeshData(mMeshData);
- }
- }
}
void TextInput::ClearPopup()
Vector3 position;
Vector2 alternativePopupPosition;
- if(mHighlightMeshActor && mState == StateEdit)
+ if(false && mState == StateEdit)
{
Vector3 topHandle;
Vector3 bottomHandle; // referring to the bottom most point of the handle or the bottom line of selection.
bool textInputTouched = (touchedActor && WasTouchedCheck( touchedActor ));
- if ( ( mHighlightMeshActor || popUpShown ) && !textInputTouched )
+ if ( ( false || popUpShown ) && !textInputTouched )
{
EndMonitoringStageForTouch();
HidePopup( true, false );
{
DALI_LOG_INFO(gLogFilter, Debug::General, "RemoveHighlight\n");
- if ( mHighlightMeshActor )
+ if ( false )
{
if ( mSelectionHandleOne )
{
mNewHighlightInfo.mQuadList.clear();
- Self().Remove( mHighlightMeshActor );
SetCursorVisibility( true );
StartCursorBlinkTimer();
- mHighlightMeshActor.Reset();
// NOTE: We cannot dereference mHighlightMesh, due
// to a bug in how the scene-graph MeshRenderer uses the Mesh data incorrectly.
void TextInput::CreateHighlight()
{
- if ( !mHighlightMeshActor )
- {
- mMeshData = MeshData( );
- mMeshData.SetHasNormals( true );
-
- mCustomMaterial = Material::New("CustomMaterial");
- mCustomMaterial.SetDiffuseColor( mMaterialColor );
-
- mMeshData.SetMaterial( mCustomMaterial );
-
- mHighlightMesh = Mesh::New( mMeshData );
-
- mHighlightMeshActor = MeshActor::New( mHighlightMesh );
- mHighlightMeshActor.SetName( "HighlightMeshActor" );
- mHighlightMeshActor.SetParentOrigin( ParentOrigin::TOP_LEFT );
- mHighlightMeshActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
- mHighlightMeshActor.SetPosition( 0.0f, 0.0f, DISPLAYED_HIGHLIGHT_Z_OFFSET );
-
- Self().Add(mHighlightMeshActor);
- }
}
// Any key stroke that results in a visual change of the text-input should
// set this flag to true.
bool update = false;
- if( mHighlightMeshActor )
+ if( false )
{
/* if highlighted, delete entire text, and position cursor at start of deleted text. */
mCursorPosition = std::min(mSelectionHandleOnePosition, mSelectionHandleTwoPosition);
mSelectionHandleOne.SetVisible( true );
mSelectionHandleTwo.SetVisible( true );
- if( mHighlightMeshActor )
- {
- mHighlightMeshActor.SetVisible( true );
- }
}
}
}
switch ( propertyIndex )
{
- case Toolkit::TextInput::HIGHLIGHT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::HIGHLIGHT_COLOR:
{
textInputImpl.SetMaterialDiffuseColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_PRESSED_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupPressedColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_BORDER_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupBorderColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupIconColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_PRESSED_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupIconPressedColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupTextColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_PRESSED_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupTextPressedColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsCut, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::COPY_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsCopy, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::PASTE_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsPaste, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsSelect, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_ALL_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsSelectAll, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CLIPBOARD_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsClipboard, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY:
+ case Toolkit::TextInput::Property::POP_UP_OFFSET_FROM_TEXT:
{
textInputImpl.SetOffsetFromText( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CURSOR_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CURSOR_COLOR:
{
textInputImpl.mCursor.SetColor( value.Get< Vector4 >() );
+ break;
}
}
}
switch ( propertyIndex )
{
- case Toolkit::TextInput::HIGHLIGHT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::HIGHLIGHT_COLOR:
{
value = textInputImpl.GetMaterialDiffuseColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_PRESSED_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupPressedColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY :
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_BORDER_COLOR :
{
value = textInputImpl.mPopupPanel.GetCutPastePopupBorderColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupIconColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_PRESSED_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupIconPressedColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupTextColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_PRESSED_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupTextPressedColor();
break;
}
- case Toolkit::TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsCut );
break;
}
- case Toolkit::TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::COPY_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsCopy );
break;
}
- case Toolkit::TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::PASTE_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsPaste );
break;
}
- case Toolkit::TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsSelect );
break;
}
- case Toolkit::TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_ALL_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsSelectAll );
break;
}
- case Toolkit::TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CLIPBOARD_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsClipboard );
break;
}
- case Toolkit::TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY:
+ case Toolkit::TextInput::Property::POP_UP_OFFSET_FROM_TEXT:
{
value = textInputImpl.GetOffsetFromText();
break;
}
- case Toolkit::TextInput::CURSOR_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CURSOR_COLOR:
{
value = textInputImpl.mCursor.GetCurrentColor();
}
*/
// EXTERNAL INCLUDES
-#include <dali/public-api/actors/mesh-actor.h>
#include <dali/public-api/adaptor-framework/clipboard.h>
#include <dali/public-api/adaptor-framework/clipboard-event-notifier.h>
#include <dali/public-api/adaptor-framework/imf-manager.h>
#include <dali/public-api/adaptor-framework/timer.h>
#include <dali/public-api/common/dali-vector.h>
-#include <dali/public-api/geometry/mesh.h>
// INTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/control-impl.h>
{
public:
- // Properties
- enum
- {
- TEXTINPUT_PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1,
- TEXTINPUT_PROPERTY_END_INDEX = TEXTINPUT_PROPERTY_START_INDEX + 512 ///< Reserving property indices
- };
-
/**
* Create a new TextInput
* @return instrusive ptr to a TextInput
/**
* @copydoc Control::OnRelayout()
*/
- virtual void OnRelayout( const Vector2& size, ActorSizeContainer& container );
+ virtual void OnRelayout( const Vector2& size, RelayoutContainer& container );
/**
* Retrieves the text-input's natural size by calling TextView::GetNaturalSize().
Actor mHandleOneGrabArea; ///< invisible actor that receives pans events for the selection handle.
Actor mHandleTwoGrabArea; ///< invisible actor that receives pans events for the selection handle.
- Mesh mHighlightMesh; ///< Mesh Data for highlight
- MeshActor mHighlightMeshActor; ///< Mesh Actor to display highlight
- MeshData mMeshData; ///< Container to hold meshData for highlight
- Material mCustomMaterial; ///< Custom material used for highlight
HighlightInfo mNewHighlightInfo; ///< Geometry info to create highlight.
Text mPreEditString; ///< Holds current input string prior to it being committed.
relayoutData.mTextLayoutInfo.mMaxItalicsOffset = std::max( relayoutData.mTextLayoutInfo.mMaxItalicsOffset, italicsOffset );
// Sets the sort modifier value.
- currentTextActorInfo.textActor.SetSortModifier( visualParameters.mSortModifier );
+ // currentTextActorInfo.textActor.SetSortModifier( visualParameters.mSortModifier );
// Enables or disables the blending.
- currentTextActorInfo.textActor.SetBlendMode( !visualParameters.mSnapshotModeEnabled ? BlendingMode::ON : BlendingMode::OFF );
+ // currentTextActorInfo.textActor.SetBlendMode( !visualParameters.mSnapshotModeEnabled ? BlendingMode::ON : BlendingMode::OFF );
}
void CalculateLineLayout( float parentWidth,
imageActor.SetSize( characterLayout.mSize );
// Sets the sort modifier value.
- imageActor.SetSortModifier( visualParameters.mSortModifier );
+ // imageActor.SetSortModifier( visualParameters.mSortModifier );
characterLayout.mGlyphActor = imageActor;
}
{
TextActorParameters parameters( style, TextActorParameters::FONT_DETECTION_OFF );
textActor = TextActor::New( Text(), parameters );
+ textActor.SetRelayoutEnabled( false );
}
else
{
glyphActor.SetAnchorPoint( AnchorPoint::BOTTOM_LEFT );
// Sets the sort modifier value.
- glyphActor.SetSortModifier( visualParameters.mSortModifier );
+ // glyphActor.SetSortModifier( visualParameters.mSortModifier );
// Enables or disables the blending.
- glyphActor.SetBlendMode( !visualParameters.mSnapshotModeEnabled ? BlendingMode::ON : BlendingMode::OFF );
+ // glyphActor.SetBlendMode( !visualParameters.mSnapshotModeEnabled ? BlendingMode::ON : BlendingMode::OFF );
}
}
textActor = TextActor::New( text, parameters );
}
+ // Exclude from size negotiation
+ textActor.SetRelayoutEnabled( false );
+
return textActor;
}
// EXTERNAL INCLUDES
#include <dali/public-api/common/stage.h>
#include <dali/public-api/object/type-registry.h>
+ #include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/render-tasks/render-task-list.h>
// INTERNAL INCLUDES
namespace Toolkit
{
- const Property::Index TextView::PROPERTY_MARKUP_ENABLED( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX );
- const Property::Index TextView::PROPERTY_TEXT( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 1 );
- const Property::Index TextView::PROPERTY_MULTILINE_POLICY( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 2 );
- const Property::Index TextView::PROPERTY_WIDTH_EXCEED_POLICY( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 3 );
- const Property::Index TextView::PROPERTY_HEIGHT_EXCEED_POLICY( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 4 );
- const Property::Index TextView::PROPERTY_LINE_JUSTIFICATION( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 5 );
- const Property::Index TextView::PROPERTY_FADE_BOUNDARY( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 6 );
- const Property::Index TextView::PROPERTY_LINE_HEIGHT_OFFSET( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 7 );
- const Property::Index TextView::PROPERTY_HORIZONTAL_ALIGNMENT( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 8 );
- const Property::Index TextView::PROPERTY_VERTICAL_ALIGNMENT( Internal::TextView::TEXTVIEW_PROPERTY_START_INDEX + 9 );
-
namespace Internal
{
namespace
{
- // Signals
-
- const char* const SIGNAL_TEXT_SCROLLED = "scrolled";
-
const char* MULTILINE_POLICY_NAME[] = {"SplitByNewLineChar", "SplitByWord", "SplitByChar"};
const char* EXCEED_POLICY_NAME[] = {"Original", "Truncate", "Fade", "Split","ShrinkToFit","EllipsizeEnd"};
const char* LINE_JUSTIFICATION_NAME[] = {"Left","Center","Right","Justified"};
// Currently on desktop machines 2k x 2k is the maximum frame buffer size, on target is 4k x 4k.
const float MAX_OFFSCREEN_RENDERING_SIZE = 2048.f;
- //Type Registration
+ // Type Registration
BaseHandle Create()
{
return Toolkit::TextView::New();
}
- TypeRegistration typeRegistration( typeid( Toolkit::TextView ), typeid( Toolkit::Control ), Create );
+ // Setup properties, signals and actions using the type-registry.
+ DALI_TYPE_REGISTRATION_BEGIN( Toolkit::TextView, Toolkit::Control, Create );
+
+ DALI_PROPERTY_REGISTRATION( TextView, "markup-enabled", BOOLEAN, MARKUP_ENABLED )
+ DALI_PROPERTY_REGISTRATION( TextView, "text", STRING, TEXT )
+ DALI_PROPERTY_REGISTRATION( TextView, "multiline-policy", STRING, MULTILINE_POLICY )
+ DALI_PROPERTY_REGISTRATION( TextView, "width-exceed-policy", STRING, WIDTH_EXCEED_POLICY )
+ DALI_PROPERTY_REGISTRATION( TextView, "height-exceed-policy", STRING, HEIGHT_EXCEED_POLICY )
+ DALI_PROPERTY_REGISTRATION( TextView, "line-justification", STRING, LINE_JUSTIFICATION )
+ DALI_PROPERTY_REGISTRATION( TextView, "fade-boundary", VECTOR4, FADE_BOUNDARY )
+ DALI_PROPERTY_REGISTRATION( TextView, "line-height-offset", FLOAT, LINE_HEIGHT_OFFSET )
+ DALI_PROPERTY_REGISTRATION( TextView, "horizontal-alignment", STRING, HORIZONTAL_ALIGNMENT )
+ DALI_PROPERTY_REGISTRATION( TextView, "vertical-alignment", STRING, VERTICAL_ALIGNMENT )
- SignalConnectorType signalConnector1( typeRegistration, SIGNAL_TEXT_SCROLLED , &TextView::DoConnectSignal );
+ DALI_SIGNAL_REGISTRATION( TextView, "scrolled", SIGNAL_TEXT_SCROLLED )
- PropertyRegistration property1( typeRegistration, "markup-enabled", Toolkit::TextView::PROPERTY_MARKUP_ENABLED, Property::BOOLEAN, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property2( typeRegistration, "text", Toolkit::TextView::PROPERTY_TEXT, Property::STRING, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property3( typeRegistration, "multiline-policy", Toolkit::TextView::PROPERTY_MULTILINE_POLICY, Property::STRING, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property4( typeRegistration, "width-exceed-policy", Toolkit::TextView::PROPERTY_WIDTH_EXCEED_POLICY, Property::STRING, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property5( typeRegistration, "height-exceed-policy", Toolkit::TextView::PROPERTY_HEIGHT_EXCEED_POLICY, Property::STRING, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property6( typeRegistration, "line-justification", Toolkit::TextView::PROPERTY_LINE_JUSTIFICATION, Property::STRING, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property7( typeRegistration, "fade-boundary", Toolkit::TextView::PROPERTY_FADE_BOUNDARY, Property::VECTOR4, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property8( typeRegistration, "line-height-offset", Toolkit::TextView::PROPERTY_LINE_HEIGHT_OFFSET, Property::FLOAT, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property9( typeRegistration, "horizontal-alignment", Toolkit::TextView::PROPERTY_HORIZONTAL_ALIGNMENT, Property::STRING, &TextView::SetProperty, &TextView::GetProperty );
- PropertyRegistration property10( typeRegistration, "vertical-alignment", Toolkit::TextView::PROPERTY_VERTICAL_ALIGNMENT, Property::STRING, &TextView::SetProperty, &TextView::GetProperty );
+ DALI_TYPE_REGISTRATION_END()
/**
* Whether the text-view-processor operation sets, inserts, replaces, removes text.
it != endIt;
++it )
{
- ( *it ).SetSortModifier( depthOffset );
+ // ( *it ).SetSortModifier( depthOffset );
}
if( mOffscreenImageActor )
{
- mOffscreenImageActor.SetSortModifier( depthOffset );
+ // mOffscreenImageActor.SetSortModifier( depthOffset );
}
}
mOffscreenRootActor.SetColorMode( USE_OWN_COLOR );
mOffscreenRootActor.SetPositionInheritanceMode( DONT_INHERIT_POSITION );
- mOffscreenRootActor.SetInheritRotation( false );
+ mOffscreenRootActor.SetInheritOrientation( false );
mOffscreenRootActor.SetInheritScale( false );
mOffscreenRootActor.SetDepthTestDisabled( true );
void TextView::OnInitialize()
{
+ // The actor handle needs to be inialised for this to work
+ Self().SetResizePolicy( USE_NATURAL_SIZE, ALL_DIMENSIONS );
}
}
}
- void TextView::OnRelayout( const Vector2& size, ActorSizeContainer& container )
+ void TextView::OnRelayout( const Vector2& size, RelayoutContainer& container )
{
if( ( size.width < Math::MACHINE_EPSILON_1000 ) || ( size.height < Math::MACHINE_EPSILON_1000 ) )
{
mOffscreenCameraActor = CameraActor::New();
mOffscreenCameraActor.SetParentOrigin( ParentOrigin::CENTER );
mOffscreenCameraActor.SetAnchorPoint( AnchorPoint::CENTER );
- mOffscreenCameraActor.SetRotation(Degree(180.f), Vector3::YAXIS);
+ mOffscreenCameraActor.SetOrientation(Degree(180.f), Vector3::YAXIS);
mOffscreenCameraActor.SetType( Dali::Camera::FREE_LOOK ); // Inherits position from the offscreen root actor.
{
std::string value( propertyValue.Get<std::string>() );
- if( propertyIndex == Toolkit::TextView::PROPERTY_HORIZONTAL_ALIGNMENT )
+ if( propertyIndex == Toolkit::TextView::Property::HORIZONTAL_ALIGNMENT )
{
if(value == "HorizontalLeft")
{
DALI_ASSERT_ALWAYS( !"TextView::OnAlignmentPropertySet(). Invalid Property value." );
}
}
- else if( propertyIndex == Toolkit::TextView::PROPERTY_VERTICAL_ALIGNMENT )
+ else if( propertyIndex == Toolkit::TextView::Property::VERTICAL_ALIGNMENT )
{
if( value == "VerticalTop" )
{
TextView& textViewImpl( GetImpl( textView ) );
switch( index )
{
- case Toolkit::TextView::PROPERTY_MARKUP_ENABLED:
+ case Toolkit::TextView::Property::MARKUP_ENABLED:
{
textViewImpl.OnMarkupEnabledPeopertySet( value );
break;
}
- case Toolkit::TextView::PROPERTY_TEXT:
+ case Toolkit::TextView::Property::TEXT:
{
textViewImpl.SetText( value.Get<std::string>() );
break;
}
- case Toolkit::TextView::PROPERTY_MULTILINE_POLICY:
+ case Toolkit::TextView::Property::MULTILINE_POLICY:
{
textViewImpl.OnMultilinePolicyPropertySet( value );
break;
}
- case Toolkit::TextView::PROPERTY_WIDTH_EXCEED_POLICY:
+ case Toolkit::TextView::Property::WIDTH_EXCEED_POLICY:
{
textViewImpl.OnWidthExceedPolicyPropertySet( value );
break;
}
- case Toolkit::TextView::PROPERTY_HEIGHT_EXCEED_POLICY:
+ case Toolkit::TextView::Property::HEIGHT_EXCEED_POLICY:
{
textViewImpl.OnHeightExceedPolicyPropertySet( value );
break;
}
- case Toolkit::TextView::PROPERTY_LINE_JUSTIFICATION:
+ case Toolkit::TextView::Property::LINE_JUSTIFICATION:
{
textViewImpl.OnLineJustificationPropertySet( value );
break;
}
- case Toolkit::TextView::PROPERTY_FADE_BOUNDARY:
+ case Toolkit::TextView::Property::FADE_BOUNDARY:
{
textViewImpl.OnFadeBoundaryPropertySet( value );
break;
}
- case Toolkit::TextView::PROPERTY_LINE_HEIGHT_OFFSET:
+ case Toolkit::TextView::Property::LINE_HEIGHT_OFFSET:
{
Dali::PointSize pointSize( value.Get<float>() );
textViewImpl.SetLineHeightOffset(pointSize);
break;
}
- case Toolkit::TextView::PROPERTY_HORIZONTAL_ALIGNMENT:
- case Toolkit::TextView::PROPERTY_VERTICAL_ALIGNMENT:
+ case Toolkit::TextView::Property::HORIZONTAL_ALIGNMENT:
+ case Toolkit::TextView::Property::VERTICAL_ALIGNMENT:
{
textViewImpl.OnAlignmentPropertySet( index, value );
break;
TextView& textViewImpl( GetImpl( textView ) );
switch( index )
{
- case Toolkit::TextView::PROPERTY_MARKUP_ENABLED:
+ case Toolkit::TextView::Property::MARKUP_ENABLED:
{
value = textViewImpl.IsMarkupProcessingEnabled();
break;
}
- case Toolkit::TextView::PROPERTY_TEXT:
+ case Toolkit::TextView::Property::TEXT:
{
value = textViewImpl.GetText();
break;
}
- case Toolkit::TextView::PROPERTY_MULTILINE_POLICY:
+ case Toolkit::TextView::Property::MULTILINE_POLICY:
{
value = MULTILINE_POLICY_NAME[ textViewImpl.GetMultilinePolicy() ];
break;
}
- case Toolkit::TextView::PROPERTY_WIDTH_EXCEED_POLICY:
+ case Toolkit::TextView::Property::WIDTH_EXCEED_POLICY:
{
value = EXCEED_POLICY_NAME[ textViewImpl.GetWidthExceedPolicy() ];
break;
}
- case Toolkit::TextView::PROPERTY_HEIGHT_EXCEED_POLICY:
+ case Toolkit::TextView::Property::HEIGHT_EXCEED_POLICY:
{
value = EXCEED_POLICY_NAME[ textViewImpl.GetHeightExceedPolicy() ];
break;
}
- case Toolkit::TextView::PROPERTY_LINE_JUSTIFICATION:
+ case Toolkit::TextView::Property::LINE_JUSTIFICATION:
{
value = LINE_JUSTIFICATION_NAME[ textViewImpl.GetLineJustification() ];
break;
}
- case Toolkit::TextView::PROPERTY_FADE_BOUNDARY:
+ case Toolkit::TextView::Property::FADE_BOUNDARY:
{
Toolkit::TextView::FadeBoundary boundary = textViewImpl.GetFadeBoundary();
value = Vector4( static_cast<float>( boundary.mLeft.value ),
static_cast<float>( boundary.mBottom.value ) );
break;
}
- case Toolkit::TextView::PROPERTY_LINE_HEIGHT_OFFSET:
+ case Toolkit::TextView::Property::LINE_HEIGHT_OFFSET:
{
value = textViewImpl.GetLineHeightOffset().value;
break;
}
- case Toolkit::TextView::PROPERTY_HORIZONTAL_ALIGNMENT:
+ case Toolkit::TextView::Property::HORIZONTAL_ALIGNMENT:
{
value = textViewImpl.OnHorizontalAlignmentPropertyGet();
break;
}
- case Toolkit::TextView::PROPERTY_VERTICAL_ALIGNMENT:
+ case Toolkit::TextView::Property::VERTICAL_ALIGNMENT:
{
value = textViewImpl.OnVerticalAlignmentPropertyGet();
break;
#include "tool-bar-impl.h"
// EXTERNAL INCLUDES
-#include <dali/public-api/actors/renderable-actor.h>
+#include <dali/public-api/actors/image-actor.h>
#include <dali/public-api/animation/constraints.h>
#include <dali/public-api/object/type-registry.h>
+ #include <dali/public-api/object/type-registry-helper.h>
// INTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/alignment/alignment.h>
#include <dali-toolkit/public-api/controls/table-view/table-view.h>
- // EXTERNAL INCLUDES
-
namespace Dali
{
namespace
{
+
BaseHandle Create()
{
return Toolkit::ToolBar::New();
}
- TypeRegistration mType( typeid(Toolkit::ToolBar), typeid(Toolkit::Control), Create );
+ DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ToolBar, Toolkit::Control, Create )
+ DALI_TYPE_REGISTRATION_END()
const float DEFAULT_RELATIVE_SIZE( 0.1f );
const Toolkit::Alignment::Type DEFAULT_ALIGNMENT( Toolkit::Alignment::HorizontalLeft );
// ToolBar image
background.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
background.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
- background.SetSize( mToolBarSize );
+ background.SetPreferredSize( Vector2( mToolBarSize.width, mToolBarSize.height ) );
- RenderableActor renderableActor = RenderableActor::DownCast( background );
- if ( renderableActor )
+ ImageActor imageActor = ImageActor::DownCast( background );
+ if ( imageActor )
{
- renderableActor.SetSortModifier( 1.f );
+ imageActor.SetSortModifier( 1.f );
}
Self().Add( background );
// Create an alignment container where to place the control.
Toolkit::Alignment alignmentContainer = Toolkit::Alignment::New( alignment );
- alignmentContainer.SetScaling( Toolkit::Alignment::ScaleToFill );
+ alignmentContainer.SetSizeScalePolicy( FIT_WITH_ASPECT_RATIO );
alignmentContainer.SetPadding( padding );
+ alignmentContainer.SetResizePolicy( FILL_TO_PARENT, ALL_DIMENSIONS );
alignmentContainer.Add( control );
// Insert the control in the table view.
// Layout
mLayout = Toolkit::TableView::New( 1, 1 );
+ mLayout.SetName( "TOOLBAR_LAYOUT" );
+ mLayout.SetResizePolicy( FILL_TO_PARENT, ALL_DIMENSIONS );
mLayout.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION );
Self().Add( mLayout );
void ToolBar::OnControlSizeSet( const Vector3& targetSize )
{
mToolBarSize = targetSize;
- mBackground.SetSize( mToolBarSize );
+ mBackground.SetPreferredSize( Vector2( mToolBarSize.width, mToolBarSize.height ) );
}
} // namespace Internal
$(toolkit_src_dir)/builder/replacement.cpp \
$(toolkit_src_dir)/controls/alignment/alignment-impl.cpp \
$(toolkit_src_dir)/controls/bloom-view/bloom-view-impl.cpp \
- $(toolkit_src_dir)/controls/bubble-effect/bubble-emitter-impl.cpp \
$(toolkit_src_dir)/controls/buttons/button-impl.cpp \
$(toolkit_src_dir)/controls/buttons/check-box-button-impl.cpp \
$(toolkit_src_dir)/controls/buttons/push-button-impl.cpp \
$(toolkit_src_dir)/controls/page-turn-view/page-turn-portrait-view-impl.cpp \
$(toolkit_src_dir)/controls/page-turn-view/page-turn-landscape-view-impl.cpp \
$(toolkit_src_dir)/controls/page-turn-view/page-turn-view-impl.cpp \
- $(toolkit_src_dir)/controls/relayout-controller-impl.cpp \
- $(toolkit_src_dir)/controls/relayout-controller.cpp \
- $(toolkit_src_dir)/controls/relayout-helper.cpp \
$(toolkit_src_dir)/controls/scroll-bar/scroll-bar-impl.cpp \
$(toolkit_src_dir)/controls/scroll-component/scroll-bar-internal-impl.cpp \
$(toolkit_src_dir)/controls/scroll-component/scroll-bar-internal.cpp \
- $(toolkit_src_dir)/controls/scrollable/bouncing-effect-actor.cpp \
$(toolkit_src_dir)/controls/scrollable/item-view/item-view-impl.cpp \
$(toolkit_src_dir)/controls/scrollable/scrollable-impl.cpp \
$(toolkit_src_dir)/controls/scrollable/scroll-connector-impl.cpp \
// EXTERNAL INCLUDES
#include <stack>
#include <dali/public-api/actors/image-actor.h>
-#include <dali/public-api/actors/mesh-actor.h>
#include <dali/public-api/animation/active-constraint.h>
#include <dali/public-api/animation/constraint.h>
#include <dali/public-api/animation/constraints.h>
-#include <dali/public-api/geometry/mesh.h>
#include <dali/public-api/object/type-registry.h>
+ #include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/scripting/scripting.h>
+ #include <dali/public-api/size-negotiation/relayout-container.h>
#include <dali/integration-api/debug.h>
// INTERNAL INCLUDES
- #include <dali-toolkit/internal/controls/relayout-controller.h>
- #include <dali-toolkit/internal/controls/relayout-helper.h>
#include <dali-toolkit/public-api/focus-manager/keyinput-focus-manager.h>
#include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
#include <dali-toolkit/public-api/controls/control.h>
namespace Toolkit
{
- const Property::Index Control::PROPERTY_BACKGROUND_COLOR = Internal::Control::CONTROL_PROPERTY_START_INDEX;
- const Property::Index Control::PROPERTY_BACKGROUND = Internal::Control::CONTROL_PROPERTY_START_INDEX + 1;
- const Property::Index Control::PROPERTY_WIDTH_POLICY = Internal::Control::CONTROL_PROPERTY_START_INDEX + 2;
- const Property::Index Control::PROPERTY_HEIGHT_POLICY = Internal::Control::CONTROL_PROPERTY_START_INDEX + 3;
- const Property::Index Control::PROPERTY_MINIMUM_SIZE = Internal::Control::CONTROL_PROPERTY_START_INDEX + 4;
- const Property::Index Control::PROPERTY_MAXIMUM_SIZE = Internal::Control::CONTROL_PROPERTY_START_INDEX + 5;
- const Property::Index Control::PROPERTY_KEY_INPUT_FOCUS = Internal::Control::CONTROL_PROPERTY_START_INDEX + 6;
-
namespace
{
- // Signals
-
- const char* const SIGNAL_KEY_EVENT = "key-event";
- const char* const SIGNAL_TAPPED = "tapped";
- const char* const SIGNAL_PANNED = "panned";
- const char* const SIGNAL_PINCHED = "pinched";
- const char* const SIGNAL_LONG_PRESSED = "long-pressed";
-
- // Actions
-
- const char* const ACTION_CONTROL_ACTIVATED = "control-activated";
-
- const Scripting::StringEnum< Control::SizePolicy > SIZE_POLICY_STRING_TABLE[] =
- {
- { "FIXED", Control::Fixed },
- { "MINIMUM", Control::Minimum },
- { "MAXIMUM", Control::Maximum },
- { "RANGE", Control::Range },
- { "FLEXIBLE", Control::Flexible },
- };
- const unsigned int SIZE_POLICY_STRING_TABLE_COUNT = sizeof( SIZE_POLICY_STRING_TABLE ) / sizeof( SIZE_POLICY_STRING_TABLE[0] );
-
#if defined(DEBUG_ENABLED)
Integration::Log::Filter* gLogFilter = Integration::Log::Filter::New(Debug::NoLogging, false, "LOG_CONTROL");
#endif
return Internal::Control::New();
}
- TypeRegistration CONTROL_TYPE( typeid(Control), typeid(CustomActor), Create );
+ // Setup signals and actions using the type-registry.
+ DALI_TYPE_REGISTRATION_BEGIN( Control, CustomActor, Create );
- // Property Registration after Internal::Control::Impl definition below
+ // Note: Properties are registered separately below,
- TypeAction ACTION_TYPE_1( CONTROL_TYPE, ACTION_CONTROL_ACTIVATED, &Internal::Control::DoAction );
+ 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 )
- SignalConnectorType SIGNAL_CONNECTOR_1( CONTROL_TYPE, SIGNAL_KEY_EVENT, &Internal::Control::DoConnectSignal );
- SignalConnectorType SIGNAL_CONNECTOR_2( CONTROL_TYPE, SIGNAL_TAPPED, &Internal::Control::DoConnectSignal );
- SignalConnectorType SIGNAL_CONNECTOR_3( CONTROL_TYPE, SIGNAL_PANNED, &Internal::Control::DoConnectSignal );
- SignalConnectorType SIGNAL_CONNECTOR_4( CONTROL_TYPE, SIGNAL_PINCHED, &Internal::Control::DoConnectSignal );
- SignalConnectorType SIGNAL_CONNECTOR_5( CONTROL_TYPE, SIGNAL_LONG_PRESSED, &Internal::Control::DoConnectSignal );
+ DALI_ACTION_REGISTRATION( Control, "control-activated", ACTION_CONTROL_ACTIVATED )
+
+ DALI_TYPE_REGISTRATION_END()
/**
* Structure which holds information about the background of a control
}
};
--/**
- * Helper function to calculate a dimension given the policy of that dimension; the minimum &
- * maximum values that dimension can be; and the allocated value for that dimension.
- *
- * @param[in] policy The size policy for that dimension.
- * @param[in] minimum The minimum value that dimension can be.
- * @param[in] maximum The maximum value that dimension can be.
- * @param[in] allocated The value allocated for that dimension.
- *
- * @return The value that the dimension should be.
- *
- * @note This does not handle Control::Fixed policy.
- * Creates a white coloured Mesh.
-- */
- float Calculate( Control::SizePolicy policy, float minimum, float maximum, float allocated )
-Mesh CreateMesh()
--{
- float size( allocated );
-
- switch( policy )
- {
- case Control::Fixed:
- {
- // Use allocated value
- break;
- }
-
- case Control::Minimum:
- {
- // Size is always at least the minimum.
- size = std::max( allocated, minimum );
- break;
- }
- Vector3 white( Color::WHITE );
--
- case Control::Maximum:
- {
- // Size can grow but up to a maximum value.
- size = std::min( allocated, maximum );
- break;
- }
- MeshData meshData;
--
- case Control::Range:
- {
- // Size is at least the minimum and can grow up to the maximum
- size = std::max( size, minimum );
- size = std::min( size, maximum );
- break;
- }
- // Create vertices with a white color (actual color is set by actor color)
- MeshData::VertexContainer vertices(4);
- vertices[ 0 ] = MeshData::Vertex( Vector3( -0.5f, -0.5f, 0.0f ), Vector2::ZERO, white );
- vertices[ 1 ] = MeshData::Vertex( Vector3( 0.5f, -0.5f, 0.0f ), Vector2::ZERO, white );
- vertices[ 2 ] = MeshData::Vertex( Vector3( -0.5f, 0.5f, 0.0f ), Vector2::ZERO, white );
- vertices[ 3 ] = MeshData::Vertex( Vector3( 0.5f, 0.5f, 0.0f ), Vector2::ZERO, white );
--
- case Control::Flexible:
- {
- // Size grows or shrinks with no limits.
- size = allocated;
- break;
- }
- // Specify all the faces
- MeshData::FaceIndices faces;
- faces.reserve( 6 ); // 2 triangles in Quad
- faces.push_back( 0 ); faces.push_back( 3 ); faces.push_back( 1 );
- faces.push_back( 0 ); faces.push_back( 2 ); faces.push_back( 3 );
--
- default:
- {
- DALI_ASSERT_DEBUG( false && "This function was not intended to be used by any other policy." );
- break;
- }
- }
- // Create the mesh data from the vertices and faces
- meshData.SetMaterial( Material::New( "ControlMaterial" ) );
- meshData.SetVertices( vertices );
- meshData.SetFaceIndices( faces );
- meshData.SetHasColor( true );
--
- return size;
- return Mesh::New( meshData );
--}
-
/**
* Sets all the required properties for the background actor.
actor.SetPositionInheritanceMode( USE_PARENT_POSITION_PLUS_LOCAL_POSITION );
actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR );
actor.SetZ( BACKGROUND_ACTOR_Z_POSITION );
-
- Constraint constraint = Constraint::New<Vector3>( constrainingIndex,
- ParentSource( Actor::Property::Size ),
- EqualToConstraint() );
- actor.ApplyConstraint( constraint );
+ actor.SetRelayoutEnabled( true );
+ actor.SetResizePolicy( FILL_TO_PARENT, ALL_DIMENSIONS );
}
} // unnamed namespace
mLongPressGestureDetector(),
mCurrentSize(),
mNaturalSize(),
- mWidthPolicy( Toolkit::Control::Fixed ),
- mHeightPolicy( Toolkit::Control::Fixed ),
mFlags( Control::CONTROL_BEHAVIOUR_NONE ),
- mInsideRelayout( false ),
mIsKeyboardNavigationSupported( false ),
mIsKeyboardFocusGroup( false ),
mInitialized( false )
switch ( index )
{
- case Toolkit::Control::PROPERTY_BACKGROUND_COLOR:
+ case Toolkit::Control::Property::BACKGROUND_COLOR:
{
controlImpl.SetBackgroundColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::Control::PROPERTY_BACKGROUND:
+ case Toolkit::Control::Property::BACKGROUND_IMAGE:
{
if ( value.HasKey( "image" ) )
{
if ( image )
{
- controlImpl.SetBackground( image );
+ controlImpl.SetBackgroundImage( image );
}
}
else if ( value.Get< Property::Map >().Empty() )
break;
}
- case Toolkit::Control::PROPERTY_WIDTH_POLICY:
- {
- controlImpl.mImpl->mWidthPolicy = Scripting::GetEnumeration< Toolkit::Control::SizePolicy >( value.Get< std::string >().c_str(), SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT );
- break;
- }
-
- case Toolkit::Control::PROPERTY_HEIGHT_POLICY:
- {
- controlImpl.mImpl->mHeightPolicy = Scripting::GetEnumeration< Toolkit::Control::SizePolicy >( value.Get< std::string >().c_str(), SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT );
- break;
- }
-
- case Toolkit::Control::PROPERTY_MINIMUM_SIZE:
- {
- controlImpl.SetMinimumSize( value.Get< Vector3 >() );
- break;
- }
-
- case Toolkit::Control::PROPERTY_MAXIMUM_SIZE:
- {
- controlImpl.SetMaximumSize( value.Get< Vector3 >() );
- break;
- }
-
- case Toolkit::Control::PROPERTY_KEY_INPUT_FOCUS:
+ case Toolkit::Control::Property::KEY_INPUT_FOCUS:
{
if ( value.Get< bool >() )
{
switch ( index )
{
- case Toolkit::Control::PROPERTY_BACKGROUND_COLOR:
+ case Toolkit::Control::Property::BACKGROUND_COLOR:
{
value = controlImpl.GetBackgroundColor();
break;
}
- case Toolkit::Control::PROPERTY_BACKGROUND:
+ case Toolkit::Control::Property::BACKGROUND_IMAGE:
{
Property::Map map;
break;
}
- case Toolkit::Control::PROPERTY_WIDTH_POLICY:
- {
- value = std::string( Scripting::GetEnumerationName< Toolkit::Control::SizePolicy >( controlImpl.mImpl->mWidthPolicy, SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ) );
- break;
- }
-
- case Toolkit::Control::PROPERTY_HEIGHT_POLICY:
- {
- value = std::string( Scripting::GetEnumerationName< Toolkit::Control::SizePolicy >( controlImpl.mImpl->mHeightPolicy, SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ) );
- break;
- }
-
- case Toolkit::Control::PROPERTY_MINIMUM_SIZE:
- {
- value = controlImpl.mImpl->GetMinimumSize();
- break;
- }
-
- case Toolkit::Control::PROPERTY_MAXIMUM_SIZE:
- {
- value = controlImpl.mImpl->GetMaximumSize();
- break;
- }
-
- case Toolkit::Control::PROPERTY_KEY_INPUT_FOCUS:
+ case Toolkit::Control::Property::KEY_INPUT_FOCUS:
{
value = controlImpl.HasKeyInputFocus();
break;
return value;
}
- /**
- * Helper to get minimum size
- * @return minimum size
- */
- inline const Vector3& GetMinimumSize()
- {
- if( mMinMaxSize.Count() > MIN_SIZE_INDEX )
- {
- return mMinMaxSize[ MIN_SIZE_INDEX ];
- }
- else
- {
- // its not been allocated so its ZERO
- return Vector3::ZERO;
- }
- }
- /**
- * Helper to Set minimum size
- * @param size to set
- */
- inline void SetMinimumSize( const Vector3& size )
- {
- if( mMinMaxSize.Count() > MIN_SIZE_INDEX )
- {
- mMinMaxSize[ MIN_SIZE_INDEX ] = size;
- }
- else
- {
- // its not been allocated so push the new value there
- mMinMaxSize.PushBack( size );
- }
- }
-
- /**
- * Helper to get maximum size
- * @return maximum size
- */
- inline const Vector3& GetMaximumSize()
- {
- if( mMinMaxSize.Count() > MAX_SIZE_INDEX )
- {
- return mMinMaxSize[ MAX_SIZE_INDEX ];
- }
- else
- {
- // its not been allocated so its MAX_SIZE
- return MAX_SIZE;
- }
- }
-
- /**
- * Helper to Set minimum size
- * @param size to set
- */
- inline void SetMaximumSize( const Vector3& size )
- {
- if( mMinMaxSize.Count() > MAX_SIZE_INDEX )
- {
- mMinMaxSize[ MAX_SIZE_INDEX ] = size;
- }
- else if( mMinMaxSize.Count() > MIN_SIZE_INDEX )
- {
- // max has not been allocated, but min has
- mMinMaxSize.PushBack( size );
- }
- else
- {
- // min and max both unallocated so allocate both
- mMinMaxSize.Resize( 2u ); // this will reserve and default construct two Vector3s
- mMinMaxSize[ MAX_SIZE_INDEX ] = size;
- }
- }
-
// Data
Control& mControlImpl;
// @todo change all these to Vector2 when we have a chance to sanitize the public API as well
Vector3 mCurrentSize; ///< Stores the current control's size, this is the negotiated size
Vector3 mNaturalSize; ///< Stores the size set through the Actor's API. This is size the actor wants to be. Useful when reset to the initial size is needed.
- Dali::Vector< Vector3 > mMinMaxSize; ///< Stores the minimum and maximum size if they are set
- Toolkit::Control::SizePolicy mWidthPolicy :3; ///< Stores the width policy. 3 bits covers 8 values
- Toolkit::Control::SizePolicy mHeightPolicy :3; ///< Stores the height policy. 3 bits covers 8 values
- ControlBehaviour mFlags :6; ///< Flags passed in from constructor. Need to increase this size when new enums are added
- bool mInsideRelayout:1; ///< Detect when were in Relayout
- bool mIsKeyboardNavigationSupported:1; ///< Stores whether keyboard navigation is supported by the control.
- bool mIsKeyboardFocusGroup:1; ///< Stores whether the control is a focus group.
- bool mInitialized:1;
+ ControlBehaviour mFlags :6; ///< Flags passed in from constructor. Need to increase this size when new enums are added
+ bool mIsKeyboardNavigationSupported :1; ///< Stores whether keyboard navigation is supported by the control.
+ bool mIsKeyboardFocusGroup :1; ///< Stores whether the control is a focus group.
+ bool mInitialized :1;
- // Properties - these need to be members of Internal::Control::Impl as they need to functions within this class.
+ // Properties - these need to be members of Internal::Control::Impl as they need to function within this class.
static PropertyRegistration PROPERTY_1;
static PropertyRegistration PROPERTY_2;
static PropertyRegistration PROPERTY_3;
- static PropertyRegistration PROPERTY_4;
- static PropertyRegistration PROPERTY_5;
- static PropertyRegistration PROPERTY_6;
- static PropertyRegistration PROPERTY_7;
};
- PropertyRegistration Control::Impl::PROPERTY_1( CONTROL_TYPE, "background-color", Toolkit::Control::PROPERTY_BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
- PropertyRegistration Control::Impl::PROPERTY_2( CONTROL_TYPE, "background", Toolkit::Control::PROPERTY_BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
- PropertyRegistration Control::Impl::PROPERTY_3( CONTROL_TYPE, "width-policy", Toolkit::Control::PROPERTY_WIDTH_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
- PropertyRegistration Control::Impl::PROPERTY_4( CONTROL_TYPE, "height-policy", Toolkit::Control::PROPERTY_HEIGHT_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
- PropertyRegistration Control::Impl::PROPERTY_5( CONTROL_TYPE, "minimum-size", Toolkit::Control::PROPERTY_MINIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
- PropertyRegistration Control::Impl::PROPERTY_6( CONTROL_TYPE, "maximum-size", Toolkit::Control::PROPERTY_MAXIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
- PropertyRegistration Control::Impl::PROPERTY_7( CONTROL_TYPE, "key-input-focus", Toolkit::Control::PROPERTY_KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+ // Properties registered without macro to use specific member variables.
+ PropertyRegistration Control::Impl::PROPERTY_1( typeRegistration, "background-color", Toolkit::Control::Property::BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+ PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "background-image", Toolkit::Control::Property::BACKGROUND_IMAGE, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+ PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "key-input-focus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
Toolkit::Control Control::New()
{
delete mImpl;
}
- void Control::SetSizePolicy( Toolkit::Control::SizePolicy widthPolicy, Toolkit::Control::SizePolicy heightPolicy )
- {
- bool relayoutRequest( false );
-
- if ( ( mImpl->mWidthPolicy != widthPolicy ) || ( mImpl->mHeightPolicy != heightPolicy ) )
- {
- relayoutRequest = true;
- }
-
- mImpl->mWidthPolicy = widthPolicy;
- mImpl->mHeightPolicy = heightPolicy;
-
- // Ensure RelayoutRequest is called AFTER new policies have been set.
- if ( relayoutRequest )
- {
- RelayoutRequest();
- }
- }
-
- void Control::GetSizePolicy( Toolkit::Control::SizePolicy& widthPolicy, Toolkit::Control::SizePolicy& heightPolicy ) const
- {
- widthPolicy = mImpl->mWidthPolicy;
- heightPolicy = mImpl->mHeightPolicy;
- }
-
- void Control::SetMinimumSize( const Vector3& size )
- {
- const Vector3& minSize = mImpl->GetMinimumSize();
- if ( fabsf( minSize.width - size.width ) > Math::MACHINE_EPSILON_1000 ||
- fabsf( minSize.height - size.height ) > Math::MACHINE_EPSILON_1000 )
- {
- mImpl->SetMinimumSize( size );
-
- // Only relayout if our control is using the minimum or range policy.
- if ( ( mImpl->mHeightPolicy == Toolkit::Control::Minimum ) || ( mImpl->mWidthPolicy == Toolkit::Control::Minimum ) ||
- ( mImpl->mHeightPolicy == Toolkit::Control::Range ) || ( mImpl->mWidthPolicy == Toolkit::Control::Range ) )
- {
- RelayoutRequest();
- }
- }
- }
-
- const Vector3& Control::GetMinimumSize() const
+ Vector3 Control::GetNaturalSize()
{
- return mImpl->GetMinimumSize();
+ // could be overridden in derived classes.
+ return mImpl->mNaturalSize;
}
- void Control::SetMaximumSize( const Vector3& size )
+ float Control::CalculateChildSize( const Dali::Actor& child, Dimension dimension )
{
- const Vector3& maxSize = mImpl->GetMaximumSize();
- if ( fabsf( maxSize.width - size.width ) > Math::MACHINE_EPSILON_1000 ||
- fabsf( maxSize.height - size.height ) > Math::MACHINE_EPSILON_1000 )
- {
- mImpl->SetMaximumSize( size );
-
- // Only relayout if our control is using the maximum or range policy.
- if ( ( mImpl->mHeightPolicy == Toolkit::Control::Maximum ) || ( mImpl->mWidthPolicy == Toolkit::Control::Maximum ) ||
- ( mImpl->mHeightPolicy == Toolkit::Control::Range ) || ( mImpl->mWidthPolicy == Toolkit::Control::Range ) )
- {
- RelayoutRequest();
- }
- }
+ // Could be overridden in derived classes.
+ return CalculateChildSizeBase( child, dimension );
}
- const Vector3& Control::GetMaximumSize() const
+ bool Control::RelayoutDependentOnChildren( Dimension dimension )
{
- return mImpl->GetMaximumSize();
- }
-
- Vector3 Control::GetNaturalSize()
- {
- // could be overridden in derived classes.
- return mImpl->mNaturalSize;
+ return RelayoutDependentOnChildrenBase( dimension );
}
float Control::GetHeightForWidth( float width )
// Just set the actor color
background.actor.SetColor( color );
}
- else
- {
- // Create Mesh Actor
- MeshActor meshActor = MeshActor::New( CreateMesh() );
-
- SetupBackgroundActor( meshActor, Actor::Property::SCALE, color );
-
- // Set the background actor before adding so that we do not inform deriving classes
- background.actor = meshActor;
- Self().Add( meshActor );
- }
background.color = color;
}
return Color::TRANSPARENT;
}
- void Control::SetBackground( Image image )
+ void Control::SetBackgroundImage( Image image )
{
Background& background( mImpl->GetBackground() );
}
ImageActor imageActor = ImageActor::New( image );
- SetupBackgroundActor( imageActor, Actor::Property::Size, background.color );
+ SetupBackgroundActor( imageActor, Actor::Property::SIZE, background.color );
// Set the background actor before adding so that we do not inform derived classes
background.actor = imageActor;
return false; // Accessibility value change action is not handled by default
}
- void Control::NegotiateSize( const Vector2& allocatedSize, ActorSizeContainer& container )
- {
- Vector2 size;
-
- if ( mImpl->mWidthPolicy == Toolkit::Control::Fixed )
- {
- if ( mImpl->mHeightPolicy == Toolkit::Control::Fixed )
- {
- // If a control says it has a fixed size, then use the size set by the application / control.
- Vector2 setSize( mImpl->mNaturalSize );
- if ( setSize != Vector2::ZERO )
- {
- size = setSize;
-
- // Policy is set to Fixed, so if the application / control has not set one of the dimensions,
- // then we should use the natural size of the control rather than the full allocation.
- if ( EqualsZero( size.width ) )
- {
- size.width = GetWidthForHeight( size.height );
- }
- else if ( EqualsZero( size.height ) )
- {
- size.height = GetHeightForWidth( size.width );
- }
- }
- else
- {
- // If that is not set then set the size to the control's natural size
- size = Vector2( GetNaturalSize() );
- }
- }
- else
- {
- // Width is fixed so if the application / control has set it, then use that.
- if ( !EqualsZero( mImpl->mNaturalSize.width ) )
- {
- size.width = mImpl->mNaturalSize.width;
- }
- else
- {
- // Otherwise, set the width to what has been allocated.
- size.width = allocatedSize.width;
- }
-
- // Height is flexible so ask control what the height should be for our width.
- size.height = GetHeightForWidth( size.width );
-
- // Ensure height is within our policy rules
- size.height = Calculate( mImpl->mHeightPolicy, GetMinimumSize().height, GetMaximumSize().height, size.height );
- }
- }
- else
- {
- if ( mImpl->mHeightPolicy == Toolkit::Control::Fixed )
- {
- // Height is fixed so if the application / control has set it, then use that.
- if ( !EqualsZero( mImpl->mNaturalSize.height ) )
- {
- size.height = mImpl->mNaturalSize.height;
- }
- else
- {
- // Otherwise, set the height to what has been allocated.
- size.height = allocatedSize.height;
- }
-
- // Width is flexible so ask control what the width should be for our height.
- size.width = GetWidthForHeight( size.height );
-
- // Ensure width is within our policy rules
- size.width = Calculate( mImpl->mWidthPolicy, mImpl->GetMinimumSize().width, mImpl->GetMaximumSize().width, size.width );
- }
- else
- {
- // Width and height are BOTH flexible.
- // Calculate the width and height using the policy rules.
- size.width = Calculate( mImpl->mWidthPolicy, mImpl->GetMinimumSize().width, mImpl->GetMaximumSize().width, allocatedSize.width );
- size.height = Calculate( mImpl->mHeightPolicy, mImpl->GetMinimumSize().height, mImpl->GetMaximumSize().height, allocatedSize.height );
- }
- }
-
- // If the width has not been set, then set to the allocated width.
- // Also if the width set is greater than the allocated, then set to allocated (no exceed support).
- if ( EqualsZero( size.width ) || ( size.width > allocatedSize.width ) )
- {
- size.width = allocatedSize.width;
- }
-
- // If the height has not been set, then set to the allocated height.
- // Also if the height set is greater than the allocated, then set to allocated (no exceed support).
- if ( EqualsZero( size.height ) || ( size.height > allocatedSize.height ) )
- {
- size.height = allocatedSize.height;
- }
-
- DALI_LOG_INFO( gLogFilter, Debug::Verbose,
- "%p: Natural: [%.2f, %.2f] Allocated: [%.2f, %.2f] Set: [%.2f, %.2f]\n",
- Self().GetObjectPtr(),
- GetNaturalSize().x, GetNaturalSize().y,
- allocatedSize.x, allocatedSize.y,
- size.x, size.y );
-
- // Avoids relayout again when OnSizeSet callback arrives as a function of us or deriving class calling SetSize()
- mImpl->mInsideRelayout = true;
- Self().SetSize( size );
- // Only relayout controls which requested to be relaid out.
- OnRelayout( size, container );
- mImpl->mInsideRelayout = false;
- }
-
void Control::SetAsKeyboardFocusGroup(bool isFocusGroup)
{
mImpl->mIsKeyboardFocusGroup = isFocusGroup;
void Control::Initialize()
{
-
// Calling deriving classes
OnInitialize();
+ // Test if the no size negotiation flag is not set
+ if( ( mImpl->mFlags & NO_SIZE_NEGOTIATION ) == 0 )
+ {
+ // Size negotiate disabled by default, so turn it on for this actor
+ Self().SetRelayoutEnabled( true );
+ }
+
if( mImpl->mFlags & REQUIRES_STYLE_CHANGE_SIGNALS )
{
Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
}
}
- void Control::RelayoutRequest()
- {
- // unfortunate double negative but thats to guarantee new controls get size negotiation
- // by default and have to "opt-out" if they dont want it
- if( !(mImpl->mFlags & NO_SIZE_NEGOTIATION) )
- {
- Internal::RelayoutController::Request();
- }
- }
-
- void Control::Relayout( Actor actor, const Vector2& size, ActorSizeContainer& container )
- {
- if ( actor )
- {
- Toolkit::Control control( Toolkit::Control::DownCast( actor ) );
- if( control )
- {
- control.GetImplementation().NegotiateSize( size, container );
- }
- else
- {
- container.push_back( ActorSizePair( actor, size ) );
- }
- }
- }
-
void Control::OnInitialize()
{
}
{
}
- void Control::OnRelayout( const Vector2& size, ActorSizeContainer& container )
+ void Control::OnCalculateRelayoutSize( Dimension dimension )
+ {
+ }
+
+ void Control::OnLayoutNegotiated( float size, Dimension dimension )
{
- unsigned int numChildren = Self().GetChildCount();
+ }
- for( unsigned int i=0; i<numChildren; ++i )
+ void Control::OnRelayout( const Vector2& size, RelayoutContainer& container )
+ {
+ for( unsigned int i = 0, numChildren = Self().GetChildCount(); i < numChildren; ++i )
{
- container.push_back( ActorSizePair( Self().GetChildAt(i), size ) );
+ container.Add( Self().GetChildAt( i ), size );
}
}
+ void Control::OnSetResizePolicy( ResizePolicy policy, Dimension dimension )
+ {
+ }
+
void Control::OnKeyInputFocusGained()
{
// Do Nothing
return false; // Do not consume
}
- Actor Control::GetChildByAlias(const std::string& actorAlias)
- {
- return Actor();
- }
-
void Control::OnStageConnection()
{
- RelayoutRequest();
-
// Notify derived classes.
OnControlStageConnection();
}
return;
}
- // Request for relayout as we may need to position the new child and old ones
- RelayoutRequest();
-
// Notify derived classes.
OnControlChildAdd( child );
}
return;
}
- // Request for relayout as we may need to re-position the old child
- RelayoutRequest();
-
// Notify derived classes.
OnControlChildRemove( child );
}
void Control::OnSizeSet(const Vector3& targetSize)
{
- if( ( !mImpl->mInsideRelayout ) && ( targetSize != mImpl->mNaturalSize ) )
+ if( targetSize != mImpl->mNaturalSize )
{
// Only updates size if set through Actor's API
mImpl->mNaturalSize = targetSize;
$(public_api_src_dir)/controls/control-impl.cpp \
$(public_api_src_dir)/controls/control.cpp \
$(public_api_src_dir)/controls/alignment/alignment.cpp \
- $(public_api_src_dir)/controls/bubble-effect/bubble-emitter.cpp \
$(public_api_src_dir)/controls/buttons/button.cpp \
$(public_api_src_dir)/controls/buttons/check-box-button.cpp \
$(public_api_src_dir)/controls/buttons/push-button.cpp \
$(public_api_src_dir)/controls/scrollable/item-view/item-factory.cpp \
$(public_api_src_dir)/controls/scrollable/item-view/item-layout.cpp \
$(public_api_src_dir)/controls/scrollable/item-view/item-view.cpp \
- $(public_api_src_dir)/controls/scrollable/item-view/navigation-layout.cpp \
- $(public_api_src_dir)/controls/scrollable/item-view/roll-layout.cpp \
$(public_api_src_dir)/controls/scrollable/item-view/spiral-layout.cpp \
$(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view-carousel-effect.cpp \
$(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view-constraints.cpp \
$(public_api_src_dir)/focus-manager/keyboard-focus-manager.cpp \
$(public_api_src_dir)/focus-manager/keyinput-focus-manager.cpp \
$(public_api_src_dir)/markup-processor/markup-processor.cpp \
- $(public_api_src_dir)/shader-effects/bubble-effect/bubble-effect.cpp \
- $(public_api_src_dir)/shader-effects/bubble-effect/color-adjuster.cpp \
$(public_api_src_dir)/shader-effects/alpha-discard-effect.cpp \
$(public_api_src_dir)/shader-effects/bendy-effect.cpp \
$(public_api_src_dir)/shader-effects/blind-effect.cpp \
- $(public_api_src_dir)/shader-effects/bouncing-effect.cpp \
$(public_api_src_dir)/shader-effects/carousel-effect.cpp \
$(public_api_src_dir)/shader-effects/displacement-effect.cpp \
$(public_api_src_dir)/shader-effects/dissolve-effect.cpp \
public_api_bloom_view_header_files = \
$(public_api_src_dir)/controls/bloom-view/bloom-view.h
-public_api_bubble_emitter_header_files = \
- $(public_api_src_dir)/controls/bubble-effect/bubble-emitter.h
+public_api_bubble_emitter_header_files =
public_api_cluster_header_files = \
$(public_api_src_dir)/controls/cluster/cluster-style.h \
$(public_api_src_dir)/controls/scrollable/item-view/item-layout.h \
$(public_api_src_dir)/controls/scrollable/item-view/item-view-declarations.h \
$(public_api_src_dir)/controls/scrollable/item-view/item-view.h \
- $(public_api_src_dir)/controls/scrollable/item-view/navigation-layout.h \
- $(public_api_src_dir)/controls/scrollable/item-view/roll-layout.h \
$(public_api_src_dir)/controls/scrollable/item-view/spiral-layout.h
public_api_magnifier_header_files = \
$(public_api_src_dir)/shader-effects/alpha-discard-effect.h \
$(public_api_src_dir)/shader-effects/bendy-effect.h \
$(public_api_src_dir)/shader-effects/blind-effect.h \
- $(public_api_src_dir)/shader-effects/bouncing-effect.h \
$(public_api_src_dir)/shader-effects/carousel-effect.h \
$(public_api_src_dir)/shader-effects/displacement-effect.h \
$(public_api_src_dir)/shader-effects/dissolve-effect.h \
$(public_api_src_dir)/shader-effects/swirl-effect.h \
$(public_api_src_dir)/shader-effects/water-effect.h
-public_api_bubble_effect_header_files = \
- $(public_api_src_dir)/shader-effects/bubble-effect/bubble-effect.h \
- $(public_api_src_dir)/shader-effects/bubble-effect/color-adjuster.h
+public_api_bubble_effect_header_files =
public_api_styling_header_files = \
$(public_api_src_dir)/styling/style-manager.h
#include <dali/public-api/animation/active-constraint.h>
#include <dali/public-api/animation/constraint.h>
#include <dali/public-api/animation/constraints.h>
+#include <dali/public-api/actors/image-actor.h>
namespace Dali
{
MotionBlurEffect MotionBlurEffect::Apply( RenderableActor renderable )
{
MotionBlurEffect newEffect = New( MOTION_BLUR_NUM_SAMPLES );
- renderable.SetShaderEffect( newEffect );
+ ImageActor imageActor = ImageActor::DownCast(renderable);
+ if( imageActor )
+ {
+ imageActor.SetShaderEffect( newEffect );
+ }
Dali::Property::Index uModelProperty = newEffect.GetPropertyIndex( MOTION_BLUR_MODEL_LASTFRAME );
Constraint constraint = Constraint::New<Matrix>( uModelProperty,
- Source( renderable, Actor::Property::WorldMatrix ),
+ Source( renderable, Actor::Property::WORLD_MATRIX ),
EqualToConstraint() );
// and set up constraint.
#include <dali/public-api/animation/active-constraint.h>
#include <dali/public-api/animation/constraint.h>
#include <dali/public-api/animation/constraints.h>
+#include <dali/public-api/actors/image-actor.h>
namespace Dali
{
MotionStretchEffect MotionStretchEffect::Apply( RenderableActor renderable )
{
MotionStretchEffect newEffect = New();
- renderable.SetShaderEffect( newEffect );
+
+ ImageActor imageActor = ImageActor::DownCast(renderable);
+ if( imageActor )
+ {
+ imageActor.SetShaderEffect( newEffect );
+ }
Dali::Property::Index uModelProperty = newEffect.GetPropertyIndex( MOTION_STRETCH_MODELVIEW_LASTFRAME );
Constraint constraint = Constraint::New<Matrix>( uModelProperty,
- Source( renderable, Actor::Property::WorldMatrix ),
+ Source( renderable, Actor::Property::WORLD_MATRIX ),
EqualToConstraint() );
// and set up constraint.