📄 noderaredata.h
字号:
/* * Copyright (C) 2008 Apple Inc. All rights reserved. * Copyright (C) 2008 David Smith <catfish.man@gmail.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * */#ifndef NodeRareData_h#define NodeRareData_h#include "DynamicNodeList.h"#include "EventListener.h"#include "RegisteredEventListener.h"#include "StringHash.h"#include "QualifiedName.h"#include <wtf/HashSet.h>#include <wtf/OwnPtr.h>namespace WebCore {struct NodeListsNodeData { typedef HashSet<DynamicNodeList*> NodeListSet; NodeListSet m_listsWithCaches; DynamicNodeList::Caches m_childNodeListCaches; typedef HashMap<String, DynamicNodeList::Caches*> CacheMap; CacheMap m_classNodeListCaches; CacheMap m_nameNodeListCaches; typedef HashMap<QualifiedName, DynamicNodeList::Caches*> TagCacheMap; TagCacheMap m_tagNodeListCaches; ~NodeListsNodeData() { deleteAllValues(m_classNodeListCaches); deleteAllValues(m_nameNodeListCaches); deleteAllValues(m_tagNodeListCaches); } void invalidateCaches(); void invalidateCachesThatDependOnAttributes(); bool isEmpty() const;}; class NodeRareData {public: NodeRareData() : m_tabIndex(0) , m_tabIndexWasSetExplicitly(false) , m_isFocused(false) , m_needsFocusAppearanceUpdateSoonAfterAttach(false) { } typedef HashMap<const Node*, NodeRareData*> NodeRareDataMap; static NodeRareDataMap& rareDataMap() { static NodeRareDataMap* dataMap = new NodeRareDataMap; return *dataMap; } static NodeRareData* rareDataFromMap(const Node* node) { return rareDataMap().get(node); } void clearNodeLists() { m_nodeLists.clear(); } void setNodeLists(std::auto_ptr<NodeListsNodeData> lists) { m_nodeLists.set(lists.release()); } NodeListsNodeData* nodeLists() const { return m_nodeLists.get(); } short tabIndex() const { return m_tabIndex; } void setTabIndexExplicitly(short index) { m_tabIndex = index; m_tabIndexWasSetExplicitly = true; } bool tabIndexSetExplicitly() const { return m_tabIndexWasSetExplicitly; } RegisteredEventListenerVector* listeners() { return m_eventListeners.get(); } RegisteredEventListenerVector& ensureListeners() { if (!m_eventListeners) m_eventListeners.set(new RegisteredEventListenerVector); return *m_eventListeners; } bool isFocused() const { return m_isFocused; } void setFocused(bool focused) { m_isFocused = focused; }protected: // for ElementRareData bool needsFocusAppearanceUpdateSoonAfterAttach() const { return m_needsFocusAppearanceUpdateSoonAfterAttach; } void setNeedsFocusAppearanceUpdateSoonAfterAttach(bool needs) { m_needsFocusAppearanceUpdateSoonAfterAttach = needs; }private: OwnPtr<NodeListsNodeData> m_nodeLists; OwnPtr<RegisteredEventListenerVector > m_eventListeners; short m_tabIndex; bool m_tabIndexWasSetExplicitly : 1; bool m_isFocused : 1; bool m_needsFocusAppearanceUpdateSoonAfterAttach : 1;};} //namespace#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -