Simplified the placeholder-text show/hide logic 09/39009/3
authorPaul Wisbey <p.wisbey@samsung.com>
Wed, 6 May 2015 15:50:17 +0000 (16:50 +0100)
committerPaul Wisbey <p.wisbey@samsung.com>
Wed, 6 May 2015 16:20:55 +0000 (17:20 +0100)
Change-Id: I4cd9e7befafcc78fd9f9cb6acdfdc6e79544e8e5

dali-toolkit/internal/text/text-controller-impl.cpp
dali-toolkit/internal/text/text-controller-impl.h
dali-toolkit/internal/text/text-controller.cpp

index 4ce45eb..f77714c 100644 (file)
@@ -151,8 +151,6 @@ bool Controller::Impl::ProcessInputEvents()
     return false;
   }
 
-  mEventData->mDecoratorUpdated = false;
-
   if( mEventData->mDecorator )
   {
     for( std::vector<Event>::iterator iter = mEventData->mEventQueue.begin();
@@ -161,16 +159,6 @@ bool Controller::Impl::ProcessInputEvents()
     {
       switch( iter->type )
       {
-      case Event::KEYBOARD_FOCUS_GAIN_EVENT:
-      {
-        OnKeyboardFocus( true );
-        break;
-      }
-      case Event::KEYBOARD_FOCUS_LOST_EVENT:
-      {
-        OnKeyboardFocus( false );
-        break;
-      }
       case Event::CURSOR_KEY_EVENT:
       {
         OnCursorKeyEvent( *iter );
@@ -243,7 +231,10 @@ bool Controller::Impl::ProcessInputEvents()
   mEventData->mEventQueue.clear();
 
   DALI_LOG_INFO( gLogFilter, Debug::Verbose, "<--Controller::ProcessInputEvents\n" );
-  return mEventData->mDecoratorUpdated;
+
+  bool decoratorUpdated = mEventData->mDecoratorUpdated;
+  mEventData->mDecoratorUpdated = false;
+  return decoratorUpdated;
 }
 
 void Controller::Impl::UpdateModel( OperationsMask operationsRequired )
@@ -406,24 +397,6 @@ void Controller::Impl::GetDefaultFonts( Vector<FontRun>& fonts, Length numberOfC
   }
 }
 
-void Controller::Impl::OnKeyboardFocus( bool hasFocus )
-{
-  if( NULL == mEventData )
-  {
-    // Nothing to do if there is no text input.
-    return;
-  }
-
-  if( !hasFocus )
-  {
-    ChangeState( EventData::INACTIVE );
-  }
-  else
-  {
-    ChangeState( EventData::EDITING );
-  }
-}
-
 void Controller::Impl::OnCursorKeyEvent( const Event& event )
 {
   if( NULL == mEventData )
index 7848541..79792c9 100644 (file)
@@ -42,8 +42,6 @@ struct Event
   // Used to queue input events until DoRelayout()
   enum Type
   {
-    KEYBOARD_FOCUS_GAIN_EVENT,
-    KEYBOARD_FOCUS_LOST_EVENT,
     CURSOR_KEY_EVENT,
     TAP_EVENT,
     PAN_EVENT,
@@ -296,8 +294,6 @@ struct Controller::Impl
    */
   void GetDefaultFonts( Dali::Vector<FontRun>& fonts, Length numberOfCharacters );
 
-  void OnKeyboardFocus( bool hasFocus );
-
   void OnCursorKeyEvent( const Event& event );
 
   void OnTapEvent( const Event& event );
index af06986..5e7a45b 100644 (file)
@@ -946,8 +946,13 @@ void Controller::KeyboardFocusGainEvent()
 
   if( mImpl->mEventData )
   {
-    Event event( Event::KEYBOARD_FOCUS_GAIN_EVENT );
-    mImpl->mEventData->mEventQueue.push_back( event );
+    mImpl->ChangeState( EventData::EDITING );
+
+    if( mImpl->IsShowingPlaceholderText() )
+    {
+      // Show alternative placeholder-text when editing
+      ShowPlaceholderText();
+    }
 
     mImpl->RequestRelayout();
   }
@@ -959,8 +964,13 @@ void Controller::KeyboardFocusLostEvent()
 
   if( mImpl->mEventData )
   {
-    Event event( Event::KEYBOARD_FOCUS_LOST_EVENT );
-    mImpl->mEventData->mEventQueue.push_back( event );
+    mImpl->ChangeState( EventData::INACTIVE );
+
+    if( mImpl->IsShowingPlaceholderText() )
+    {
+      // Revert to regular placeholder-text when not editing
+      ShowPlaceholderText();
+    }
 
     mImpl->RequestRelayout();
   }
@@ -1135,14 +1145,8 @@ void Controller::TapEvent( unsigned int tapCount, float x, float y )
     {
       bool tapDuringEditMode( EventData::EDITING == mImpl->mEventData->mState );
 
-      mImpl->ChangeState( EventData::EDITING );
-
-      if( mImpl->IsShowingPlaceholderText() )
-      {
-        // Alternative placeholder-text is used when editing
-        ShowPlaceholderText();
-      }
-      else if( EventData::EDITING == mImpl->mEventData->mState )
+      if( ! mImpl->IsShowingPlaceholderText() &&
+          EventData::EDITING == mImpl->mEventData->mState )
       {
         // Grab handle is not shown until a tap is received whilst EDITING
         if( tapDuringEditMode )
@@ -1151,6 +1155,8 @@ void Controller::TapEvent( unsigned int tapCount, float x, float y )
         }
         mImpl->mEventData->mDecorator->SetPopupActive( false );
       }
+
+      mImpl->ChangeState( EventData::EDITING );
     }
     else if( mImpl->mEventData->mSelectionEnabled &&
              ( 2u == tapCount ) )