// EXTERNAL INCLUDES
#include <dali/devel-api/adaptor-framework/clipboard.h>
#include <dali/devel-api/text-abstraction/font-client.h>
-#include <iostream>
// INTERNAL INCLUDES
#include <dali-toolkit/internal/text/layouts/layout-engine.h>
INACTIVE,
INTERRUPTED,
SELECTING,
- SELECTION_CHANGED,
EDITING,
EDITING_WITH_POPUP,
EDITING_WITH_GRAB_HANDLE,
~EventData();
- DecoratorPtr mDecorator; ///< Pointer to the decorator
- std::string mPlaceholderTextActive; ///< The text to display when the TextField is empty with key-input focus
- std::string mPlaceholderTextInactive; ///< The text to display when the TextField is empty and inactive
- Vector4 mPlaceholderTextColor; ///< The in/active placeholder text color
+ DecoratorPtr mDecorator; ///< Pointer to the decorator.
+ ImfManager mImfManager; ///< The Input Method Framework Manager.
+ std::string mPlaceholderTextActive; ///< The text to display when the TextField is empty with key-input focus.
+ std::string mPlaceholderTextInactive; ///< The text to display when the TextField is empty and inactive.
+ Vector4 mPlaceholderTextColor; ///< The in/active placeholder text color.
/**
* This is used to delay handling events until after the model has been updated.
struct FontDefaults
{
FontDefaults()
- : mDefaultFontFamily(""),
- mDefaultFontStyle(""),
+ : mFontDescription(),
+ mFontStyle(),
mDefaultPointSize(0.0f),
mFontId(0u)
{
+ // Initially use the default platform font
+ TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
+ fontClient.GetDefaultPlatformFontDescription( mFontDescription );
}
FontId GetFontId( TextAbstraction::FontClient& fontClient )
if( !mFontId )
{
Dali::TextAbstraction::PointSize26Dot6 pointSize = mDefaultPointSize*64;
- mFontId = fontClient.GetFontId( mDefaultFontFamily, mDefaultFontStyle, pointSize );
+ mFontId = fontClient.GetFontId( mFontDescription, pointSize );
}
return mFontId;
}
- std::string mDefaultFontFamily;
- std::string mDefaultFontStyle;
+ TextAbstraction::FontDescription mFontDescription;
+ std::string mFontStyle;
float mDefaultPointSize;
FontId mFontId;
};
mOperationsPending( NO_OPERATION ),
mMaximumNumberOfCharacters( 50 ),
mRecalculateNaturalSize( true ),
- mUserDefinedFontFamily( false)
+ mUserDefinedFontFamily( false )
{
mLogicalModel = LogicalModel::New();
mVisualModel = VisualModel::New();
return ( mEventData && mEventData->mIsShowingPlaceholderText );
}
+ /**
+ * @brief Helper to check whether active place-holder text is available.
+ */
+ bool IsFocusedPlaceholderAvailable() const
+ {
+ return ( mEventData && !mEventData->mPlaceholderTextActive.empty() );
+ }
+
bool IsShowingRealText() const
{
return ( !IsShowingPlaceholderText() &&
void ResetImfManager()
{
- // Reset incase we are in a pre-edit state.
- ImfManager imfManager = ImfManager::Get();
- if ( imfManager )
+ if( mEventData )
{
- imfManager.Reset(); // Will trigger a commit message
- }
+ // Reset incase we are in a pre-edit state.
+ if( mEventData->mImfManager )
+ {
+ mEventData->mImfManager.Reset(); // Will trigger a message ( commit, get surrounding )
+ }
- ClearPreEditFlag();
+ ClearPreEditFlag();
+ }
}
bool IsClipboardEmpty()
void GetTextFromClipboard( unsigned int itemIndex, std::string& retreivedString );
- void RepositionSelectionHandles( CharacterIndex selectionStart, CharacterIndex selectionEnd );
+ void RepositionSelectionHandles();
void RepositionSelectionHandles( float visualX, float visualY );
void SetPopupButtons();
/**
* @brief Updates the cursor position.
*
- * Retrieves the x,y position of the cursor logical position and sets it into the decorator.
+ * Sets the cursor's position into the decorator. It transforms the cursor's position into decorator's coords.
* It sets the position of the secondary cursor if it's a valid one.
* Sets which cursors are active.
+ *
+ * @param[in] cursorInfo Contains the selection handle position in Actor's coords.
+ *
*/
- void UpdateCursorPosition();
+ void UpdateCursorPosition( const CursorInfo& cursorInfo );
/**
- * @brief Updates the position of the given selection handle.
+ * @brief Updates the position of the given selection handle. It transforms the handle's position into decorator's coords.
*
* @param[in] handleType One of the selection handles.
+ * @param[in] cursorInfo Contains the selection handle position in Actor's coords.
*/
- void UpdateSelectionHandle( HandleType handleType );
+ void UpdateSelectionHandle( HandleType handleType,
+ const CursorInfo& cursorInfo );
/**
* @biref Clamps the horizontal scrolling to get the control always filled with text.
*
* This method is called after deleting text.
*/
- void ScrollTextToMatchCursor();
+ void ScrollTextToMatchCursor( const CursorInfo& cursorInfo);
ControlInterface& mControlInterface; ///< Reference to the text controller.
LogicalModelPtr mLogicalModel; ///< Pointer to the logical model.
Length mMaximumNumberOfCharacters; ///< Maximum number of characters that can be inserted.
bool mRecalculateNaturalSize:1; ///< Whether the natural size needs to be recalculated.
- bool mUserDefinedFontFamily:1; ///< Whether the Font family was Set by the user instead of being left as sytem default
+ bool mUserDefinedFontFamily:1; ///< Whether the Font family was set by the user instead of being left as sytem default.
};
} // namespace Text