webengine/osswebengine/WebCore/rendering/RenderText.cpp
branchRCL_3
changeset 94 919f36ff910f
parent 93 79859ed3eea9
child 95 d96eed154187
--- a/webengine/osswebengine/WebCore/rendering/RenderText.cpp	Tue Aug 31 16:17:46 2010 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RenderText.cpp	Wed Sep 01 12:28:30 2010 +0100
@@ -73,11 +73,9 @@
      , m_isAllASCII(charactersAreAllASCII(m_text.get()))
      
 #if PLATFORM(SYMBIAN)     
-
      , m_securityTimer(this, &RenderText::securityTimerFired)
-     
-#endif
-     
+     , m_offset(0) 
+#endif      
 {
     ASSERT(m_text);
     setRenderText();
@@ -865,6 +863,9 @@
 
 void RenderText::setTextInternal(PassRefPtr<StringImpl> text, bool backspace)
 {
+#if PLATFORM(SYMBIAN)
+    unsigned oldlength = m_text->length();
+#endif
     m_text = text;
     ASSERT(m_text);
 
@@ -931,7 +932,16 @@
                 	m_text = m_text->secure(bullet);
                 }
                 else{
-                    m_text = m_text->secureShowOffset(bullet, m_offset);
+                    
+                    if(oldlength <= m_text->length())
+                        {
+                        m_offset =  m_text->length() - 1 ;
+                        m_text = m_text->secureShowOffset(bullet, m_offset);
+                        }
+                    else
+                        {
+                        m_text = m_text->secure(bullet);
+                        }
                 }
                 	
                 break;
@@ -1032,8 +1042,15 @@
     if (!s->m_len) {
         // We want the box to be destroyed.
         s->remove();
+        if (m_firstTextBox == s) 
+            m_firstTextBox = s->nextTextBox(); 
+        else 
+            s->prevTextBox()->setNextLineBox(s->nextTextBox()); 
+        if (m_lastTextBox == s) 
+            m_lastTextBox = s->prevTextBox(); 
+        else 
+            s->nextTextBox()->setPreviousLineBox(s->prevTextBox());
         s->destroy(renderArena());
-        m_firstTextBox = m_lastTextBox = 0;
         return;
     }
 
@@ -1228,7 +1245,7 @@
 #ifdef CHECK_CONSISTENCY
     const InlineTextBox* prev = 0;
     for (const InlineTextBox* child = m_firstTextBox; child != 0; child = child->nextTextBox()) {
-        ASSERT(child->object() == this);
+        ASSERT(child->renderer() == this);
         ASSERT(child->prevTextBox() == prev);
         prev = child;
     }