コード例 #1
0
ファイル: callbacks.c プロジェクト: phddoom/uzbl
void
dom_blur_cb(WebKitDOMEventTarget *target, WebKitDOMEvent *event, gpointer user_data) {
    (void) target; (void) user_data;
    WebKitDOMEventTarget *etarget = webkit_dom_event_get_target (event);
    gchar* name = webkit_dom_node_get_node_name (WEBKIT_DOM_NODE (etarget));
    send_event (BLUR_ELEMENT, NULL, TYPE_STR, name, NULL);
}
コード例 #2
0
ファイル: dom.c プロジェクト: b80905/vimb
static gboolean editable_focus_cb(Element *element, Event *event)
{
    if (vb.state.done_loading_page || !vb.config.strict_focus) {
        auto_insert((Element*)webkit_dom_event_get_target(event));
    }

    return false;
}
コード例 #3
0
ファイル: dom.c プロジェクト: uggedal/vimb
static gboolean editable_focus_cb(Element *element, Event *event)
{
    webkit_dom_event_target_remove_event_listener(
        WEBKIT_DOM_EVENT_TARGET(element), "focus", G_CALLBACK(editable_focus_cb), false
    );
    if (vb.mode->id != 'i') {
        EventTarget *target = webkit_dom_event_get_target(event);
        auto_insert((void*)target);
    }
    return false;
}
コード例 #4
0
ファイル: libgolem.c プロジェクト: tkerber/golem
// adblock_before_load_cb is triggered when 
static void
adblock_before_load_cb(WebKitDOMEventTarget *doc,
                       WebKitDOMEvent       *event,
                       gpointer              user_data)
{
    WebKitDOMEventTarget *target = webkit_dom_event_get_target(event);

    guint64 flags = 0;
    gchar *uri = NULL;
    if(WEBKIT_DOM_IS_HTML_LINK_ELEMENT(target)) {
        WebKitDOMHTMLLinkElement *e = WEBKIT_DOM_HTML_LINK_ELEMENT(target);
        gboolean isCSS = 0;
        isCSS |= g_strcmp0(
                webkit_dom_html_link_element_get_rel(e),
                "stylesheet") == 0;
        isCSS |= g_strcmp0(
                webkit_dom_html_link_element_get_type_attr(e),
                "text/css") == 0;
        if(!isCSS) {
            return;
        }
        uri = webkit_dom_html_link_element_get_href(e);
        flags |= ADBLOCK_STYLE_SHEET;
    } else if(WEBKIT_DOM_IS_HTML_OBJECT_ELEMENT(target)) {
        WebKitDOMHTMLObjectElement *e = WEBKIT_DOM_HTML_OBJECT_ELEMENT(target);
        uri = webkit_dom_html_object_element_get_data(e);
        flags |= ADBLOCK_OBJECT;
    } else if(WEBKIT_DOM_IS_HTML_EMBED_ELEMENT(target)) {
        WebKitDOMHTMLEmbedElement *e = WEBKIT_DOM_HTML_EMBED_ELEMENT(target);
        uri = webkit_dom_html_embed_element_get_src(e);
        flags |= ADBLOCK_OBJECT;
    } else if(WEBKIT_DOM_IS_HTML_IMAGE_ELEMENT(target)) {
        WebKitDOMHTMLImageElement *e = WEBKIT_DOM_HTML_IMAGE_ELEMENT(target);
        uri = webkit_dom_html_image_element_get_src(e);
        flags |= ADBLOCK_IMAGE;
    } else if(WEBKIT_DOM_IS_HTML_SCRIPT_ELEMENT(target)) {
        WebKitDOMHTMLScriptElement *e = WEBKIT_DOM_HTML_SCRIPT_ELEMENT(target);
        uri = webkit_dom_html_script_element_get_src(e);
        flags |= ADBLOCK_SCRIPT;
    } else if(WEBKIT_DOM_IS_HTML_IFRAME_ELEMENT(target)) {
        WebKitDOMHTMLIFrameElement *e = WEBKIT_DOM_HTML_IFRAME_ELEMENT(target);
        uri = webkit_dom_html_iframe_element_get_src(e);
        flags |= ADBLOCK_SUBDOCUMENT;
        if(uri_is_blocked(uri, flags, user_data)) {
            webkit_dom_event_prevent_default(event);
        } else {
            frame_document_loaded(
                    webkit_dom_html_iframe_element_get_content_document(e),
                    user_data);
        }
        g_free(uri);
        return;
    }
    if(uri == NULL) {
        return;
    }
    if(uri_is_blocked(uri, flags, user_data)) {
        webkit_dom_event_prevent_default(event);
    }
    g_free(uri);
}