--- 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;
}