⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlediting.cpp

📁 khtml在gtk上的移植版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */#include "htmlediting.h"#include "htmlediting_impl.h"#include "khtml_part.h"#include "dom/dom_doc.h"#include "dom/dom_position.h"#include "xml/dom_docimpl.h"#include "xml/dom_nodeimpl.h"#include "xml/dom_selection.h"#include "xml/dom_textimpl.h"#if APPLE_CHANGES#include "KWQAssertions.h"#include "KWQLogging.h"#endifusing DOM::CSSStyleDeclarationImpl;using DOM::DocumentImpl;using DOM::ElementImpl;using DOM::Position;using DOM::DOMString;using DOM::NodeImpl;using DOM::NodeListImpl;using DOM::Selection;using DOM::TextImpl;#define IF_IMPL_NULL_RETURN_ARG(arg) do { \        if (isNull()) { return arg; } \    } while (0)        #define IF_IMPL_NULL_RETURN do { \        if (isNull()) { return; } \    } while (0)namespace khtml {//------------------------------------------------------------------------------------------// EditCommandEditCommand::EditCommand() : SharedPtr<SharedCommandImpl>(){}EditCommand::EditCommand(EditCommandImpl *impl) : SharedPtr<SharedCommandImpl>(impl){}EditCommand::EditCommand(const EditCommand &o) : SharedPtr<SharedCommandImpl>(o.get()){}EditCommand::~EditCommand(){}int EditCommand::commandID() const{    IF_IMPL_NULL_RETURN_ARG(0);            return get()->commandID();}bool EditCommand::isCompositeStep() const{    IF_IMPL_NULL_RETURN_ARG(false);            return get()->isCompositeStep();}bool EditCommand::isNull() const{    return get() == 0;}bool EditCommand::notNull() const{    return !isNull();}void EditCommand::apply(){    IF_IMPL_NULL_RETURN;    get()->apply();}void EditCommand::unapply(){    IF_IMPL_NULL_RETURN;    get()->unapply();}void EditCommand::reapply(){    IF_IMPL_NULL_RETURN;    get()->reapply();}DocumentImpl * const EditCommand::document() const{    IF_IMPL_NULL_RETURN_ARG(0);    return get()->document();}Selection EditCommand::startingSelection() const{    IF_IMPL_NULL_RETURN_ARG(Selection());    return get()->startingSelection();}Selection EditCommand::endingSelection() const{    IF_IMPL_NULL_RETURN_ARG(Selection());    return get()->endingSelection();}void EditCommand::setStartingSelection(const Selection &s){    IF_IMPL_NULL_RETURN;    get()->setStartingSelection(s);}void EditCommand::setEndingSelection(const Selection &s){    IF_IMPL_NULL_RETURN;    get()->setEndingSelection(s);}EditCommand EditCommand::parent() const{    IF_IMPL_NULL_RETURN_ARG(0);    return get()->parent();}void EditCommand::setParent(const EditCommand &cmd){    IF_IMPL_NULL_RETURN;    get()->setParent(cmd);}EditCommandImpl *EditCommand::handle() const{    return static_cast<EditCommandImpl *>(get());}EditCommand &EditCommand::emptyCommand(){    static EditCommand m_emptyCommand;    return m_emptyCommand;}//------------------------------------------------------------------------------------------// CompositeEditCommandCompositeEditCommand::CompositeEditCommand() : EditCommand() {}CompositeEditCommand::CompositeEditCommand(CompositeEditCommandImpl *impl) : EditCommand(impl) {}CompositeEditCommand::CompositeEditCommand(const CompositeEditCommand &o)     : EditCommand(o.impl()) {}CompositeEditCommand::~CompositeEditCommand(){}CompositeEditCommandImpl *CompositeEditCommand::impl() const{    return static_cast<CompositeEditCommandImpl *>(get());}//==========================================================================================// Concrete commands//------------------------------------------------------------------------------------------// AppendNodeCommandAppendNodeCommand::AppendNodeCommand(DocumentImpl *document, NodeImpl *parentNode, NodeImpl *appendChild)    : EditCommand(new AppendNodeCommandImpl(document, parentNode, appendChild)){}AppendNodeCommand::~AppendNodeCommand(){}AppendNodeCommandImpl *AppendNodeCommand::impl() const{    return static_cast<AppendNodeCommandImpl *>(get());}NodeImpl *AppendNodeCommand::parentNode() const{    IF_IMPL_NULL_RETURN_ARG(0);    return impl()->parentNode();}NodeImpl *AppendNodeCommand::appendChild() const{    IF_IMPL_NULL_RETURN_ARG(0);    return impl()->appendChild();}//------------------------------------------------------------------------------------------// ApplyStyleCommandApplyStyleCommand::ApplyStyleCommand(DocumentImpl *document, CSSStyleDeclarationImpl *style)    : CompositeEditCommand(new ApplyStyleCommandImpl(document, style)){}ApplyStyleCommand::~ApplyStyleCommand(){}ApplyStyleCommandImpl *ApplyStyleCommand::impl() const{    return static_cast<ApplyStyleCommandImpl *>(get());}CSSStyleDeclarationImpl *ApplyStyleCommand::style() const{    IF_IMPL_NULL_RETURN_ARG(0);    return impl()->style();}//------------------------------------------------------------------------------------------// DeleteCollapsibleWhitespaceCommandDeleteCollapsibleWhitespaceCommand::DeleteCollapsibleWhitespaceCommand(DocumentImpl *document)    : CompositeEditCommand(new DeleteCollapsibleWhitespaceCommandImpl(document)){}DeleteCollapsibleWhitespaceCommand::DeleteCollapsibleWhitespaceCommand(DocumentImpl *document, const Selection &selection)    : CompositeEditCommand(new DeleteCollapsibleWhitespaceCommandImpl(document, selection)){}DeleteCollapsibleWhitespaceCommand::~DeleteCollapsibleWhitespaceCommand(){}	DeleteCollapsibleWhitespaceCommandImpl *DeleteCollapsibleWhitespaceCommand::impl() const{    return static_cast<DeleteCollapsibleWhitespaceCommandImpl *>(get());}//------------------------------------------------------------------------------------------// DeleteSelectionCommandDeleteSelectionCommand::DeleteSelectionCommand(DocumentImpl *document)    : CompositeEditCommand(new DeleteSelectionCommandImpl(document)){}DeleteSelectionCommand::DeleteSelectionCommand(DocumentImpl *document, const Selection &selection)    : CompositeEditCommand(new DeleteSelectionCommandImpl(document, selection)){}DeleteSelectionCommand::~DeleteSelectionCommand(){}	DeleteSelectionCommandImpl *DeleteSelectionCommand::impl() const{    return static_cast<DeleteSelectionCommandImpl *>(get());}//------------------------------------------------------------------------------------------// DeleteTextCommandDeleteTextCommand::DeleteTextCommand(DocumentImpl *document, TextImpl *node, long offset, long count)    : EditCommand(new DeleteTextCommandImpl(document, node, offset, count)){}DeleteTextCommand::DeleteTextCommand(const DeleteTextCommand &o)    : EditCommand(o.impl()){}DeleteTextCommand::~DeleteTextCommand(){}DeleteTextCommandImpl *DeleteTextCommand::impl() const{    return static_cast<DeleteTextCommandImpl *>(get());}TextImpl *DeleteTextCommand::node() const{    IF_IMPL_NULL_RETURN_ARG(0);    return impl()->node();}long DeleteTextCommand::offset() const{    IF_IMPL_NULL_RETURN_ARG(0);    return impl()->offset();}long DeleteTextCommand::count() const{    IF_IMPL_NULL_RETURN_ARG(0);    return impl()->count();}//------------------------------------------------------------------------------------------// InputNewlineCommandInputNewlineCommand::InputNewlineCommand(DocumentImpl *document)     : CompositeEditCommand(new InputNewlineCommandImpl(document)){}InputNewlineCommand::~InputNewlineCommand() {}InputNewlineCommandImpl *InputNewlineCommand::impl() const{    return static_cast<InputNewlineCommandImpl *>(get());}//------------------------------------------------------------------------------------------// InputTextCommandInputTextCommand::InputTextCommand(DocumentImpl *document)     : CompositeEditCommand(new InputTextCommandImpl(document)){}InputTextCommand::~InputTextCommand() {}InputTextCommandImpl *InputTextCommand::impl() const{    return static_cast<InputTextCommandImpl *>(get());}void InputTextCommand::deleteCharacter(){    IF_IMPL_NULL_RETURN;    impl()->deleteCharacter();}void InputTextCommand::input(const DOM::DOMString &text){    IF_IMPL_NULL_RETURN;    impl()->input(text);}unsigned long InputTextCommand::charactersAdded() const{    IF_IMPL_NULL_RETURN_ARG(0);    return impl()->charactersAdded();}//------------------------------------------------------------------------------------------// InsertNodeBeforeCommandInsertNodeBeforeCommand::InsertNodeBeforeCommand() : EditCommand(){}InsertNodeBeforeCommand::InsertNodeBeforeCommand(DocumentImpl *document, NodeImpl *insertChild, NodeImpl *refChild)    : EditCommand(new InsertNodeBeforeCommandImpl(document, insertChild, refChild)){}InsertNodeBeforeCommand::InsertNodeBeforeCommand(const InsertNodeBeforeCommand &o)    : EditCommand(new InsertNodeBeforeCommandImpl(o.document(), o.insertChild(), o.refChild())){}InsertNodeBeforeCommand::~InsertNodeBeforeCommand(){}InsertNodeBeforeCommandImpl *InsertNodeBeforeCommand::impl() const{    return static_cast<InsertNodeBeforeCommandImpl *>(get());}NodeImpl *InsertNodeBeforeCommand::insertChild() const{    IF_IMPL_NULL_RETURN_ARG(0);            return impl()->insertChild();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -