93 return static_cast<RenderTextControl *>(renderer())->selectionEnd(); |
93 return static_cast<RenderTextControl *>(renderer())->selectionEnd(); |
94 } |
94 } |
95 return 0; |
95 return 0; |
96 } |
96 } |
97 |
97 |
|
98 static RenderTextControl* rendererAfterUpdateLayout(HTMLTextAreaElement* element) |
|
99 { |
|
100 element->document()->updateLayoutIgnorePendingStylesheets(); |
|
101 return static_cast<RenderTextControl*>(element->renderer()); |
|
102 } |
|
103 |
98 void HTMLTextAreaElement::setSelectionStart(int start) |
104 void HTMLTextAreaElement::setSelectionStart(int start) |
99 { |
105 { |
100 if (renderer()) |
106 if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) |
101 static_cast<RenderTextControl*>(renderer())->setSelectionStart(start); |
107 renderer->setSelectionStart(start); |
102 } |
108 } |
103 |
109 |
104 void HTMLTextAreaElement::setSelectionEnd(int end) |
110 void HTMLTextAreaElement::setSelectionEnd(int end) |
105 { |
111 { |
106 if (renderer()) |
112 if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) |
107 static_cast<RenderTextControl*>(renderer())->setSelectionEnd(end); |
113 renderer->setSelectionEnd(end); |
108 } |
114 } |
109 |
115 |
110 void HTMLTextAreaElement::select() |
116 void HTMLTextAreaElement::select() |
111 { |
117 { |
112 if (renderer()) |
118 if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) |
113 static_cast<RenderTextControl *>(renderer())->select(); |
119 renderer->select(); |
114 } |
120 } |
115 |
121 |
116 void HTMLTextAreaElement::setSelectionRange(int start, int end) |
122 void HTMLTextAreaElement::setSelectionRange(int start, int end) |
117 { |
123 { |
118 if (renderer()) |
124 if (RenderTextControl* renderer = rendererAfterUpdateLayout(this)) |
119 static_cast<RenderTextControl*>(renderer())->setSelectionRange(start, end); |
125 renderer->setSelectionRange(start, end); |
120 } |
126 } |
121 |
127 |
122 void HTMLTextAreaElement::childrenChanged() |
128 void HTMLTextAreaElement::childrenChanged() |
123 { |
129 { |
124 setValue(defaultValue()); |
130 setValue(defaultValue()); |