亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jsediting.cpp

?? It is WEB browser core module with source code. Very good!
?? 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 "jsediting.h"

#include "cssproperties.h"
#include "htmlediting.h"
#include "khtml_part.h"
#include "qstring.h"
#include "selection.h"

#if APPLE_CHANGES
#include "KWQKHTMLPart.h"
#endif

using khtml::TypingCommand;

namespace DOM {

class DocumentImpl;

namespace {

bool supportsPasteCommand = false;

struct CommandImp {
    bool (*execFn)(KHTMLPart *part, bool userInterface, const DOMString &value);
    bool (*enabledFn)(KHTMLPart *part);
    KHTMLPart::TriState (*stateFn)(KHTMLPart *part);
    DOMString (*valueFn)(KHTMLPart *part);
};

QDict<CommandImp> createCommandDictionary();

const CommandImp *commandImp(const DOMString &command)
{
    static QDict<CommandImp> commandDictionary = createCommandDictionary();
    return commandDictionary.find(command.string());
}

} // anonymous namespace

bool JSEditor::execCommand(const DOMString &command, bool userInterface, const DOMString &value)
{
    const CommandImp *cmd = commandImp(command);
    if (!cmd)
        return false;
    KHTMLPart *part = m_doc->part();
    if (!part)
        return false;
    m_doc->updateLayout();
    return cmd->enabledFn(part) && cmd->execFn(part, userInterface, value);
}

bool JSEditor::queryCommandEnabled(const DOMString &command)
{
    const CommandImp *cmd = commandImp(command);
    if (!cmd)
        return false;
    KHTMLPart *part = m_doc->part();
    if (!part)
        return false;
    m_doc->updateLayout();
    return cmd->enabledFn(part);
}

bool JSEditor::queryCommandIndeterm(const DOMString &command)
{
    const CommandImp *cmd = commandImp(command);
    if (!cmd)
        return false;
    KHTMLPart *part = m_doc->part();
    if (!part)
        return false;
    m_doc->updateLayout();
    return cmd->stateFn(part) == KHTMLPart::mixedTriState;
}

bool JSEditor::queryCommandState(const DOMString &command)
{
    const CommandImp *cmd = commandImp(command);
    if (!cmd)
        return false;
    KHTMLPart *part = m_doc->part();
    if (!part)
        return false;
    m_doc->updateLayout();
    return cmd->stateFn(part) != KHTMLPart::falseTriState;
}

bool JSEditor::queryCommandSupported(const DOMString &command)
{
    if (!supportsPasteCommand && command.string().lower() == "paste")
        return false;
    return commandImp(command) != 0;
}

DOMString JSEditor::queryCommandValue(const DOMString &command)
{
    const CommandImp *cmd = commandImp(command);
    if (!cmd)
        return DOMString();
    KHTMLPart *part = m_doc->part();
    if (!part)
        return DOMString();
    m_doc->updateLayout();
    return cmd->valueFn(part);
}

void JSEditor::setSupportsPasteCommand(bool flag)
{
    supportsPasteCommand = flag;
}

// =============================================================================================

// Private stuff, all inside an anonymous namespace.

namespace {

bool execStyleChange(KHTMLPart *part, int propertyID, const DOMString &propertyValue)
{
    CSSMutableStyleDeclarationImpl *style = new CSSMutableStyleDeclarationImpl;
    style->setProperty(propertyID, propertyValue);
    style->ref();
    part->applyStyle(style);
    style->deref();
    return true;
}

bool execStyleChange(KHTMLPart *part, int propertyID, const char *propertyValue)
{
    return execStyleChange(part, propertyID, DOMString(propertyValue));
}

KHTMLPart::TriState stateStyle(KHTMLPart *part, int propertyID, const char *desiredValue)
{
    CSSMutableStyleDeclarationImpl *style = new CSSMutableStyleDeclarationImpl;
    style->setProperty(propertyID, desiredValue);
    style->ref();
    KHTMLPart::TriState state = part->selectionHasStyle(style);
    style->deref();
    return state;
}

bool selectionStartHasStyle(KHTMLPart *part, int propertyID, const char *desiredValue)
{
    CSSMutableStyleDeclarationImpl *style = new CSSMutableStyleDeclarationImpl;
    style->setProperty(propertyID, desiredValue);
    style->ref();
    bool hasStyle = part->selectionStartHasStyle(style);
    style->deref();
    return hasStyle;
}

DOMString valueStyle(KHTMLPart *part, int propertyID)
{
    return part->selectionStartStylePropertyValue(propertyID);
}

// =============================================================================================
//
// execCommand implementations
//

bool execBackColor(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_BACKGROUND_COLOR, value);
}

bool execBold(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    bool isBold = selectionStartHasStyle(part, CSS_PROP_FONT_WEIGHT, "bold");
    return execStyleChange(part, CSS_PROP_FONT_WEIGHT, isBold ? "normal" : "bold");
}

bool execCopy(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    part->copyToPasteboard();
    return true;
}

bool execCut(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    part->cutToPasteboard();
    return true;
}

bool execDelete(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    TypingCommand::deleteKeyPressed(part->xmlDocImpl(), part->selectionGranularity() == khtml::WORD);
    return true;
}

bool execForwardDelete(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    TypingCommand::forwardDeleteKeyPressed(part->xmlDocImpl());
    return true;
}

bool execFontName(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_FONT_FAMILY, value);
}

bool execFontSize(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_FONT_SIZE, value);
}

bool execFontSizeDelta(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP__KHTML_FONT_SIZE_DELTA, value);
}

bool execForeColor(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_COLOR, value);
}

bool execIndent(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    // FIXME: Implement.
    return false;
}

bool execInsertLineBreak(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    TypingCommand::insertLineBreak(part->xmlDocImpl());
    return true;
}

bool execInsertParagraph(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    TypingCommand::insertParagraphSeparator(part->xmlDocImpl());
    return true;
}

bool execInsertText(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    TypingCommand::insertText(part->xmlDocImpl(), value);
    return true;
}

bool execItalic(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    bool isItalic = selectionStartHasStyle(part, CSS_PROP_FONT_STYLE, "italic");
    return execStyleChange(part, CSS_PROP_FONT_STYLE, isItalic ? "normal" : "italic");
}

bool execJustifyCenter(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_TEXT_ALIGN, "center");
}

bool execJustifyFull(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_TEXT_ALIGN, "justify");
}

bool execJustifyLeft(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_TEXT_ALIGN, "left");
}

bool execJustifyRight(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    return execStyleChange(part, CSS_PROP_TEXT_ALIGN, "right");
}

bool execOutdent(KHTMLPart *part, bool userInterface, const DOMString &value)
{
    // FIXME: Implement.
    return false;
}

bool execPaste(KHTMLPart *part, bool userInterface, const DOMString &value)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国v精品久久久网| 国产一区二区三区精品欧美日韩一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 久久超碰97人人做人人爱| 国产精品国产三级国产aⅴ中文 | 欧美成人在线直播| 色8久久精品久久久久久蜜| 国产综合色在线视频区| 亚洲国产精品影院| 国产精品国产三级国产aⅴ原创 | 一区二区视频在线| 国产亚洲午夜高清国产拍精品| 欧美色图第一页| 成人app在线观看| 激情综合色综合久久综合| 亚洲r级在线视频| 成人欧美一区二区三区小说| 国产清纯白嫩初高生在线观看91| 日韩亚洲欧美在线观看| 欧美日韩美少妇| 91国偷自产一区二区开放时间| 国产伦精品一区二区三区视频青涩 | 亚洲女人的天堂| 中文一区在线播放| 2021中文字幕一区亚洲| 在线观看91精品国产麻豆| 在线观看一区日韩| av在线播放一区二区三区| 国产另类ts人妖一区二区| 久久aⅴ国产欧美74aaa| 免费在线欧美视频| 日韩精品视频网| 日韩不卡手机在线v区| 三级久久三级久久| 亚州成人在线电影| 婷婷夜色潮精品综合在线| 亚洲午夜一区二区三区| 一区二区三区在线观看视频| 一区在线观看视频| 日韩理论在线观看| 亚洲欧美日韩在线| 亚洲综合在线观看视频| 亚洲精品美国一| 亚洲激情欧美激情| 午夜精品久久久久久久久久| 香蕉久久夜色精品国产使用方法| 亚洲国产毛片aaaaa无费看| 亚洲国产日日夜夜| 视频一区在线播放| 麻豆免费看一区二区三区| 久久99精品国产91久久来源| 韩国午夜理伦三级不卡影院| 国产精品一二三四| 成人av午夜电影| 一本大道久久a久久综合婷婷 | 色婷婷综合五月| 在线观看91视频| 91精品国产综合久久久久久久 | 久久久久99精品国产片| 欧美激情一区二区三区四区| 中文字幕一区二区三区视频| 亚洲免费观看高清完整版在线观看 | 97精品久久久久中文字幕 | 91亚洲永久精品| 欧美亚洲日本国产| 日韩欧美在线网站| 国产色91在线| 亚洲免费观看高清完整版在线观看| 亚洲高清免费视频| 色婷婷综合五月| 日韩一区二区三免费高清| 国产欧美一区二区三区沐欲| 亚洲欧美日韩小说| 理论电影国产精品| 欧美tickling网站挠脚心| 91猫先生在线| 欧美四级电影在线观看| 精品国产污污免费网站入口| 久久人人97超碰com| 偷拍与自拍一区| 国内偷窥港台综合视频在线播放| 懂色av一区二区在线播放| 色综合中文字幕| 日韩欧美精品在线视频| 综合色天天鬼久久鬼色| 日韩av高清在线观看| 久久99最新地址| 欧美亚洲动漫精品| 欧美国产在线观看| 青娱乐精品视频在线| 成人国产精品免费观看动漫| 欧美日韩一区不卡| 日本一区二区电影| 日韩二区三区四区| 91蜜桃网址入口| 精品少妇一区二区三区视频免付费 | 欧美午夜影院一区| 26uuu国产一区二区三区| 亚洲男人的天堂av| 国产寡妇亲子伦一区二区| 欧美日韩视频一区二区| 国产精品―色哟哟| 奇米影视一区二区三区| 色域天天综合网| 国产欧美日韩视频在线观看| 日欧美一区二区| 日本韩国一区二区三区| 中文字幕高清一区| 精品一区二区三区久久| 欧美日本国产一区| 亚洲欧美区自拍先锋| 国产凹凸在线观看一区二区| 欧美一二三区精品| 亚洲高清中文字幕| 在线观看日韩av先锋影音电影院| 亚洲国产精品二十页| 久草中文综合在线| 91精品国产手机| 亚洲国产日韩a在线播放性色| 99久久久久久| 中文乱码免费一区二区| 国产毛片精品一区| 欧美精品一区二区久久久| 天天影视网天天综合色在线播放| 色噜噜狠狠色综合中国| 亚洲欧洲精品天堂一级| 成人一级片在线观看| 国产日韩欧美麻豆| 国产综合久久久久久鬼色| 精品欧美一区二区久久| 蜜芽一区二区三区| 91精品啪在线观看国产60岁| 午夜精品久久久久久| 欧美日韩一区精品| 亚洲国产综合91精品麻豆| 在线观看视频欧美| 亚洲一级片在线观看| 欧美在线你懂得| 亚欧色一区w666天堂| 欧美日韩情趣电影| 青青草国产成人av片免费| 日韩久久久精品| 麻豆精品久久久| 亚洲精品在线免费播放| 黄网站免费久久| 久久精品亚洲国产奇米99| 成人天堂资源www在线| 中文字幕不卡三区| 99久久免费国产| 亚洲精品v日韩精品| 欧美日韩国产综合一区二区| 天天爽夜夜爽夜夜爽精品视频| 欧美肥妇毛茸茸| 久久精品国产精品亚洲红杏| 精品精品国产高清一毛片一天堂| 国产美女久久久久| 国产精品成人在线观看| 日本韩国一区二区三区| 日韩和欧美一区二区三区| 精品欧美黑人一区二区三区| 国产美女精品人人做人人爽| 日韩毛片一二三区| 欧美日韩一区二区在线观看视频 | 日日夜夜免费精品| 日韩一级成人av| 国产91精品精华液一区二区三区| 中文字幕一区二区三区在线播放| 在线观看视频91| 国产在线播精品第三| 国产精品国产成人国产三级| 欧洲视频一区二区| 麻豆精品精品国产自在97香蕉| 国产精品素人视频| 欧美日韩亚洲另类| 国产91露脸合集magnet| 一区二区三区色| 精品免费日韩av| 一本久久精品一区二区| 麻豆精品国产91久久久久久| 中文一区在线播放| 337p亚洲精品色噜噜噜| 国v精品久久久网| 天天影视色香欲综合网老头| 国产精品欧美一区喷水| 欧美剧情片在线观看| 国产91精品一区二区| 奇米影视7777精品一区二区| √…a在线天堂一区| 日韩亚洲欧美中文三级| 色综合视频一区二区三区高清| 久久成人免费电影| 亚洲小说欧美激情另类| 日本一区二区免费在线| 9191精品国产综合久久久久久| 粉嫩蜜臀av国产精品网站| 日韩精品视频网| 亚洲一区二区三区在线播放| 青青草视频一区| 一区二区在线免费| 国产欧美一区二区三区沐欲|