pidgin/gtkdebug.c

changeset 33242
f63b51e608fe
parent 33238
bbfcd01c57b8
child 33247
d8d6e87ce594
equal deleted inserted replaced
33241:d5a07f1ea70b 33242:f63b51e608fe
621 621
622 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time); 622 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
623 return FALSE; 623 return FALSE;
624 } 624 }
625 625
626 static void
627 regex_html_appended_cb(GtkWebView *webview, WebKitDOMRange *range, DebugWindow *win)
628 {
629 if (!win || !win->window)
630 return;
631
632 if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(win->filter))) {
633 WebKitDOMDocument *dom;
634 WebKitDOMHTMLElement *body;
635 WebKitDOMNode *div;
636
637 dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(win->text));
638 body = webkit_dom_document_get_body(dom);
639 div = webkit_dom_node_get_last_child(WEBKIT_DOM_NODE(body));
640
641 if (webkit_dom_element_webkit_matches_selector(WEBKIT_DOM_ELEMENT(div),
642 "body>div:not(#pause)",
643 NULL))
644 regex_match(win, dom, div);
645 }
646 }
647
626 static DebugWindow * 648 static DebugWindow *
627 debug_window_new(void) 649 debug_window_new(void)
628 { 650 {
629 DebugWindow *win; 651 DebugWindow *win;
630 GtkWidget *vbox; 652 GtkWidget *vbox;
790 frame = pidgin_create_webview(FALSE, &win->text, NULL, NULL); 812 frame = pidgin_create_webview(FALSE, &win->text, NULL, NULL);
791 gtk_webview_set_format_functions(GTK_WEBVIEW(win->text), 813 gtk_webview_set_format_functions(GTK_WEBVIEW(win->text),
792 GTK_WEBVIEW_ALL ^ GTK_WEBVIEW_SMILEY ^ GTK_WEBVIEW_IMAGE); 814 GTK_WEBVIEW_ALL ^ GTK_WEBVIEW_SMILEY ^ GTK_WEBVIEW_IMAGE);
793 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); 815 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
794 gtk_widget_show(frame); 816 gtk_widget_show(frame);
817
818 g_signal_connect(G_OBJECT(win->text), "html-appended",
819 G_CALLBACK(regex_html_appended_cb), win);
795 820
796 clear_cb(NULL, win); 821 clear_cb(NULL, win);
797 822
798 gtk_widget_show_all(win->window); 823 gtk_widget_show_all(win->window);
799 824
988 g_free(ts_s); 1013 g_free(ts_s);
989 g_free(cat_s); 1014 g_free(cat_s);
990 g_free(esc_s); 1015 g_free(esc_s);
991 g_free(tmp); 1016 g_free(tmp);
992 1017
993 //XXX: gtk_webview_append_html does delayed insert of new div, which is 1018 gtk_webview_append_html(GTK_WEBVIEW(debug_win->text), s);
994 // needed by filtering below
995 //gtk_webview_append_html(GTK_WEBVIEW(debug_win->text), s);
996 {
997 WebKitDOMDocument *dom = NULL;
998 WebKitDOMHTMLElement *body = NULL;
999 dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(debug_win->text));
1000 if (dom)
1001 body = webkit_dom_document_get_body(dom);
1002 if (body)
1003 webkit_dom_html_element_insert_adjacent_html(body, "beforeend", s, NULL);
1004 }
1005
1006 if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(debug_win->filter))) {
1007 WebKitDOMDocument *dom = NULL;
1008 WebKitDOMHTMLElement *body = NULL;
1009 WebKitDOMNode *div = NULL;
1010 dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(debug_win->text));
1011 if (dom)
1012 body = webkit_dom_document_get_body(dom);
1013 if (body)
1014 div = webkit_dom_node_get_last_child(WEBKIT_DOM_NODE(body));
1015 if (div)
1016 regex_match(debug_win, dom, div);
1017 }
1018 1019
1019 g_free(s); 1020 g_free(s);
1020 } 1021 }
1021 1022
1022 static gboolean 1023 static gboolean

mercurial