| 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 |