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
|