return WTF::String();
}
+static bool isContentEditable(WebCore::Node* node)
+{
+ if (!node) return false;
+ return node->document()->frame()->selection()->isContentEditable();
+}
+
void WebViewCore::revealSelection()
{
WebCore::Node* focus = currentFocus();
return;
WebCore::RenderObject* renderer = focus->renderer();
if ((!renderer || (!renderer->isTextField() && !renderer->isTextArea()))
- && !focus->isContentEditable())
+ && !isContentEditable(focus))
return;
WebCore::Frame* focusedFrame = focus->document()->frame();
WebFrame* webFrame = WebFrame::getWebFrame(focusedFrame);
if (focusNode) {
WebCore::Frame* frame = focusNode->document()->frame();
WebFrame* webFrame = WebFrame::getWebFrame(frame);
- if (focusNode->isContentEditable() || (focusNode->renderer()
+ if (isContentEditable(focusNode) || (focusNode->renderer()
&& (focusNode->renderer()->isTextArea()
// For password fields, this is done in the UI side via
// bringPointIntoView, since the UI does the drawing.
VisibleSelection old = frame->selection()->selection();
bool handled = eventHandler->keyEvent(event);
webFrame->setUserInitiatedAction(false);
- if (focusNode->isContentEditable()) {
+ if (isContentEditable(focusNode)) {
// keyEvent will return true even if the contentEditable did not
// change its selection. In the case that it does not, we want to
// return false so that the key will be sent back to our navigation
framePtr = m_mainFrame;
if (nodePtr && valid) {
scrollLayer(nodePtr->renderer(), &m_mousePos);
- if (nodePtr->isContentEditable() || (nodePtr->renderer()
+ if (isContentEditable(nodePtr) || (nodePtr->renderer()
&& (nodePtr->renderer()-> isTextArea() || nodePtr->renderer()->isTextField()))) {
// The user clicked on a text input field. If this causes a blur event
// on a different text input, do not hide the keyboard in formDidBlur
requestKeyboard(false);
}
} else {
- // If the focusNode is contentEditable, show the keyboard and enable
- // the focus controller so the user can type. Otherwise hide the
- // keyboard and disable the focus controller because no text input
- // is needed.
- bool keyboard = focusNode->isContentEditable();
- if (keyboard) {
+ // If the selection is contentEditable, show the keyboard so the
+ // user can type. Otherwise hide the keyboard because no text
+ // input is needed.
+ if (isContentEditable(focusNode)) {
requestKeyboard(true);
} else {
clearTextEntry();