Пример #1
0
Файл: dom.c Проект: b80905/vimb
void dom_install_focus_blur_callbacks(Document *doc)
{
    HtmlElement *element = webkit_dom_document_get_body(doc);

    if (!element) {
        element = WEBKIT_DOM_HTML_ELEMENT(webkit_dom_document_get_document_element(doc));
    }
    if (element) {
        webkit_dom_event_target_add_event_listener(
            WEBKIT_DOM_EVENT_TARGET(element), "blur", G_CALLBACK(editable_blur_cb), true, NULL
        );
        webkit_dom_event_target_add_event_listener(
            WEBKIT_DOM_EVENT_TARGET(element), "focus", G_CALLBACK(editable_focus_cb), true, NULL
        );
    }
}
Пример #2
0
/**
 * Callback called when the document is scrolled.
 */
static void on_document_scroll(WebKitDOMEventTarget *target, WebKitDOMEvent *event,
        WebKitWebPage *page)
{
    WebKitDOMDocument *doc;

    if (WEBKIT_DOM_IS_DOM_WINDOW(target)) {
        g_object_get(target, "document", &doc, NULL);
    } else {
        /* target is a doc document */
        doc = WEBKIT_DOM_DOCUMENT(target);
    }

    if (doc) {
        WebKitDOMElement *body, *de;
        glong max = 0, scrollTop, scrollHeight, clientHeight;
        guint percent = 0;

        de = webkit_dom_document_get_document_element(doc);
        if (!de) {
            return;
        }

        body = WEBKIT_DOM_ELEMENT(webkit_dom_document_get_body(doc));
        if (!body) {
            return;
        }

        scrollTop = webkit_dom_element_get_scroll_top(body);
        if (scrollTop) {
            clientHeight = webkit_dom_element_get_client_height(WEBKIT_DOM_ELEMENT(de));
            scrollHeight = webkit_dom_element_get_scroll_height(body);

            /* Get the maximum scrollable page size. This is the size of the whole
            * document - height of the viewport. */
            max = scrollHeight - clientHeight ;
            if (max) {
                percent = (guint)(0.5 + (scrollTop * 100 / max));
            }
        }

        dbus_emit_signal("VerticalScroll", g_variant_new("(ttq)",
                    webkit_web_page_get_id(page), max, percent));
    }
}
Пример #3
0
Файл: dom.c Проект: uggedal/vimb
void dom_check_auto_insert(WebKitWebView *view)
{
    Document *doc   = webkit_web_view_get_dom_document(view);
    Element *active = get_active_element(doc);

    if (vb.config.strict_focus || !auto_insert(active)) {
        /* if the strict-focus is on also blur the possible active element */
        if (vb.config.strict_focus) {
            dom_clear_focus(view);
        }
        /* the focus was not set automatically - add event listener to track
         * focus events on the document */
        HtmlElement *element = webkit_dom_document_get_body(doc);
        if (!element) {
            element = WEBKIT_DOM_HTML_ELEMENT(webkit_dom_document_get_document_element(doc));
        }
        webkit_dom_event_target_add_event_listener(
            WEBKIT_DOM_EVENT_TARGET(element), "focus", G_CALLBACK(editable_focus_cb), false, NULL
        );
    }
}