summaryrefslogtreecommitdiff
path: root/testing/claws-mail-extra-plugins/webkit1.6.1.patch
blob: 82bc5d062cd3a1990b81e90ad0010d30a14c0201 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
--- src/fancy_viewer.c	2011-07-01 11:50:25.000000000 +0200
+++ src/fancy_viewer.c	2011-09-30 06:02:45.000000000 +0200
@@ -83,8 +83,10 @@
 static void download_file_cb(GtkWidget *widget, FancyViewer *viewer);
 #endif
 
-/*FIXME substitute webkitwebsettings.cpp functions with their API when available */
-gchar* webkit_web_view_get_selected_text(WebKitWebView* webView);
+#if !WEBKIT_CHECK_VERSION (1,5,1)
+gchar* webkit_web_view_get_selected_text(WebKitWebView* web_view);
+#endif
+
 /*------*/
 static GtkWidget *fancy_get_widget(MimeViewer *_viewer)
 {
@@ -243,6 +245,8 @@
 
 	gtk_print_unix_dialog_set_manual_capabilities(print_dialog,
 												  GTK_PRINT_CAPABILITY_GENERATE_PS);
+	gtk_print_unix_dialog_set_manual_capabilities(print_dialog,
+												  GTK_PRINT_CAPABILITY_PREVIEW);
 
 	result = gtk_dialog_run (GTK_DIALOG (dialog));
 	gtk_widget_hide (dialog);
@@ -293,7 +297,19 @@
 {
 	debug_print("fancy_get_selection\n");
 	FancyViewer *viewer = (FancyViewer *) _viewer;
+#if WEBKIT_CHECK_VERSION(1,5,1)
+	viewer->doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(viewer->view));
+	viewer->window = webkit_dom_document_get_default_view (viewer->doc);
+	viewer->selection = webkit_dom_dom_window_get_selection (viewer->window);
+	if (viewer->selection == NULL)
+		return NULL;
+	viewer->range = webkit_dom_dom_selection_get_range_at(viewer->selection, 0, NULL);
+	if (viewer->range == NULL)
+		return NULL;
+	gchar *sel = webkit_dom_range_get_text (viewer->range);
+#else
 	gchar *sel = webkit_web_view_get_selected_text(viewer->view);
+#endif
 	if (!viewer->view || strlen(sel) == 0) {
 		g_free(sel);
 		return NULL;
@@ -686,7 +702,15 @@
 	debug_print("Clicked on Search on Web\n");
 	if (webkit_web_view_has_selection(viewer->view)) {
 		gchar *search;
+#if WEBKIT_CHECK_VERSION(1,5,1)
+		viewer->doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(viewer->view));
+		viewer->window = webkit_dom_document_get_default_view (viewer->doc);
+		viewer->selection = webkit_dom_dom_window_get_selection (viewer->window);
+		viewer->range = webkit_dom_dom_selection_get_range_at(viewer->selection, 0, NULL);
+		gchar *tmp = webkit_dom_range_get_text (viewer->range);
+#else
 		gchar *tmp = webkit_web_view_get_selected_text(viewer->view);
+#endif
 		search = g_strconcat(GOOGLE_SEARCH, tmp, NULL);
 		webkit_web_view_open(viewer->view, search);
 		g_free(search);
@@ -896,7 +920,6 @@
 static gboolean populate_popup_cb (WebKitWebView *view, GtkWidget *menu, 
 								   FancyViewer *viewer)
 {
-	/*FIXME hack..until webkit does not give the proper way to handle it*/
 	Plugin *plugin = plugin_get_loaded_by_name("RSSyl");
 	gtk_container_foreach(GTK_CONTAINER(menu), 
 						  (GtkCallback)viewer_menu_handler, 
@@ -941,7 +964,19 @@
 	if (webkit_web_view_can_copy_clipboard(view)) {
 		GtkClipboard *wv_clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
 		const gchar *sel_text;
-		sel_text = (const gchar*)webkit_web_view_get_selected_text(view);
+#if WEBKIT_CHECK_VERSION(1,5,1)
+		viewer->doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(viewer->view));
+		viewer->window = webkit_dom_document_get_default_view (viewer->doc);
+		viewer->selection = webkit_dom_dom_window_get_selection (viewer->window);
+		if (viewer->selection == NULL)
+			return NULL;
+		viewer->range = webkit_dom_dom_selection_get_range_at(viewer->selection, 0, NULL);
+		if (viewer->range == NULL)
+			return NULL;
+		sel_text = (const *gchar)webkit_dom_range_get_text (viewer->range);
+#else
+		sel_text = (const *gchar)webkit_web_view_get_selected_text(viewer->view);
+#endif
 		gtk_clipboard_set_text(wv_clipboard, sel_text, -1);
 	}
 	return FALSE;
--- src/fancy_viewer.h	2011-07-01 11:50:25.000000000 +0200
+++ src/fancy_viewer.h	2011-09-30 06:02:45.000000000 +0200
@@ -113,6 +113,14 @@
 	gint              tag;
 	gint              loading;
 	gint              stop_previous;
+
+	/* DOM Objects */
+#if WEBKIT_CHECK_VERSION(1,5,1)
+	WebKitDOMDocument	  *doc;
+	WebKitDOMDOMWindow    *window;
+	WebKitDOMDOMSelection *selection;
+	WebKitDOMRange		  *range;
+#endif
 };
 #define OPEN_INTERNAL FALSE
 #define OPEN_EXTERNAL TRUE