}
ControllerPtr Controller::New( ControlInterface* controlInterface,
- EditableControlInterface* editableControlInterface )
+ EditableControlInterface* editableControlInterface,
+ SelectableControlInterface* selectableControlInterface )
{
return ControllerPtr( new Controller( controlInterface,
- editableControlInterface ) );
+ editableControlInterface,
+ selectableControlInterface ) );
}
// public : Configure the text controller.
else
{
DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::KeyEvent %p keyString %s\n", this, keyString.c_str() );
+ if (!IsEditable()) return false;
if( !keyString.empty() )
{
}
}
+void Controller::SetTextSelectionRange(const uint32_t *start, const uint32_t *end)
+{
+ if( mImpl->mEventData )
+ {
+ mImpl->mEventData->mCheckScrollAmount = true;
+ mImpl->mEventData->mIsLeftHandleSelected = true;
+ mImpl->mEventData->mIsRightHandleSelected = true;
+ mImpl->SetTextSelectionRange(start, end);
+ mImpl->RequestRelayout();
+ KeyboardFocusGainEvent();
+ }
+}
+
+Uint32Pair Controller::GetTextSelectionRange() const
+{
+ return mImpl->GetTextSelectionRange();
+}
+
+void Controller::SelectWholeText()
+{
+ SelectEvent( 0.f, 0.f, SelectionType::ALL );
+}
+
+void Controller::SelectNone()
+{
+ SelectEvent( 0.f, 0.f, SelectionType::NONE );
+}
+
+string Controller::GetSelectedText() const
+{
+ string text;
+ if( EventData::SELECTING == mImpl->mEventData->mState )
+ {
+ mImpl->RetrieveSelection( text, false );
+ }
+ return text;
+}
+
InputMethodContext::CallbackData Controller::OnInputMethodContextEvent( InputMethodContext& inputMethodContext, const InputMethodContext::EventData& inputMethodContextEvent )
{
// Whether the text needs to be relaid-out.
}
}
+bool Controller::IsEditable() const
+{
+ return mImpl->IsEditable();
+}
+
+void Controller::SetEditable( bool editable )
+{
+ mImpl->SetEditable( editable );
+ if(mImpl->mEventData && mImpl->mEventData->mDecorator)
+ {
+ mImpl->mEventData->mDecorator->SetEditable( editable );
+ }
+}
+
void Controller::DecorationEvent( HandleType handleType, HandleState state, float x, float y )
{
DALI_ASSERT_DEBUG( mImpl->mEventData && "Unexpected DecorationEvent" );
{
case Toolkit::TextSelectionPopup::CUT:
{
+ if (!IsEditable()) return;
mImpl->SendSelectionToClipboard( true ); // Synchronous call to modify text
mImpl->mOperationsPending = ALL_OPERATIONS;
return textRemoved;
}
-std::string Controller::GetSelectedText()
-{
- std::string text;
- if( EventData::SELECTING == mImpl->mEventData->mState )
- {
- mImpl->RetrieveSelection( text, false );
- }
- return text;
-}
-
// private : Relayout.
bool Controller::DoRelayout( const Size& size,
return;
}
+ if (!IsEditable()) return;
+
mImpl->mEventData->mCheckScrollAmount = true;
// The natural size needs to be re-calculated.
return removed;
}
+ if (!IsEditable()) return false;
+
// InputMethodContext is no longer handling key-events
mImpl->ClearPreEditFlag();
Controller::Controller()
: mImpl( NULL )
{
- mImpl = new Controller::Impl( NULL, NULL );
+ mImpl = new Controller::Impl( nullptr, nullptr, nullptr );
}
Controller::Controller( ControlInterface* controlInterface )
{
- mImpl = new Controller::Impl( controlInterface, NULL );
+ mImpl = new Controller::Impl( controlInterface, NULL, NULL );
}
Controller::Controller( ControlInterface* controlInterface,
- EditableControlInterface* editableControlInterface )
+ EditableControlInterface* editableControlInterface,
+ SelectableControlInterface* selectableControlInterface )
{
mImpl = new Controller::Impl( controlInterface,
- editableControlInterface );
+ editableControlInterface,
+ selectableControlInterface );
}
// The copy constructor and operator are left unimplemented.