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

📄 accessibilityobjectwrapperatk.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        extents = core(text)->document()->view()->contentsToScreen(extents);        break;    case ATK_XY_WINDOW:        // No-op        break;    }#endif    *x = extents.x();    *y = extents.y();    *width = extents.width();    *height = extents.height();}static gint webkit_accessible_text_get_character_count(AtkText* text){    return core(text)->textLength();}static gint webkit_accessible_text_get_offset_at_point(AtkText* text, gint x, gint y, AtkCoordType coords){    // FIXME: Use the AtkCoordType    // TODO: Is it correct to ignore range.length?    IntPoint pos(x, y);    PlainTextRange range = core(text)->doAXRangeForPosition(pos);    return range.start;}static gint webkit_accessible_text_get_n_selections(AtkText* text){    notImplemented();    return 0;}static gchar* webkit_accessible_text_get_selection(AtkText* text, gint selection_num, gint* start_offset, gint* end_offset){    notImplemented();    return NULL;}static gboolean webkit_accessible_text_add_selection(AtkText* text, gint start_offset, gint end_offset){    notImplemented();    return FALSE;}static gboolean webkit_accessible_text_remove_selection(AtkText* text, gint selection_num){    notImplemented();    return FALSE;}static gboolean webkit_accessible_text_set_selection(AtkText* text, gint selection_num, gint start_offset, gint end_offset){    notImplemented();    return FALSE;}static gboolean webkit_accessible_text_set_caret_offset(AtkText* text, gint offset){    // TODO: Verify    //core(text)->setSelectedTextRange(PlainTextRange(offset, 0));    AccessibilityObject* coreObject = core(text);    coreObject->setSelectedVisiblePositionRange(coreObject->visiblePositionRangeForRange(PlainTextRange(offset, 0)));    return TRUE;}#if 0// Signal handlersstatic void webkit_accessible_text_text_changed(AtkText* text, gint position, gint length){}static void webkit_accessible_text_text_caret_moved(AtkText* text, gint location){}static void webkit_accessible_text_text_selection_changed(AtkText* text){}static void webkit_accessible_text_text_attributes_changed(AtkText* text){}static void webkit_accessible_text_get_range_extents(AtkText* text, gint start_offset, gint end_offset, AtkCoordType coord_type, AtkTextRectangle* rect){}static AtkTextRange** webkit_accessible_text_get_bounded_ranges(AtkText* text, AtkTextRectangle* rect, AtkCoordType coord_type, AtkTextClipType x_clip_type, AtkTextClipType y_clip_type){}#endifstatic void atk_text_interface_init(AtkTextIface* iface){    g_return_if_fail(iface);    iface->get_text = webkit_accessible_text_get_text;    iface->get_text_after_offset = webkit_accessible_text_get_text_after_offset;    iface->get_text_at_offset = webkit_accessible_text_get_text_at_offset;    iface->get_character_at_offset = webkit_accessible_text_get_character_at_offset;    iface->get_text_before_offset = webkit_accessible_text_get_text_before_offset;    iface->get_caret_offset = webkit_accessible_text_get_caret_offset;    iface->get_run_attributes = webkit_accessible_text_get_run_attributes;    iface->get_default_attributes = webkit_accessible_text_get_default_attributes;    iface->get_character_extents = webkit_accessible_text_get_character_extents;    //iface->get_range_extents = ;    iface->get_character_count = webkit_accessible_text_get_character_count;    iface->get_offset_at_point = webkit_accessible_text_get_offset_at_point;    iface->get_n_selections = webkit_accessible_text_get_n_selections;    iface->get_selection = webkit_accessible_text_get_selection;    // set methods    iface->add_selection = webkit_accessible_text_add_selection;    iface->remove_selection = webkit_accessible_text_remove_selection;    iface->set_selection = webkit_accessible_text_set_selection;    iface->set_caret_offset = webkit_accessible_text_set_caret_offset;}// EditableTextstatic gboolean webkit_accessible_editable_text_set_run_attributes(AtkEditableText* text, AtkAttributeSet* attrib_set, gint start_offset, gint end_offset){    notImplemented();    return FALSE;}static void webkit_accessible_editable_text_set_text_contents(AtkEditableText* text, const gchar* string){    // FIXME: string nullcheck?    core(text)->setValue(String::fromUTF8(string));}static void webkit_accessible_editable_text_insert_text(AtkEditableText* text, const gchar* string, gint length, gint* position){    // FIXME: string nullcheck?    AccessibilityObject* coreObject = core(text);    // FIXME: Not implemented in WebCore    //coreObject->setSelectedTextRange(PlainTextRange(*position, 0));    //coreObject->setSelectedText(String::fromUTF8(string));    if (!coreObject->document() || !coreObject->document()->frame())        return;    coreObject->setSelectedVisiblePositionRange(coreObject->visiblePositionRangeForRange(PlainTextRange(*position, 0)));    coreObject->setFocused(true);    // FIXME: We should set position to the actual inserted text length, which may be less than that requested.    if (coreObject->document()->frame()->editor()->insertTextWithoutSendingTextEvent(String::fromUTF8(string), false, 0))        *position += length;}static void webkit_accessible_editable_text_copy_text(AtkEditableText* text, gint start_pos, gint end_pos){    notImplemented();}static void webkit_accessible_editable_text_cut_text(AtkEditableText* text, gint start_pos, gint end_pos){    notImplemented();}static void webkit_accessible_editable_text_delete_text(AtkEditableText* text, gint start_pos, gint end_pos){    AccessibilityObject* coreObject = core(text);    // FIXME: Not implemented in WebCore    //coreObject->setSelectedTextRange(PlainTextRange(start_pos, end_pos - start_pos));    //coreObject->setSelectedText(String());    if (!coreObject->document() || !coreObject->document()->frame())        return;    coreObject->setSelectedVisiblePositionRange(coreObject->visiblePositionRangeForRange(PlainTextRange(start_pos, end_pos - start_pos)));    coreObject->setFocused(true);    coreObject->document()->frame()->editor()->performDelete();}static void webkit_accessible_editable_text_paste_text(AtkEditableText* text, gint position){    notImplemented();}static void atk_editable_text_interface_init(AtkEditableTextIface* iface){    g_return_if_fail(iface);    iface->set_run_attributes = webkit_accessible_editable_text_set_run_attributes;    iface->set_text_contents = webkit_accessible_editable_text_set_text_contents;    iface->insert_text = webkit_accessible_editable_text_insert_text;    iface->copy_text = webkit_accessible_editable_text_copy_text;    iface->cut_text = webkit_accessible_editable_text_cut_text;    iface->delete_text = webkit_accessible_editable_text_delete_text;    iface->paste_text = webkit_accessible_editable_text_paste_text;}// StreamableContentstatic gint webkit_accessible_streamable_content_get_n_mime_types(AtkStreamableContent* streamable){    notImplemented();    return 0;}static G_CONST_RETURN gchar* webkit_accessible_streamable_content_get_mime_type(AtkStreamableContent* streamable, gint i){    notImplemented();    return "";}static GIOChannel* webkit_accessible_streamable_content_get_stream(AtkStreamableContent* streamable, const gchar* mime_type){    notImplemented();    return NULL;}static G_CONST_RETURN gchar* webkit_accessible_streamable_content_get_uri(AtkStreamableContent* streamable, const gchar* mime_type){    notImplemented();    return NULL;}static void atk_streamable_content_interface_init(AtkStreamableContentIface* iface){    g_return_if_fail(iface);    iface->get_n_mime_types = webkit_accessible_streamable_content_get_n_mime_types;    iface->get_mime_type = webkit_accessible_streamable_content_get_mime_type;    iface->get_stream = webkit_accessible_streamable_content_get_stream;    iface->get_uri = webkit_accessible_streamable_content_get_uri;}GType webkit_accessible_get_type(){    static GType type = 0;    if (!type) {        static const GTypeInfo tinfo = {            sizeof(WebKitAccessibleClass),            (GBaseInitFunc)NULL,            (GBaseFinalizeFunc)NULL,            (GClassInitFunc)webkit_accessible_class_init,            (GClassFinalizeFunc)NULL,            NULL, /* class data */            sizeof(WebKitAccessible), /* instance size */            0, /* nb preallocs */            (GInstanceInitFunc)NULL,            NULL /* value table */        };        type = g_type_register_static(ATK_TYPE_OBJECT, "WebKitAccessible", &tinfo, static_cast<GTypeFlags>(0));        // TODO: Only implement interfaces when necessary, not for all objects.        static const GInterfaceInfo atk_action_info =        {            (GInterfaceInitFunc) atk_action_interface_init,            (GInterfaceFinalizeFunc) NULL,            NULL        };        g_type_add_interface_static(type, ATK_TYPE_ACTION, &atk_action_info);        static const GInterfaceInfo atk_text_info =        {            (GInterfaceInitFunc) atk_text_interface_init,            (GInterfaceFinalizeFunc) NULL,            NULL        };        g_type_add_interface_static(type, ATK_TYPE_TEXT, &atk_text_info);        static const GInterfaceInfo atk_editable_text_info =        {            (GInterfaceInitFunc) atk_editable_text_interface_init,            (GInterfaceFinalizeFunc) NULL,            NULL        };        g_type_add_interface_static(type, ATK_TYPE_EDITABLE_TEXT, &atk_editable_text_info);        static const GInterfaceInfo atk_streamable_content_info =        {            (GInterfaceInitFunc) atk_streamable_content_interface_init,            (GInterfaceFinalizeFunc) NULL,            NULL        };        g_type_add_interface_static(type, ATK_TYPE_STREAMABLE_CONTENT, &atk_streamable_content_info);    }    return type;}WebKitAccessible* webkit_accessible_new(AccessibilityObject* coreObject){    GType type = WEBKIT_TYPE_ACCESSIBLE;    AtkObject* object = static_cast<AtkObject*>(g_object_new(type, NULL));    atk_object_initialize(object, coreObject);    return WEBKIT_ACCESSIBLE(object);}AccessibilityObject* webkit_accessible_get_accessibility_object(WebKitAccessible* accessible){    return accessible->m_object;}// FIXME: Remove this static initialization.static AXObjectCache* fallbackCache = new AXObjectCache();void webkit_accessible_detach(WebKitAccessible* accessible){    ASSERT(accessible->m_object);    // We replace the WebCore AccessibilityObject with a fallback object that    // provides default implementations to avoid repetitive null-checking after    // detachment.    // FIXME: Using fallbackCache->get(ListBoxOptionRole) is a hack.    accessible->m_object = fallbackCache->getOrCreate(ListBoxOptionRole);}}namespace WebCore {// AccessibilityObject implementationsAccessibilityObjectWrapper* AccessibilityObject::wrapper() const{    return m_wrapper;}void AccessibilityObject::setWrapper(AccessibilityObjectWrapper* wrapper){    if (m_wrapper)        g_object_unref(m_wrapper);    m_wrapper = wrapper;    if (m_wrapper)        g_object_ref(m_wrapper);}} // namespace WebCore#endif // HAVE(ACCESSIBILITY)

⌨️ 快捷键说明

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