void plugins_create_click_element(WebKitDOMElement *element, GList *gl) { WebKitDOMNode *parent = webkit_dom_node_get_parent_node(WEBKIT_DOM_NODE(element)); View *v = VIEW(gl); WebKitDOMElement *div; if (parent == NULL) return; WebKitDOMDocument *doc = webkit_dom_node_get_owner_document(WEBKIT_DOM_NODE(element)); WebKitDOMDOMWindow *win = webkit_dom_document_get_default_view(doc); WebKitDOMCSSStyleDeclaration *style = webkit_dom_dom_window_get_computed_style(win, element, ""); char *width = webkit_dom_css_style_declaration_get_property_value(style, "width"); char *height = webkit_dom_css_style_declaration_get_property_value(style, "height"); char *top = webkit_dom_css_style_declaration_get_property_value(style, "top"); char *left = webkit_dom_css_style_declaration_get_property_value(style, "left"); char *position = webkit_dom_css_style_declaration_get_property_value(style, "position"); int w, h; if (sscanf(width, "%dpx", &w) == 1 && w<72) w = 72; if (sscanf(height, "%dpx", &h) == 1 && h<24) h = 24; if (v->plugins->max <= v->plugins->created) { div = webkit_dom_document_create_element(doc, "div", NULL); v->plugins->clicks = g_slist_prepend(v->plugins->clicks, div); v->plugins->max++; } else div = g_slist_nth_data(v->plugins->clicks, v->plugins->created); webkit_dom_html_element_set_inner_html(WEBKIT_DOM_HTML_ELEMENT(div), "<div style='display:table-cell;vertical-align:middle;text-align:center;color:#fff;background:#000;border:1px solid #666;font:11px monospace bold'>click to enable flash</div>", NULL); char *new_style = g_strdup_printf("position:%s;width:%dpx;height:%dpx;top:%s;left:%s;display:table;z-index:37000;", position, w, h, top, left); webkit_dom_element_set_attribute(div, "style", new_style, NULL); g_free(new_style); webkit_dom_element_set_attribute(div, "onclick", "return", NULL); g_object_set_data((gpointer)div, "dwb-plugin-element", element); webkit_dom_node_remove_child(parent, WEBKIT_DOM_NODE(element), NULL); webkit_dom_node_append_child(parent, WEBKIT_DOM_NODE(div), NULL); v->plugins->elements = g_slist_prepend(v->plugins->elements, element); webkit_dom_event_target_add_event_listener(WEBKIT_DOM_EVENT_TARGET(div), "click", G_CALLBACK(plugins_onclick_cb), true, gl); g_object_unref(style); g_object_unref(parent); v->plugins->created++; }
static gboolean element_is_visible(WebKitDOMDOMWindow* win, WebKitDOMElement* element) { gchar* value = NULL; WebKitDOMCSSStyleDeclaration* style = webkit_dom_dom_window_get_computed_style(win, element, ""); value = webkit_dom_css_style_declaration_get_property_value(style, "visibility"); if (value && g_ascii_strcasecmp(value, "hidden") == 0) { return false; } value = webkit_dom_css_style_declaration_get_property_value(style, "display"); if (value && g_ascii_strcasecmp(value, "none") == 0) { return false; } return true; }
const gchar * e_editor_selection_get_font_name (EEditorSelection *selection) { WebKitDOMNode *node; WebKitDOMRange *range; WebKitDOMCSSStyleDeclaration *css; g_return_val_if_fail (E_IS_EDITOR_SELECTION (selection), NULL); range = editor_selection_get_current_range (selection); node = webkit_dom_range_get_common_ancestor_container (range, NULL); g_free (selection->priv->font_family); css = webkit_dom_element_get_style (WEBKIT_DOM_ELEMENT (node)); selection->priv->font_family = webkit_dom_css_style_declaration_get_property_value (css, "fontFamily"); return selection->priv->font_family; }
const gchar * e_editor_selection_get_background_color (EEditorSelection *selection) { WebKitDOMNode *ancestor; WebKitDOMRange *range; WebKitDOMCSSStyleDeclaration *css; g_return_val_if_fail (E_IS_EDITOR_SELECTION (selection), NULL); range = editor_selection_get_current_range (selection); ancestor = webkit_dom_range_get_common_ancestor_container (range, NULL); css = webkit_dom_element_get_style (WEBKIT_DOM_ELEMENT (ancestor)); selection->priv->background_color = webkit_dom_css_style_declaration_get_property_value ( css, "background-color"); return selection->priv->background_color; }