📄 htmlediting.h
字号:
void surroundNodeRangeWithElement(DOM::NodeImpl *start, DOM::NodeImpl *end, DOM::ElementImpl *element);
float computedFontSize(const DOM::NodeImpl *);
void joinChildTextNodes(DOM::NodeImpl *, const DOM::Position &start, const DOM::Position &end);
DOM::CSSMutableStyleDeclarationImpl *m_style;
EditAction m_editingAction;
EPropertyLevel m_propertyLevel;
};
//------------------------------------------------------------------------------------------
// DeleteFromTextNodeCommand
class DeleteFromTextNodeCommand : public EditCommand
{
public:
DeleteFromTextNodeCommand(DOM::DocumentImpl *document, DOM::TextImpl *node, long offset, long count);
virtual ~DeleteFromTextNodeCommand();
virtual void doApply();
virtual void doUnapply();
DOM::TextImpl *node() const { return m_node; }
long offset() const { return m_offset; }
long count() const { return m_count; }
private:
DOM::TextImpl *m_node;
long m_offset;
long m_count;
DOM::DOMString m_text;
};
//------------------------------------------------------------------------------------------
// DeleteSelectionCommand
class DeleteSelectionCommand : public CompositeEditCommand
{
public:
DeleteSelectionCommand(DOM::DocumentImpl *document, bool smartDelete=false, bool mergeBlocksAfterDelete=true);
DeleteSelectionCommand(DOM::DocumentImpl *document, const Selection &selection, bool smartDelete=false, bool mergeBlocksAfterDelete=true);
virtual void doApply();
virtual EditAction editingAction() const;
private:
virtual bool preservesTypingStyle() const;
void initializePositionData();
void saveTypingStyleState();
void insertPlaceholderForAncestorBlockContent();
bool handleSpecialCaseBRDelete();
void handleGeneralDelete();
void fixupWhitespace();
void moveNodesAfterNode();
void calculateEndingPosition();
void calculateTypingStyleAfterDelete(DOM::NodeImpl *insertedPlaceholder);
void clearTransientState();
void setStartNode(DOM::NodeImpl *);
bool m_hasSelectionToDelete;
bool m_smartDelete;
bool m_mergeBlocksAfterDelete;
bool m_trailingWhitespaceValid;
// This data is transient and should be cleared at the end of the doApply function.
Selection m_selectionToDelete;
DOM::Position m_upstreamStart;
DOM::Position m_downstreamStart;
DOM::Position m_upstreamEnd;
DOM::Position m_downstreamEnd;
DOM::Position m_endingPosition;
DOM::Position m_leadingWhitespace;
DOM::Position m_trailingWhitespace;
DOM::NodeImpl *m_startBlock;
DOM::NodeImpl *m_endBlock;
DOM::NodeImpl *m_startNode;
DOM::CSSMutableStyleDeclarationImpl *m_typingStyle;
};
//------------------------------------------------------------------------------------------
// InsertIntoTextNode
class InsertIntoTextNode : public EditCommand
{
public:
InsertIntoTextNode(DOM::DocumentImpl *document, DOM::TextImpl *, long, const DOM::DOMString &);
virtual ~InsertIntoTextNode();
virtual void doApply();
virtual void doUnapply();
DOM::TextImpl *node() const { return m_node; }
long offset() const { return m_offset; }
DOM::DOMString text() const { return m_text; }
private:
DOM::TextImpl *m_node;
long m_offset;
DOM::DOMString m_text;
};
//------------------------------------------------------------------------------------------
// InsertNodeBeforeCommand
class InsertNodeBeforeCommand : public EditCommand
{
public:
InsertNodeBeforeCommand(DOM::DocumentImpl *, DOM::NodeImpl *insertChild, DOM::NodeImpl *refChild);
virtual ~InsertNodeBeforeCommand();
virtual void doApply();
virtual void doUnapply();
DOM::NodeImpl *insertChild() const { return m_insertChild; }
DOM::NodeImpl *refChild() const { return m_refChild; }
private:
DOM::NodeImpl *m_insertChild;
DOM::NodeImpl *m_refChild;
};
//------------------------------------------------------------------------------------------
// InsertLineBreakCommand
class InsertLineBreakCommand : public CompositeEditCommand
{
public:
InsertLineBreakCommand(DOM::DocumentImpl *document);
virtual void doApply();
private:
virtual bool preservesTypingStyle() const;
void insertNodeAfterPosition(DOM::NodeImpl *node, const DOM::Position &pos);
void insertNodeBeforePosition(DOM::NodeImpl *node, const DOM::Position &pos);
};
//------------------------------------------------------------------------------------------
// InsertParagraphSeparatorCommand
class InsertParagraphSeparatorCommand : public CompositeEditCommand
{
public:
InsertParagraphSeparatorCommand(DOM::DocumentImpl *document);
virtual ~InsertParagraphSeparatorCommand();
virtual void doApply();
private:
DOM::ElementImpl *createParagraphElement();
void calculateStyleBeforeInsertion(const DOM::Position &);
void applyStyleAfterInsertion();
virtual bool preservesTypingStyle() const;
QPtrList<DOM::NodeImpl> ancestors;
QPtrList<DOM::NodeImpl> clonedNodes;
DOM::CSSMutableStyleDeclarationImpl *m_style;
};
//------------------------------------------------------------------------------------------
// InsertParagraphSeparatorInQuotedContentCommand
class InsertParagraphSeparatorInQuotedContentCommand : public CompositeEditCommand
{
public:
InsertParagraphSeparatorInQuotedContentCommand(DOM::DocumentImpl *);
virtual ~InsertParagraphSeparatorInQuotedContentCommand();
virtual void doApply();
private:
QPtrList<DOM::NodeImpl> ancestors;
QPtrList<DOM::NodeImpl> clonedNodes;
DOM::ElementImpl *m_breakNode;
};
//------------------------------------------------------------------------------------------
// InsertTextCommand
class InsertTextCommand : public CompositeEditCommand
{
public:
InsertTextCommand(DOM::DocumentImpl *document);
virtual void doApply();
void deleteCharacter();
void input(const DOM::DOMString &text, bool selectInsertedText = false);
unsigned long charactersAdded() const { return m_charactersAdded; }
private:
virtual bool isInsertTextCommand() const;
DOM::Position prepareForTextInsertion(bool adjustDownstream);
void insertSpace(DOM::TextImpl *textNode, unsigned long offset);
unsigned long m_charactersAdded;
};
//------------------------------------------------------------------------------------------
// JoinTextNodesCommand
class JoinTextNodesCommand : public EditCommand
{
public:
JoinTextNodesCommand(DOM::DocumentImpl *, DOM::TextImpl *, DOM::TextImpl *);
virtual ~JoinTextNodesCommand();
virtual void doApply();
virtual void doUnapply();
DOM::TextImpl *firstNode() const { return m_text1; }
DOM::TextImpl *secondNode() const { return m_text2; }
private:
DOM::TextImpl *m_text1;
DOM::TextImpl *m_text2;
unsigned long m_offset;
};
//------------------------------------------------------------------------------------------
// MoveSelectionCommand
class MoveSelectionCommand : public CompositeEditCommand
{
public:
MoveSelectionCommand(DOM::DocumentImpl *document, DOM::DocumentFragmentImpl *fragment, DOM::Position &position, bool smartMove=false);
virtual ~MoveSelectionCommand();
virtual void doApply();
virtual EditAction editingAction() const;
private:
DOM::DocumentFragmentImpl *m_fragment;
DOM::Position m_position;
bool m_smartMove;
};
//------------------------------------------------------------------------------------------
// RebalanceWhitespaceCommand
class RebalanceWhitespaceCommand : public EditCommand
{
public:
RebalanceWhitespaceCommand(DOM::DocumentImpl *, const DOM::Position &);
virtual ~RebalanceWhitespaceCommand();
virtual void doApply();
virtual void doUnapply();
private:
enum { InvalidOffset = -1 };
virtual bool preservesTypingStyle() const;
DOM::DOMString m_beforeString;
DOM::DOMString m_afterString;
DOM::Position m_position;
long m_upstreamOffset;
long m_downstreamOffset;
};
//------------------------------------------------------------------------------------------
// RemoveCSSPropertyCommand
class RemoveCSSPropertyCommand : public EditCommand
{
public:
RemoveCSSPropertyCommand(DOM::DocumentImpl *, DOM::CSSStyleDeclarationImpl *, int property);
virtual ~RemoveCSSPropertyCommand();
virtual void doApply();
virtual void doUnapply();
DOM::CSSMutableStyleDeclarationImpl *styleDeclaration() const { return m_decl; }
int property() const { return m_property; }
private:
DOM::CSSMutableStyleDeclarationImpl *m_decl;
int m_property;
DOM::DOMString m_oldValue;
bool m_important;
};
//------------------------------------------------------------------------------------------
// RemoveNodeAttributeCommand
class RemoveNodeAttributeCommand : public EditCommand
{
public:
RemoveNodeAttributeCommand(DOM::DocumentImpl *, DOM::ElementImpl *, DOM::NodeImpl::Id attribute);
virtual ~RemoveNodeAttributeCommand();
virtual void doApply();
virtual void doUnapply();
DOM::ElementImpl *element() const { return m_element; }
DOM::NodeImpl::Id attribute() const { return m_attribute; }
private:
DOM::ElementImpl *m_element;
DOM::NodeImpl::Id m_attribute;
DOM::DOMString m_oldValue;
};
//------------------------------------------------------------------------------------------
// RemoveNodeCommand
class RemoveNodeCommand : public EditCommand
{
public:
RemoveNodeCommand(DOM::DocumentImpl *, DOM::NodeImpl *);
virtual ~RemoveNodeCommand();
virtual void doApply();
virtual void doUnapply();
DOM::NodeImpl *node() const { return m_removeChild; }
private:
DOM::NodeImpl *m_parent;
DOM::NodeImpl *m_removeChild;
DOM::NodeImpl *m_refChild;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -