webengine/osswebengine/WebCore/html/HTMLTextAreaElement.cpp
branchRCL_3
changeset 47 e1bea15f9a39
parent 0 dd21522fd290
child 48 79859ed3eea9
--- a/webengine/osswebengine/WebCore/html/HTMLTextAreaElement.cpp	Thu Jul 15 19:53:20 2010 +0300
+++ b/webengine/osswebengine/WebCore/html/HTMLTextAreaElement.cpp	Thu Aug 19 10:58:56 2010 +0300
@@ -95,28 +95,34 @@
     return 0;
 }
 
+static RenderTextControl* rendererAfterUpdateLayout(HTMLTextAreaElement* element) 
+{ 
+    element->document()->updateLayoutIgnorePendingStylesheets(); 
+    return static_cast<RenderTextControl*>(element->renderer());
+} 
+
 void HTMLTextAreaElement::setSelectionStart(int start)
 {
-    if (renderer())
-        static_cast<RenderTextControl*>(renderer())->setSelectionStart(start);
+    if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) 
+ 	    renderer->setSelectionStart(start); 
 }
 
 void HTMLTextAreaElement::setSelectionEnd(int end)
 {
-    if (renderer())
-        static_cast<RenderTextControl*>(renderer())->setSelectionEnd(end);
+    if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) 
+ 	    renderer->setSelectionEnd(end);
 }
 
 void HTMLTextAreaElement::select()
 {
-    if (renderer())
-        static_cast<RenderTextControl *>(renderer())->select();
+    if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) 
+ 	    renderer->select(); 
 }
 
 void HTMLTextAreaElement::setSelectionRange(int start, int end)
 {
-    if (renderer())
-        static_cast<RenderTextControl*>(renderer())->setSelectionRange(start, end);
+    if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) 
+ 	   renderer->setSelectionRange(start, end); 
 }
 
 void HTMLTextAreaElement::childrenChanged()