OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Peter Kelly (pmk@post.com) | 4 * (C) 2001 Peter Kelly (pmk@post.com) |
5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
6 * (C) 2007 David Smith (catfish.man@gmail.com) | 6 * (C) 2007 David Smith (catfish.man@gmail.com) |
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. | 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. |
8 * (C) 2007 Eric Seidel (eric@webkit.org) | 8 * (C) 2007 Eric Seidel (eric@webkit.org) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 2136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2147 return; | 2147 return; |
2148 } | 2148 } |
2149 | 2149 |
2150 cancelFocusAppearanceUpdate(); | 2150 cancelFocusAppearanceUpdate(); |
2151 updateFocusAppearance(restorePreviousSelection); | 2151 updateFocusAppearance(restorePreviousSelection); |
2152 } | 2152 } |
2153 | 2153 |
2154 void Element::updateFocusAppearance(bool /*restorePreviousSelection*/) | 2154 void Element::updateFocusAppearance(bool /*restorePreviousSelection*/) |
2155 { | 2155 { |
2156 if (isRootEditableElement()) { | 2156 if (isRootEditableElement()) { |
2157 LocalFrame* frame = document().frame(); | 2157 // Taking the ownership since setSelection() may release the last refere
nce to |frame|. |
| 2158 RefPtr<LocalFrame> frame(document().frame()); |
2158 if (!frame) | 2159 if (!frame) |
2159 return; | 2160 return; |
2160 | 2161 |
2161 // When focusing an editable element in an iframe, don't reset the selec
tion if it already contains a selection. | 2162 // When focusing an editable element in an iframe, don't reset the selec
tion if it already contains a selection. |
2162 if (this == frame->selection().rootEditableElement()) | 2163 if (this == frame->selection().rootEditableElement()) |
2163 return; | 2164 return; |
2164 | 2165 |
2165 // FIXME: We should restore the previous selection if there is one. | 2166 // FIXME: We should restore the previous selection if there is one. |
2166 VisibleSelection newSelection = VisibleSelection(firstPositionInOrBefore
Node(this), DOWNSTREAM); | 2167 VisibleSelection newSelection = VisibleSelection(firstPositionInOrBefore
Node(this), DOWNSTREAM); |
2167 frame->selection().setSelection(newSelection); | 2168 frame->selection().setSelection(newSelection); |
(...skipping 1174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3342 || isHTMLObjectElement(*this) | 3343 || isHTMLObjectElement(*this) |
3343 || isHTMLAppletElement(*this) | 3344 || isHTMLAppletElement(*this) |
3344 || isHTMLCanvasElement(*this)) | 3345 || isHTMLCanvasElement(*this)) |
3345 return false; | 3346 return false; |
3346 if (FullscreenElementStack::isActiveFullScreenElement(this)) | 3347 if (FullscreenElementStack::isActiveFullScreenElement(this)) |
3347 return false; | 3348 return false; |
3348 return true; | 3349 return true; |
3349 } | 3350 } |
3350 | 3351 |
3351 } // namespace WebCore | 3352 } // namespace WebCore |
OLD | NEW |