Tue, 07 May 2013 05:04:46 -0400
Rewrite debug window filter in JS.
Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.
I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.
| 32445 | 1 | /* |
| 2 | * @file gtkwebview.c GTK+ WebKitWebView wrapper class. | |
| 3 | * @ingroup pidgin | |
| 4 | */ | |
| 5 | ||
| 6 | /* pidgin | |
| 7 | * | |
| 8 | * Pidgin is the legal property of its developers, whose names are too numerous | |
| 9 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 10 | * source distribution. | |
| 11 | * | |
| 12 | * This program is free software; you can redistribute it and/or modify | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
13 | * it under the terms of the GNU General Public License as published by |
| 32445 | 14 | * the Free Software Foundation; either version 2 of the License, or |
| 15 | * (at your option) any later version. | |
| 16 | * | |
| 17 | * This program is distributed in the hope that it will be useful, | |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 20 | * GNU General Public License for more details. | |
| 21 | * | |
| 22 | * You should have received a copy of the GNU General Public License | |
| 23 | * along with this program; if not, write to the Free Software | |
| 24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA | |
| 25 | * | |
| 26 | */ | |
| 27 | ||
|
32791
a2dc8d3ee1b8
Use internal.h for less (conditional) #includes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32774
diff
changeset
|
28 | #include "internal.h" |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
29 | #include "debug.h" |
|
32791
a2dc8d3ee1b8
Use internal.h for less (conditional) #includes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32774
diff
changeset
|
30 | #include "pidgin.h" |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
31 | |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
32 | #include <gdk/gdkkeysyms.h> |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
33 | #include "gtkutils.h" |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
34 | #include "gtkwebview.h" |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
35 | |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33167
diff
changeset
|
36 | #include "gtk3compat.h" |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33167
diff
changeset
|
37 | |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
38 | #define MAX_FONT_SIZE 7 |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
39 | #define MAX_SCROLL_TIME 0.4 /* seconds */ |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
40 | #define SCROLL_DELAY 33 /* milliseconds */ |
|
33535
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
41 | #define GTK_WEBVIEW_MAX_PROCESS_TIME 100000 /* microseconds */ |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
42 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
43 | #define GTK_WEBVIEW_GET_PRIVATE(obj) \ |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
44 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GTK_TYPE_WEBVIEW, GtkWebViewPriv)) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
45 | |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
46 | enum { |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
47 | LOAD_HTML, |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
48 | LOAD_JS |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
49 | }; |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
50 | |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
51 | enum { |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
52 | BUTTONS_UPDATE, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
53 | TOGGLE_FORMAT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
54 | CLEAR_FORMAT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
55 | UPDATE_FORMAT, |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
56 | CHANGED, |
|
33241
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
57 | HTML_APPENDED, |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
58 | LAST_SIGNAL |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
59 | }; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
60 | static guint signals[LAST_SIGNAL] = { 0 }; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
61 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
62 | /****************************************************************************** |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
63 | * Structs |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
64 | *****************************************************************************/ |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
65 | |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
66 | typedef struct { |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
67 | WebKitWebInspector *inspector; |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
68 | WebKitDOMNode *node; |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
69 | } GtkWebViewInspectData; |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
70 | |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
71 | typedef struct { |
|
33262
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
72 | WebKitWebView *webview; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
73 | gunichar ch; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
74 | } GtkWebViewInsertData; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
75 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
76 | typedef struct { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
77 | const char *label; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
78 | gunichar ch; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
79 | } GtkUnicodeMenuEntry; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
80 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
81 | typedef struct { |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
82 | char *name; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
83 | int length; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
84 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
85 | gboolean (*activate)(GtkWebView *webview, const char *uri); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
86 | gboolean (*context_menu)(GtkWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
87 | } GtkWebViewProtocol; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
88 | |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
89 | struct _GtkWebViewSmiley { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
90 | gchar *smile; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
91 | gchar *file; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
92 | GdkPixbufAnimation *icon; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
93 | gboolean hidden; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
94 | GdkPixbufLoader *loader; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
95 | GSList *anchors; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
96 | GtkWebViewSmileyFlags flags; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
97 | GtkWebView *webview; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
98 | gpointer data; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
99 | gsize datasize; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
100 | }; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
101 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
102 | typedef struct _GtkSmileyTree GtkSmileyTree; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
103 | struct _GtkSmileyTree { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
104 | GString *values; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
105 | GtkSmileyTree **children; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
106 | GtkWebViewSmiley *image; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
107 | }; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
108 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
109 | typedef struct _GtkWebViewPriv { |
|
33112
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
110 | /* Processing queues */ |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
111 | gboolean is_loading; |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
112 | GQueue *load_queue; |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
113 | guint loader; |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
114 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
115 | /* Scroll adjustments */ |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
116 | GtkAdjustment *vadj; |
|
33247
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
117 | gboolean autoscroll; |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
118 | guint scroll_src; |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
119 | GTimer *scroll_time; |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
120 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
121 | /* Format options */ |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
122 | GtkWebViewButtons format_functions; |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
123 | struct { |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
124 | gboolean wbfo:1; /* Whole buffer formatting only. */ |
|
33010
aa658ddce5ec
Don't emit the changed signal when modifying the webview ourselves.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33009
diff
changeset
|
125 | gboolean block_changed:1; |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
126 | } edit; |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
127 | |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
128 | /* Smileys */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
129 | char *protocol_name; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
130 | GHashTable *smiley_data; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
131 | GtkSmileyTree *default_smilies; |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
132 | } GtkWebViewPriv; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
133 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
134 | /****************************************************************************** |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
135 | * Globals |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
136 | *****************************************************************************/ |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
137 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
138 | static WebKitWebViewClass *parent_class = NULL; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
139 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
140 | /****************************************************************************** |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
141 | * Smileys |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
142 | *****************************************************************************/ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
143 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
144 | const char * |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
145 | gtk_webview_get_protocol_name(GtkWebView *webview) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
146 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
147 | GtkWebViewPriv *priv; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
148 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
149 | g_return_val_if_fail(webview != NULL, NULL); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
150 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
151 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
152 | return priv->protocol_name; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
153 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
154 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
155 | void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
156 | gtk_webview_set_protocol_name(GtkWebView *webview, const char *protocol_name) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
157 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
158 | GtkWebViewPriv *priv; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
159 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
160 | g_return_if_fail(webview != NULL); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
161 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
162 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
163 | priv->protocol_name = g_strdup(protocol_name); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
164 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
165 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
166 | static GtkSmileyTree * |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
167 | gtk_smiley_tree_new(void) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
168 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
169 | return g_new0(GtkSmileyTree, 1); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
170 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
171 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
172 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
173 | gtk_smiley_tree_insert(GtkSmileyTree *tree, GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
174 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
175 | GtkSmileyTree *t = tree; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
176 | const char *x = smiley->smile; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
177 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
178 | if (!(*x)) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
179 | return; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
180 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
181 | do { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
182 | char *pos; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
183 | gsize index; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
184 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
185 | if (!t->values) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
186 | t->values = g_string_new(""); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
187 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
188 | pos = strchr(t->values->str, *x); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
189 | if (!pos) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
190 | t->values = g_string_append_c(t->values, *x); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
191 | index = t->values->len - 1; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
192 | t->children = g_realloc(t->children, t->values->len * sizeof(GtkSmileyTree *)); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
193 | t->children[index] = g_new0(GtkSmileyTree, 1); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
194 | } else |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
195 | index = pos - t->values->str; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
196 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
197 | t = t->children[index]; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
198 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
199 | x++; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
200 | } while (*x); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
201 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
202 | t->image = smiley; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
203 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
204 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
205 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
206 | gtk_smiley_tree_destroy(GtkSmileyTree *tree) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
207 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
208 | GSList *list = g_slist_prepend(NULL, tree); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
209 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
210 | while (list) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
211 | GtkSmileyTree *t = list->data; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
212 | gsize i; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
213 | list = g_slist_delete_link(list, list); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
214 | if (t && t->values) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
215 | for (i = 0; i < t->values->len; i++) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
216 | list = g_slist_prepend(list, t->children[i]); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
217 | g_string_free(t->values, TRUE); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
218 | g_free(t->children); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
219 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
220 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
221 | g_free(t); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
222 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
223 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
224 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
225 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
226 | gtk_smiley_tree_remove(GtkSmileyTree *tree, GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
227 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
228 | GtkSmileyTree *t = tree; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
229 | const gchar *x = smiley->smile; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
230 | int len = 0; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
231 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
232 | while (*x) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
233 | char *pos; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
234 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
235 | if (!t->values) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
236 | return; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
237 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
238 | pos = strchr(t->values->str, *x); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
239 | if (pos) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
240 | t = t->children[pos - t->values->str]; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
241 | else |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
242 | return; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
243 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
244 | x++; len++; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
245 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
246 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
247 | t->image = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
248 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
249 | |
|
33857
af0723304ab3
Fix compilation on OBS mingw, don't crash on webkitgtk
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33535
diff
changeset
|
250 | #if 0 |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
251 | static int |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
252 | gtk_smiley_tree_lookup(GtkSmileyTree *tree, const char *text) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
253 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
254 | GtkSmileyTree *t = tree; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
255 | const char *x = text; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
256 | int len = 0; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
257 | const char *amp; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
258 | int alen; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
259 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
260 | while (*x) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
261 | char *pos; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
262 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
263 | if (!t->values) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
264 | break; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
265 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
266 | if (*x == '&' && (amp = purple_markup_unescape_entity(x, &alen))) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
267 | gboolean matched = TRUE; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
268 | /* Make sure all chars of the unescaped value match */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
269 | while (*(amp + 1)) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
270 | pos = strchr(t->values->str, *amp); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
271 | if (pos) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
272 | t = t->children[pos - t->values->str]; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
273 | else { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
274 | matched = FALSE; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
275 | break; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
276 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
277 | amp++; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
278 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
279 | if (!matched) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
280 | break; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
281 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
282 | pos = strchr(t->values->str, *amp); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
283 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
284 | else if (*x == '<') /* Because we're all WYSIWYG now, a '<' char should |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
285 | * only appear as the start of a tag. Perhaps a |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
286 | * safer (but costlier) check would be to call |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
287 | * gtk_imhtml_is_tag on it */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
288 | break; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
289 | else { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
290 | alen = 1; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
291 | pos = strchr(t->values->str, *x); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
292 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
293 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
294 | if (pos) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
295 | t = t->children[pos - t->values->str]; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
296 | else |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
297 | break; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
298 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
299 | x += alen; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
300 | len += alen; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
301 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
302 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
303 | if (t->image) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
304 | return len; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
305 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
306 | return 0; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
307 | } |
|
33857
af0723304ab3
Fix compilation on OBS mingw, don't crash on webkitgtk
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33535
diff
changeset
|
308 | #endif |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
309 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
310 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
311 | gtk_webview_disassociate_smiley_foreach(gpointer key, gpointer value, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
312 | gpointer user_data) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
313 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
314 | GtkSmileyTree *tree = (GtkSmileyTree *)value; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
315 | GtkWebViewSmiley *smiley = (GtkWebViewSmiley *)user_data; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
316 | gtk_smiley_tree_remove(tree, smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
317 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
318 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
319 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
320 | gtk_webview_disconnect_smiley(GtkWebView *webview, GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
321 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
322 | smiley->webview = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
323 | g_signal_handlers_disconnect_matched(webview, G_SIGNAL_MATCH_DATA, 0, 0, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
324 | NULL, NULL, smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
325 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
326 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
327 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
328 | gtk_webview_disassociate_smiley(GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
329 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
330 | if (smiley->webview) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
331 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(smiley->webview); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
332 | gtk_smiley_tree_remove(priv->default_smilies, smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
333 | g_hash_table_foreach(priv->smiley_data, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
334 | gtk_webview_disassociate_smiley_foreach, smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
335 | g_signal_handlers_disconnect_matched(smiley->webview, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
336 | G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
337 | NULL, smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
338 | smiley->webview = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
339 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
340 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
341 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
342 | void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
343 | gtk_webview_associate_smiley(GtkWebView *webview, const char *sml, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
344 | GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
345 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
346 | GtkSmileyTree *tree; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
347 | GtkWebViewPriv *priv; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
348 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
349 | g_return_if_fail(webview != NULL); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
350 | g_return_if_fail(GTK_IS_WEBVIEW(webview)); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
351 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
352 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
353 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
354 | if (sml == NULL) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
355 | tree = priv->default_smilies; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
356 | else if (!(tree = g_hash_table_lookup(priv->smiley_data, sml))) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
357 | tree = gtk_smiley_tree_new(); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
358 | g_hash_table_insert(priv->smiley_data, g_strdup(sml), tree); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
359 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
360 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
361 | /* need to disconnect old webview, if there is one */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
362 | if (smiley->webview) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
363 | g_signal_handlers_disconnect_matched(smiley->webview, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
364 | G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
365 | NULL, smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
366 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
367 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
368 | smiley->webview = webview; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
369 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
370 | gtk_smiley_tree_insert(tree, smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
371 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
372 | /* connect destroy signal for the webview */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
373 | g_signal_connect(webview, "destroy", |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
374 | G_CALLBACK(gtk_webview_disconnect_smiley), smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
375 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
376 | |
|
33857
af0723304ab3
Fix compilation on OBS mingw, don't crash on webkitgtk
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33535
diff
changeset
|
377 | #if 0 |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
378 | static gboolean |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
379 | gtk_webview_is_smiley(GtkWebViewPriv *priv, const char *sml, const char *text, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
380 | int *len) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
381 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
382 | GtkSmileyTree *tree; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
383 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
384 | if (!sml) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
385 | sml = priv->protocol_name; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
386 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
387 | if (!sml || !(tree = g_hash_table_lookup(priv->smiley_data, sml))) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
388 | tree = priv->default_smilies; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
389 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
390 | if (tree == NULL) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
391 | return FALSE; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
392 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
393 | *len = gtk_smiley_tree_lookup(tree, text); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
394 | return (*len > 0); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
395 | } |
|
33857
af0723304ab3
Fix compilation on OBS mingw, don't crash on webkitgtk
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33535
diff
changeset
|
396 | #endif |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
397 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
398 | static GtkWebViewSmiley * |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
399 | gtk_webview_smiley_get_from_tree(GtkSmileyTree *t, const char *text) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
400 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
401 | const char *x = text; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
402 | char *pos; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
403 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
404 | if (t == NULL) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
405 | return NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
406 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
407 | while (*x) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
408 | if (!t->values) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
409 | return NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
410 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
411 | pos = strchr(t->values->str, *x); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
412 | if (!pos) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
413 | return NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
414 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
415 | t = t->children[pos - t->values->str]; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
416 | x++; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
417 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
418 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
419 | return t->image; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
420 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
421 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
422 | GtkWebViewSmiley * |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
423 | gtk_webview_smiley_find(GtkWebView *webview, const char *sml, const char *text) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
424 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
425 | GtkWebViewPriv *priv; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
426 | GtkWebViewSmiley *ret; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
427 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
428 | g_return_val_if_fail(webview != NULL, NULL); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
429 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
430 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
431 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
432 | /* Look for custom smileys first */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
433 | if (sml != NULL) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
434 | ret = gtk_webview_smiley_get_from_tree(g_hash_table_lookup(priv->smiley_data, sml), text); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
435 | if (ret != NULL) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
436 | return ret; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
437 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
438 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
439 | /* Fall back to check for default smileys */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
440 | return gtk_webview_smiley_get_from_tree(priv->default_smilies, text); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
441 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
442 | |
|
33857
af0723304ab3
Fix compilation on OBS mingw, don't crash on webkitgtk
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33535
diff
changeset
|
443 | #if 0 |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
444 | static GdkPixbufAnimation * |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
445 | gtk_smiley_get_image(GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
446 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
447 | if (!smiley->icon) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
448 | if (smiley->file) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
449 | smiley->icon = gdk_pixbuf_animation_new_from_file(smiley->file, NULL); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
450 | } else if (smiley->loader) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
451 | smiley->icon = gdk_pixbuf_loader_get_animation(smiley->loader); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
452 | if (smiley->icon) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
453 | g_object_ref(G_OBJECT(smiley->icon)); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
454 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
455 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
456 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
457 | return smiley->icon; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
458 | } |
|
33857
af0723304ab3
Fix compilation on OBS mingw, don't crash on webkitgtk
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33535
diff
changeset
|
459 | #endif |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
460 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
461 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
462 | gtk_custom_smiley_allocated(GdkPixbufLoader *loader, gpointer user_data) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
463 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
464 | GtkWebViewSmiley *smiley; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
465 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
466 | smiley = (GtkWebViewSmiley *)user_data; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
467 | smiley->icon = gdk_pixbuf_loader_get_animation(loader); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
468 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
469 | if (smiley->icon) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
470 | g_object_ref(G_OBJECT(smiley->icon)); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
471 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
472 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
473 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
474 | gtk_custom_smiley_closed(GdkPixbufLoader *loader, gpointer user_data) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
475 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
476 | GtkWebViewSmiley *smiley; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
477 | GtkWidget *icon = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
478 | GtkTextChildAnchor *anchor = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
479 | GSList *current = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
480 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
481 | smiley = (GtkWebViewSmiley *)user_data; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
482 | if (!smiley->webview) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
483 | g_object_unref(G_OBJECT(loader)); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
484 | smiley->loader = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
485 | return; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
486 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
487 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
488 | for (current = smiley->anchors; current; current = g_slist_next(current)) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
489 | anchor = GTK_TEXT_CHILD_ANCHOR(current->data); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
490 | if (gtk_text_child_anchor_get_deleted(anchor)) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
491 | icon = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
492 | else |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
493 | icon = gtk_image_new_from_animation(smiley->icon); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
494 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
495 | if (icon) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
496 | GList *wids; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
497 | gtk_widget_show(icon); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
498 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
499 | wids = gtk_text_child_anchor_get_widgets(anchor); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
500 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
501 | g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_plaintext", |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
502 | purple_unescape_html(smiley->smile), g_free); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
503 | g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_htmltext", |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
504 | g_strdup(smiley->smile), g_free); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
505 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
506 | if (smiley->webview) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
507 | if (wids) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
508 | GList *children = gtk_container_get_children(GTK_CONTAINER(wids->data)); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
509 | g_list_foreach(children, (GFunc)gtk_widget_destroy, NULL); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
510 | g_list_free(children); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
511 | gtk_container_add(GTK_CONTAINER(wids->data), icon); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
512 | } else |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
513 | gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(smiley->webview), icon, anchor); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
514 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
515 | g_list_free(wids); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
516 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
517 | g_object_unref(anchor); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
518 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
519 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
520 | g_slist_free(smiley->anchors); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
521 | smiley->anchors = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
522 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
523 | g_object_unref(G_OBJECT(loader)); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
524 | smiley->loader = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
525 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
526 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
527 | static void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
528 | gtk_custom_smiley_size_prepared(GdkPixbufLoader *loader, gint width, gint height, gpointer data) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
529 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
530 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/resize_custom_smileys")) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
531 | int custom_smileys_size = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/custom_smileys_size"); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
532 | if (width <= custom_smileys_size && height <= custom_smileys_size) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
533 | return; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
534 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
535 | if (width >= height) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
536 | height = height * custom_smileys_size / width; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
537 | width = custom_smileys_size; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
538 | } else { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
539 | width = width * custom_smileys_size / height; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
540 | height = custom_smileys_size; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
541 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
542 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
543 | gdk_pixbuf_loader_set_size(loader, width, height); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
544 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
545 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
546 | GtkWebViewSmiley * |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
547 | gtk_webview_smiley_create(const char *file, const char *shortcut, gboolean hide, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
548 | GtkWebViewSmileyFlags flags) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
549 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
550 | GtkWebViewSmiley *smiley = g_new0(GtkWebViewSmiley, 1); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
551 | smiley->file = g_strdup(file); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
552 | smiley->smile = g_strdup(shortcut); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
553 | smiley->hidden = hide; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
554 | smiley->flags = flags; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
555 | smiley->webview = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
556 | gtk_webview_smiley_reload(smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
557 | return smiley; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
558 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
559 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
560 | void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
561 | gtk_webview_smiley_reload(GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
562 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
563 | if (smiley->icon) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
564 | g_object_unref(smiley->icon); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
565 | if (smiley->loader) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
566 | g_object_unref(smiley->loader); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
567 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
568 | smiley->icon = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
569 | smiley->loader = NULL; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
570 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
571 | if (smiley->file) { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
572 | /* We do not use the pixbuf loader for a smiley that can be loaded |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
573 | * from a file. (e.g., local custom smileys) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
574 | */ |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
575 | return; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
576 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
577 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
578 | smiley->loader = gdk_pixbuf_loader_new(); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
579 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
580 | g_signal_connect(smiley->loader, "area_prepared", |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
581 | G_CALLBACK(gtk_custom_smiley_allocated), smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
582 | g_signal_connect(smiley->loader, "closed", |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
583 | G_CALLBACK(gtk_custom_smiley_closed), smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
584 | g_signal_connect(smiley->loader, "size_prepared", |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
585 | G_CALLBACK(gtk_custom_smiley_size_prepared), smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
586 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
587 | |
|
33264
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
588 | const char * |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
589 | gtk_webview_smiley_get_smile(const GtkWebViewSmiley *smiley) |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
590 | { |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
591 | return smiley->smile; |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
592 | } |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
593 | |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
594 | const char * |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
595 | gtk_webview_smiley_get_file(const GtkWebViewSmiley *smiley) |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
596 | { |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
597 | return smiley->file; |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
598 | } |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
599 | |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
600 | gboolean |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
601 | gtk_webview_smiley_get_hidden(const GtkWebViewSmiley *smiley) |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
602 | { |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
603 | return smiley->hidden; |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
604 | } |
|
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
605 | |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
606 | GtkWebViewSmileyFlags |
|
33264
423d5b6e9d9a
Add more accessors for GtkWebViewSmiley fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33262
diff
changeset
|
607 | gtk_webview_smiley_get_flags(const GtkWebViewSmiley *smiley) |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
608 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
609 | return smiley->flags; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
610 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
611 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
612 | void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
613 | gtk_webview_smiley_destroy(GtkWebViewSmiley *smiley) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
614 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
615 | gtk_webview_disassociate_smiley(smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
616 | g_free(smiley->smile); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
617 | g_free(smiley->file); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
618 | if (smiley->icon) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
619 | g_object_unref(smiley->icon); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
620 | if (smiley->loader) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
621 | g_object_unref(smiley->loader); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
622 | g_free(smiley->data); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
623 | g_free(smiley); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
624 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
625 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
626 | void |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
627 | gtk_webview_remove_smileys(GtkWebView *webview) |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
628 | { |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
629 | GtkWebViewPriv *priv; |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
630 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
631 | g_return_if_fail(webview != NULL); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
632 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
633 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
634 | |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
635 | g_hash_table_destroy(priv->smiley_data); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
636 | gtk_smiley_tree_destroy(priv->default_smilies); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
637 | priv->smiley_data = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
638 | (GDestroyNotify)gtk_smiley_tree_destroy); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
639 | priv->default_smilies = gtk_smiley_tree_new(); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
640 | } |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
641 | |
|
33265
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
642 | void |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
643 | gtk_webview_insert_smiley(GtkWebView *webview, const char *sml, |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
644 | const char *smiley) |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
645 | { |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
646 | GtkWebViewPriv *priv; |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
647 | char *unescaped; |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
648 | GtkWebViewSmiley *webview_smiley; |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
649 | |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
650 | g_return_if_fail(webview != NULL); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
651 | |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
652 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
653 | |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
654 | unescaped = purple_unescape_html(smiley); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
655 | webview_smiley = gtk_webview_smiley_find(webview, sml, unescaped); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
656 | |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
657 | if (priv->format_functions & GTK_WEBVIEW_SMILEY) { |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
658 | char *tmp; |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
659 | /* TODO Better smiley insertion... */ |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
660 | tmp = g_strdup_printf("<img isEmoticon src='purple-smiley:%p' alt='%s'>", |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
661 | webview_smiley, smiley); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
662 | gtk_webview_append_html(webview, tmp); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
663 | g_free(tmp); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
664 | } else { |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
665 | gtk_webview_append_html(webview, smiley); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
666 | } |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
667 | |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
668 | g_free(unescaped); |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
669 | } |
|
b9372e71546e
Add an insert-smiley function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33264
diff
changeset
|
670 | |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
671 | /****************************************************************************** |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
672 | * Helpers |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
673 | *****************************************************************************/ |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
674 | |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
675 | static void |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
676 | webview_resource_loading(WebKitWebView *webview, |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
677 | WebKitWebFrame *frame, |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
678 | WebKitWebResource *resource, |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
679 | WebKitNetworkRequest *request, |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
680 | WebKitNetworkResponse *response, |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
681 | gpointer user_data) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
682 | { |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
683 | const gchar *uri; |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
684 | |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
685 | uri = webkit_network_request_get_uri(request); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
686 | if (purple_str_has_prefix(uri, PURPLE_STORED_IMAGE_PROTOCOL)) { |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
687 | int id; |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
688 | PurpleStoredImage *img; |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
689 | const char *filename; |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
690 | |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
691 | uri += sizeof(PURPLE_STORED_IMAGE_PROTOCOL) - 1; |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
692 | id = strtoul(uri, NULL, 10); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
693 | |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
694 | img = purple_imgstore_find_by_id(id); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
695 | if (!img) |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
696 | return; |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
697 | |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
698 | filename = purple_imgstore_get_filename(img); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
699 | if (filename && g_path_is_absolute(filename)) { |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
700 | char *tmp = g_strdup_printf("file://%s", filename); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
701 | webkit_network_request_set_uri(request, tmp); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
702 | g_free(tmp); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
703 | } else { |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
704 | char *b64 = purple_base64_encode(purple_imgstore_get_data(img), |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
705 | purple_imgstore_get_size(img)); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
706 | const char *type = purple_imgstore_get_extension(img); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
707 | char *tmp = g_strdup_printf("data:image/%s;base64,%s", type, b64); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
708 | webkit_network_request_set_uri(request, tmp); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
709 | g_free(b64); |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
710 | g_free(tmp); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
711 | } |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
712 | } |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
713 | } |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
714 | |
|
33535
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
715 | static void |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
716 | process_load_queue_element(GtkWebView *webview) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
717 | { |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
718 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
719 | int type; |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
720 | char *str; |
|
33112
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
721 | WebKitDOMDocument *doc; |
|
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
722 | WebKitDOMHTMLElement *body; |
|
33241
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
723 | WebKitDOMNode *start, *end; |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
724 | WebKitDOMRange *range; |
|
33247
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
725 | gboolean require_scroll = FALSE; |
|
33112
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
726 | |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
727 | type = GPOINTER_TO_INT(g_queue_pop_head(priv->load_queue)); |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
728 | str = g_queue_pop_head(priv->load_queue); |
|
33112
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
729 | |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
730 | switch (type) { |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
731 | case LOAD_HTML: |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
732 | doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
733 | body = webkit_dom_document_get_body(doc); |
|
33241
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
734 | start = webkit_dom_node_get_last_child(WEBKIT_DOM_NODE(body)); |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
735 | |
|
33247
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
736 | if (priv->autoscroll) { |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
737 | require_scroll = (gtk_adjustment_get_value(priv->vadj) |
|
33253
716af5e03402
Tweak autoscrolling limits to get filtered debug window to work.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33250
diff
changeset
|
738 | >= (gtk_adjustment_get_upper(priv->vadj) - |
|
716af5e03402
Tweak autoscrolling limits to get filtered debug window to work.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33250
diff
changeset
|
739 | 1.5*gtk_adjustment_get_page_size(priv->vadj))); |
|
33247
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
740 | } |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
741 | |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
742 | webkit_dom_html_element_insert_adjacent_html(body, "beforeend", |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
743 | str, NULL); |
|
33241
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
744 | |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
745 | range = webkit_dom_document_create_range(doc); |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
746 | if (start) { |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
747 | end = webkit_dom_node_get_last_child(WEBKIT_DOM_NODE(body)); |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
748 | webkit_dom_range_set_start_after(range, |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
749 | WEBKIT_DOM_NODE(start), |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
750 | NULL); |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
751 | webkit_dom_range_set_end_after(range, |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
752 | WEBKIT_DOM_NODE(end), |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
753 | NULL); |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
754 | } else { |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
755 | webkit_dom_range_select_node_contents(range, |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
756 | WEBKIT_DOM_NODE(body), |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
757 | NULL); |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
758 | } |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
759 | |
|
33247
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
760 | if (require_scroll) { |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
761 | if (start) |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
762 | webkit_dom_element_scroll_into_view(WEBKIT_DOM_ELEMENT(start), |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
763 | TRUE); |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
764 | else |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
765 | webkit_dom_element_scroll_into_view(WEBKIT_DOM_ELEMENT(body), |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
766 | TRUE); |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
767 | } |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
768 | |
|
33241
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
769 | g_signal_emit(webview, signals[HTML_APPENDED], 0, range); |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
770 | |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
771 | break; |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
772 | |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
773 | case LOAD_JS: |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
774 | webkit_web_view_execute_script(WEBKIT_WEB_VIEW(webview), str); |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
775 | break; |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
776 | |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
777 | default: |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
778 | purple_debug_error("webview", |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
779 | "Got unknown loading queue type: %d\n", type); |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
780 | break; |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
781 | } |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
782 | |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
783 | g_free(str); |
|
33535
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
784 | } |
|
33112
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
785 | |
|
33535
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
786 | static gboolean |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
787 | process_load_queue(GtkWebView *webview) |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
788 | { |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
789 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
790 | gint64 start_time; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
791 | |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
792 | if (priv->is_loading) { |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
793 | priv->loader = 0; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
794 | return FALSE; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
795 | } |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
796 | if (!priv->load_queue || g_queue_is_empty(priv->load_queue)) { |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
797 | priv->loader = 0; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
798 | return FALSE; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
799 | } |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
800 | |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
801 | start_time = g_get_monotonic_time(); |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
802 | while (!g_queue_is_empty(priv->load_queue)) { |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
803 | process_load_queue_element(webview); |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
804 | if (g_get_monotonic_time() - start_time > |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
805 | GTK_WEBVIEW_MAX_PROCESS_TIME) |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
806 | break; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
807 | } |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
808 | |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
809 | if (g_queue_is_empty(priv->load_queue)) { |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
810 | priv->loader = 0; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
811 | return FALSE; |
|
e03ae42cf793
Faster webkit webview - process elements from queue until timeout is hit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33500
diff
changeset
|
812 | } |
|
33112
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
813 | return TRUE; |
|
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
814 | } |
|
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
815 | |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
816 | static void |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
817 | webview_load_started(WebKitWebView *webview, WebKitWebFrame *frame, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
818 | gpointer userdata) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
819 | { |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
820 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
821 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
822 | /* is there a better way to test for is_loading? */ |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
823 | priv->is_loading = TRUE; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
824 | } |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
825 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
826 | static void |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
827 | webview_load_finished(WebKitWebView *webview, WebKitWebFrame *frame, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
828 | gpointer userdata) |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
829 | { |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
830 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
831 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
832 | priv->is_loading = FALSE; |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
833 | if (priv->loader == 0) |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
834 | priv->loader = g_idle_add((GSourceFunc)process_load_queue, webview); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
835 | } |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
836 | |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
837 | static void |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
838 | webview_show_inspector_cb(GtkWidget *item, GtkWebViewInspectData *data) |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
839 | { |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
840 | webkit_web_inspector_inspect_node(data->inspector, data->node); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
841 | } |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
842 | |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
843 | static GtkWebViewProtocol * |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
844 | webview_find_protocol(const char *url, gboolean reverse) |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
845 | { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
846 | GtkWebViewClass *klass; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
847 | GList *iter; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
848 | GtkWebViewProtocol *proto = NULL; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
849 | int length = reverse ? strlen(url) : -1; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
850 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
851 | klass = g_type_class_ref(GTK_TYPE_WEBVIEW); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
852 | for (iter = klass->protocols; iter; iter = iter->next) { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
853 | proto = iter->data; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
854 | if (g_ascii_strncasecmp(url, proto->name, reverse ? MIN(length, proto->length) : proto->length) == 0) { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
855 | g_type_class_unref(klass); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
856 | return proto; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
857 | } |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
858 | } |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
859 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
860 | g_type_class_unref(klass); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
861 | return NULL; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
862 | } |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
863 | |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
864 | static gboolean |
|
33226
ae332a3316c7
Give webview signal callback a more relevant name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33225
diff
changeset
|
865 | webview_navigation_decision(WebKitWebView *webview, |
|
ae332a3316c7
Give webview signal callback a more relevant name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33225
diff
changeset
|
866 | WebKitWebFrame *frame, |
|
ae332a3316c7
Give webview signal callback a more relevant name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33225
diff
changeset
|
867 | WebKitNetworkRequest *request, |
|
ae332a3316c7
Give webview signal callback a more relevant name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33225
diff
changeset
|
868 | WebKitWebNavigationAction *navigation_action, |
|
ae332a3316c7
Give webview signal callback a more relevant name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33225
diff
changeset
|
869 | WebKitWebPolicyDecision *policy_decision, |
|
ae332a3316c7
Give webview signal callback a more relevant name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33225
diff
changeset
|
870 | gpointer userdata) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
871 | { |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
872 | const gchar *uri; |
|
32506
74d884939a2c
Handle better webkit's navigation-policy-decision-requested signal to be able to manage external files, links and theme files.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32502
diff
changeset
|
873 | WebKitWebNavigationReason reason; |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
874 | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
875 | uri = webkit_network_request_get_uri(request); |
|
32506
74d884939a2c
Handle better webkit's navigation-policy-decision-requested signal to be able to manage external files, links and theme files.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32502
diff
changeset
|
876 | reason = webkit_web_navigation_action_get_reason(navigation_action); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
877 | |
|
32506
74d884939a2c
Handle better webkit's navigation-policy-decision-requested signal to be able to manage external files, links and theme files.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32502
diff
changeset
|
878 | if (reason == WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) { |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
879 | GtkWebViewProtocol *proto = webview_find_protocol(uri, FALSE); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
880 | if (proto) { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
881 | /* XXX: Do something with the return value? */ |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
882 | proto->activate(GTK_WEBVIEW(webview), uri); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
883 | } |
|
32800
67649fafdb51
If we handle a navigation request, then we should tell WebKit
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32799
diff
changeset
|
884 | webkit_web_policy_decision_ignore(policy_decision); |
|
32803
a2d80b30be13
We don't want WebKit to process a Refresh, or Back/Forward
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32800
diff
changeset
|
885 | } else if (reason == WEBKIT_WEB_NAVIGATION_REASON_OTHER) |
|
32523
2d37b68228b6
Let webview manage the navigation ONLY if the reason is the user clicked a link.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32513
diff
changeset
|
886 | webkit_web_policy_decision_use(policy_decision); |
|
32803
a2d80b30be13
We don't want WebKit to process a Refresh, or Back/Forward
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32800
diff
changeset
|
887 | else |
|
a2d80b30be13
We don't want WebKit to process a Refresh, or Back/Forward
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32800
diff
changeset
|
888 | webkit_web_policy_decision_ignore(policy_decision); |
|
32506
74d884939a2c
Handle better webkit's navigation-policy-decision-requested signal to be able to manage external files, links and theme files.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32502
diff
changeset
|
889 | |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
890 | return TRUE; |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
891 | } |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
892 | |
|
33262
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
893 | static GtkWidget * |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
894 | get_input_methods_menu(WebKitWebView *webview) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
895 | { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
896 | GtkSettings *settings; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
897 | gboolean show = TRUE; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
898 | GtkWidget *item; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
899 | GtkWidget *menu; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
900 | GtkIMContext *im; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
901 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
902 | settings = webview ? gtk_widget_get_settings(GTK_WIDGET(webview)) : gtk_settings_get_default(); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
903 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
904 | if (settings) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
905 | g_object_get(settings, "gtk-show-input-method-menu", &show, NULL); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
906 | if (!show) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
907 | return NULL; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
908 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
909 | item = gtk_image_menu_item_new_with_mnemonic(_("Input _Methods")); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
910 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
911 | g_object_get(webview, "im-context", &im, NULL); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
912 | menu = gtk_menu_new(); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
913 | gtk_im_multicontext_append_menuitems(GTK_IM_MULTICONTEXT(im), |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
914 | GTK_MENU_SHELL(menu)); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
915 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
916 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
917 | return item; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
918 | } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
919 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
920 | /* Values taken from gtktextutil.c */ |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
921 | static const GtkUnicodeMenuEntry bidi_menu_entries[] = { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
922 | { N_("LRM _Left-to-right mark"), 0x200E }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
923 | { N_("RLM _Right-to-left mark"), 0x200F }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
924 | { N_("LRE Left-to-right _embedding"), 0x202A }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
925 | { N_("RLE Right-to-left e_mbedding"), 0x202B }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
926 | { N_("LRO Left-to-right _override"), 0x202D }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
927 | { N_("RLO Right-to-left o_verride"), 0x202E }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
928 | { N_("PDF _Pop directional formatting"), 0x202C }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
929 | { N_("ZWS _Zero width space"), 0x200B }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
930 | { N_("ZWJ Zero width _joiner"), 0x200D }, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
931 | { N_("ZWNJ Zero width _non-joiner"), 0x200C } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
932 | }; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
933 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
934 | static void |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
935 | insert_control_character_cb(GtkMenuItem *item, GtkWebViewInsertData *data) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
936 | { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
937 | WebKitWebView *webview = data->webview; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
938 | gunichar ch = data->ch; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
939 | GtkWebViewPriv *priv; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
940 | WebKitDOMDocument *dom; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
941 | char buf[6]; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
942 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
943 | priv = GTK_WEBVIEW_GET_PRIVATE(GTK_WEBVIEW(webview)); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
944 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
945 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
946 | g_unichar_to_utf8(ch, buf); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
947 | priv->edit.block_changed = TRUE; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
948 | webkit_dom_document_exec_command(dom, "insertHTML", FALSE, buf); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
949 | priv->edit.block_changed = FALSE; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
950 | } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
951 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
952 | static GtkWidget * |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
953 | get_unicode_menu(WebKitWebView *webview) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
954 | { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
955 | GtkSettings *settings; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
956 | gboolean show = TRUE; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
957 | GtkWidget *menuitem; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
958 | GtkWidget *menu; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
959 | int i; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
960 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
961 | settings = webview ? gtk_widget_get_settings(GTK_WIDGET(webview)) : gtk_settings_get_default(); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
962 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
963 | if (settings) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
964 | g_object_get(settings, "gtk-show-unicode-menu", &show, NULL); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
965 | if (!show) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
966 | return NULL; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
967 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
968 | menuitem = gtk_image_menu_item_new_with_mnemonic(_("_Insert Unicode Control Character")); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
969 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
970 | menu = gtk_menu_new(); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
971 | for (i = 0; i < G_N_ELEMENTS(bidi_menu_entries); i++) { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
972 | GtkWebViewInsertData *data; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
973 | GtkWidget *item; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
974 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
975 | data = g_new0(GtkWebViewInsertData, 1); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
976 | data->webview = webview; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
977 | data->ch = bidi_menu_entries[i].ch; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
978 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
979 | item = gtk_menu_item_new_with_mnemonic(_(bidi_menu_entries[i].label)); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
980 | g_signal_connect_data(item, "activate", |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
981 | G_CALLBACK(insert_control_character_cb), data, |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
982 | (GClosureNotify)g_free, 0); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
983 | gtk_widget_show(item); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
984 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
985 | } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
986 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
987 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
988 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
989 | return menuitem; |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
990 | } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
991 | |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
992 | static void |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
993 | do_popup_menu(WebKitWebView *webview, int button, int time, int context, |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
994 | WebKitDOMNode *node, const char *uri) |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
995 | { |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
996 | GtkWidget *menu; |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
997 | GtkWidget *cut, *copy, *paste, *delete, *select; |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
998 | WebKitWebSettings *settings; |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
999 | gboolean inspector; |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1000 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1001 | menu = gtk_menu_new(); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1002 | g_signal_connect(menu, "selection-done", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1003 | G_CALLBACK(gtk_widget_destroy), NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1004 | |
|
33233
26a3100b451e
Don't show link context menu when it's part of the selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33232
diff
changeset
|
1005 | if ((context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) |
|
26a3100b451e
Don't show link context menu when it's part of the selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33232
diff
changeset
|
1006 | && !(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION)) { |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1007 | GtkWebViewProtocol *proto = NULL; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1008 | GList *children; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1009 | |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1010 | while (node && !WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(node)) { |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1011 | node = webkit_dom_node_get_parent_node(node); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1012 | } |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1013 | |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1014 | if (uri && node) |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1015 | proto = webview_find_protocol(uri, FALSE); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1016 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1017 | if (proto && proto->context_menu) { |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1018 | proto->context_menu(GTK_WEBVIEW(webview), |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1019 | WEBKIT_DOM_HTML_ANCHOR_ELEMENT(node), menu); |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1020 | } |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1021 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1022 | children = gtk_container_get_children(GTK_CONTAINER(menu)); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1023 | if (!children) { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1024 | GtkWidget *item = gtk_menu_item_new_with_label(_("No actions available")); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1025 | gtk_widget_show(item); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1026 | gtk_widget_set_sensitive(item, FALSE); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1027 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1028 | } else { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1029 | g_list_free(children); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1030 | } |
|
33232
a572083f80ef
Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33231
diff
changeset
|
1031 | gtk_widget_show_all(menu); |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1032 | |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1033 | } else { |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1034 | /* Using connect_swapped means we don't need any wrapper functions */ |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1035 | cut = pidgin_new_item_from_stock(menu, _("Cu_t"), GTK_STOCK_CUT, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1036 | NULL, NULL, 0, 0, NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1037 | g_signal_connect_swapped(G_OBJECT(cut), "activate", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1038 | G_CALLBACK(webkit_web_view_cut_clipboard), |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1039 | webview); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1040 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1041 | copy = pidgin_new_item_from_stock(menu, _("_Copy"), GTK_STOCK_COPY, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1042 | NULL, NULL, 0, 0, NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1043 | g_signal_connect_swapped(G_OBJECT(copy), "activate", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1044 | G_CALLBACK(webkit_web_view_copy_clipboard), |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1045 | webview); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1046 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1047 | paste = pidgin_new_item_from_stock(menu, _("_Paste"), GTK_STOCK_PASTE, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1048 | NULL, NULL, 0, 0, NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1049 | g_signal_connect_swapped(G_OBJECT(paste), "activate", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1050 | G_CALLBACK(webkit_web_view_paste_clipboard), |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1051 | webview); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1052 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1053 | delete = pidgin_new_item_from_stock(menu, _("_Delete"), GTK_STOCK_DELETE, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1054 | NULL, NULL, 0, 0, NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1055 | g_signal_connect_swapped(G_OBJECT(delete), "activate", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1056 | G_CALLBACK(webkit_web_view_delete_selection), |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1057 | webview); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1058 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1059 | pidgin_separator(menu); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1060 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1061 | select = pidgin_new_item_from_stock(menu, _("Select _All"), |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1062 | GTK_STOCK_SELECT_ALL, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1063 | NULL, NULL, 0, 0, NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1064 | g_signal_connect_swapped(G_OBJECT(select), "activate", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1065 | G_CALLBACK(webkit_web_view_select_all), |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1066 | webview); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1067 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1068 | gtk_widget_set_sensitive(cut, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1069 | webkit_web_view_can_cut_clipboard(webview)); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1070 | gtk_widget_set_sensitive(copy, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1071 | webkit_web_view_can_copy_clipboard(webview)); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1072 | gtk_widget_set_sensitive(paste, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1073 | webkit_web_view_can_paste_clipboard(webview)); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1074 | gtk_widget_set_sensitive(delete, |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1075 | webkit_web_view_can_cut_clipboard(webview)); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1076 | } |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1077 | |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1078 | settings = webkit_web_view_get_settings(webview); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1079 | g_object_get(G_OBJECT(settings), "enable-developer-extras", &inspector, NULL); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1080 | if (inspector) { |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1081 | GtkWidget *inspect; |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1082 | GtkWebViewInspectData *data; |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1083 | |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1084 | data = g_new0(GtkWebViewInspectData, 1); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1085 | data->inspector = webkit_web_view_get_inspector(webview); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1086 | data->node = node; |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1087 | |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1088 | pidgin_separator(menu); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1089 | |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1090 | inspect = pidgin_new_item_from_stock(menu, _("Inspect _Element"), NULL, |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1091 | NULL, NULL, 0, 0, NULL); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1092 | g_signal_connect_data(G_OBJECT(inspect), "activate", |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1093 | G_CALLBACK(webview_show_inspector_cb), |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1094 | data, (GClosureNotify)g_free, 0); |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1095 | } |
|
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1096 | |
|
33262
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1097 | if (webkit_web_view_get_editable(webview)) { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1098 | GtkWidget *im = get_input_methods_menu(webview); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1099 | GtkWidget *unicode = get_unicode_menu(webview); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1100 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1101 | if (im || unicode) |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1102 | pidgin_separator(menu); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1103 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1104 | if (im) { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1105 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), im); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1106 | gtk_widget_show(im); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1107 | } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1108 | |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1109 | if (unicode) { |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1110 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), unicode); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1111 | gtk_widget_show(unicode); |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1112 | } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1113 | } |
|
ec6997a4258c
Copy the input-method and unicode menus from a regular WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33256
diff
changeset
|
1114 | |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1115 | g_signal_emit_by_name(G_OBJECT(webview), "populate-popup", menu); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1116 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1117 | gtk_menu_attach_to_widget(GTK_MENU(menu), GTK_WIDGET(webview), NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1118 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, button, time); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1119 | } |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1120 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1121 | static gboolean |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1122 | webview_popup_menu(WebKitWebView *webview) |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1123 | { |
|
33250
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1124 | WebKitDOMDocument *doc; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1125 | WebKitDOMElement *active; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1126 | WebKitDOMElement *link; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1127 | int context; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1128 | char *uri; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1129 | |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1130 | context = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1131 | uri = NULL; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1132 | |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1133 | doc = webkit_web_view_get_dom_document(webview); |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1134 | active = webkit_dom_html_document_get_active_element(WEBKIT_DOM_HTML_DOCUMENT(doc)); |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1135 | |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1136 | link = active; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1137 | while (link && !WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(link)) |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1138 | link = webkit_dom_node_get_parent_element(WEBKIT_DOM_NODE(link)); |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1139 | if (WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(link)) { |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1140 | context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK; |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1141 | uri = webkit_dom_html_anchor_element_get_href(WEBKIT_DOM_HTML_ANCHOR_ELEMENT(link)); |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1142 | } |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1143 | |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1144 | do_popup_menu(webview, 0, gtk_get_current_event_time(), |
|
33250
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1145 | context, WEBKIT_DOM_NODE(active), uri); |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1146 | |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1147 | g_free(uri); |
|
84e141f1bfed
Add some context when using the keyboard to open a popup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33248
diff
changeset
|
1148 | |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1149 | return TRUE; |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1150 | } |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1151 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1152 | static gboolean |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1153 | webview_button_pressed(WebKitWebView *webview, GdkEventButton *event) |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1154 | { |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1155 | if (event->type == GDK_BUTTON_PRESS && event->button == 3) { |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1156 | WebKitHitTestResult *hit; |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1157 | int context; |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1158 | WebKitDOMNode *node; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1159 | char *uri; |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1160 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1161 | hit = webkit_web_view_get_hit_test_result(webview, event); |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1162 | g_object_get(G_OBJECT(hit), |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1163 | "context", &context, |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1164 | "inner-node", &node, |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1165 | "link-uri", &uri, |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1166 | NULL); |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1167 | |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1168 | do_popup_menu(webview, event->button, event->time, context, |
|
33248
565884eb4354
Restore "Inspect Element" menu item.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33247
diff
changeset
|
1169 | node, uri); |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1170 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1171 | g_free(uri); |
|
33500
d6de39919ac3
Fix leak of the WebKitHitTestResult.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33265
diff
changeset
|
1172 | g_object_unref(hit); |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1173 | |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1174 | return TRUE; |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1175 | } |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1176 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1177 | return FALSE; |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1178 | } |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1179 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1180 | /* |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1181 | * Smoothly scroll a WebView. |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1182 | * |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1183 | * @return TRUE if the window needs to be scrolled further, FALSE if we're at the bottom. |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1184 | */ |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1185 | static gboolean |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1186 | smooth_scroll_cb(gpointer data) |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1187 | { |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1188 | GtkWebViewPriv *priv = data; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1189 | GtkAdjustment *adj; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1190 | gdouble max_val; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1191 | gdouble scroll_val; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1192 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1193 | g_return_val_if_fail(priv->scroll_time != NULL, FALSE); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1194 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1195 | adj = priv->vadj; |
|
32797
3fe407409ec2
Use accessor functions where available.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32796
diff
changeset
|
1196 | max_val = gtk_adjustment_get_upper(adj) - gtk_adjustment_get_page_size(adj); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1197 | scroll_val = gtk_adjustment_get_value(adj) + |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1198 | ((max_val - gtk_adjustment_get_value(adj)) / 3); |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1199 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1200 | if (g_timer_elapsed(priv->scroll_time, NULL) > MAX_SCROLL_TIME |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1201 | || scroll_val >= max_val) { |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1202 | /* time's up. jump to the end and kill the timer */ |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1203 | gtk_adjustment_set_value(adj, max_val); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1204 | g_timer_destroy(priv->scroll_time); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1205 | priv->scroll_time = NULL; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1206 | priv->scroll_src = 0; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1207 | return FALSE; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1208 | } |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1209 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1210 | /* scroll by 1/3rd the remaining distance */ |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1211 | gtk_adjustment_set_value(adj, scroll_val); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1212 | return TRUE; |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1213 | } |
|
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1214 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1215 | static gboolean |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1216 | scroll_idle_cb(gpointer data) |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1217 | { |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1218 | GtkWebViewPriv *priv = data; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1219 | GtkAdjustment *adj = priv->vadj; |
|
32797
3fe407409ec2
Use accessor functions where available.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32796
diff
changeset
|
1220 | gdouble max_val; |
|
3fe407409ec2
Use accessor functions where available.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32796
diff
changeset
|
1221 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1222 | if (adj) { |
|
32797
3fe407409ec2
Use accessor functions where available.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32796
diff
changeset
|
1223 | max_val = gtk_adjustment_get_upper(adj) - gtk_adjustment_get_page_size(adj); |
|
3fe407409ec2
Use accessor functions where available.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32796
diff
changeset
|
1224 | gtk_adjustment_set_value(adj, max_val); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1225 | } |
|
32797
3fe407409ec2
Use accessor functions where available.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32796
diff
changeset
|
1226 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1227 | priv->scroll_src = 0; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1228 | return FALSE; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1229 | } |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1230 | |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1231 | static void |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1232 | emit_format_signal(GtkWebView *webview, GtkWebViewButtons buttons) |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1233 | { |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1234 | g_object_ref(webview); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1235 | g_signal_emit(webview, signals[TOGGLE_FORMAT], 0, buttons); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1236 | g_object_unref(webview); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1237 | } |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1238 | |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1239 | static void |
|
33009
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1240 | do_formatting(GtkWebView *webview, const char *name, const char *value) |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1241 | { |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1242 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1243 | WebKitDOMDocument *dom; |
|
33022
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1244 | WebKitDOMDOMWindow *win; |
|
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1245 | WebKitDOMDOMSelection *sel = NULL; |
|
33009
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1246 | WebKitDOMRange *range = NULL; |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1247 | |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1248 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1249 | |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1250 | if (priv->edit.wbfo) { |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1251 | win = webkit_dom_document_get_default_view(dom); |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1252 | sel = webkit_dom_dom_window_get_selection(win); |
|
33022
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1253 | if (webkit_dom_dom_selection_get_range_count(sel) > 0) |
|
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1254 | range = webkit_dom_dom_selection_get_range_at(sel, 0, NULL); |
|
33009
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1255 | webkit_web_view_select_all(WEBKIT_WEB_VIEW(webview)); |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1256 | } |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1257 | |
|
33010
aa658ddce5ec
Don't emit the changed signal when modifying the webview ourselves.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33009
diff
changeset
|
1258 | priv->edit.block_changed = TRUE; |
|
33009
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1259 | webkit_dom_document_exec_command(dom, name, FALSE, value); |
|
33010
aa658ddce5ec
Don't emit the changed signal when modifying the webview ourselves.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33009
diff
changeset
|
1260 | priv->edit.block_changed = FALSE; |
|
33009
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1261 | |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1262 | if (priv->edit.wbfo) { |
|
33022
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1263 | if (range) { |
|
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1264 | webkit_dom_dom_selection_remove_all_ranges(sel); |
|
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1265 | webkit_dom_dom_selection_add_range(sel, range); |
|
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1266 | } else { |
|
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1267 | webkit_dom_dom_selection_collapse_to_end(sel, NULL); |
|
87c277f64c4e
Avoid some asserts with WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33021
diff
changeset
|
1268 | } |
|
33009
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1269 | } |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1270 | } |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1271 | |
|
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1272 | static void |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1273 | webview_font_shrink(GtkWebView *webview) |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1274 | { |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1275 | gint fontsize; |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1276 | char *tmp; |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1277 | |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1278 | fontsize = gtk_webview_get_current_fontsize(webview); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1279 | fontsize = MAX(fontsize - 1, 1); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1280 | |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1281 | tmp = g_strdup_printf("%d", fontsize); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1282 | do_formatting(webview, "fontSize", tmp); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1283 | g_free(tmp); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1284 | } |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1285 | |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1286 | static void |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1287 | webview_font_grow(GtkWebView *webview) |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1288 | { |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1289 | gint fontsize; |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1290 | char *tmp; |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1291 | |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1292 | fontsize = gtk_webview_get_current_fontsize(webview); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1293 | fontsize = MIN(fontsize + 1, MAX_FONT_SIZE); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1294 | |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1295 | tmp = g_strdup_printf("%d", fontsize); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1296 | do_formatting(webview, "fontSize", tmp); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1297 | g_free(tmp); |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1298 | } |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1299 | |
|
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1300 | static void |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1301 | webview_clear_formatting(GtkWebView *webview) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1302 | { |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1303 | if (!webkit_web_view_get_editable(WEBKIT_WEB_VIEW(webview))) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1304 | return; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1305 | |
|
33009
364b314b125a
Clear formatting should also obey WBFO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33008
diff
changeset
|
1306 | do_formatting(webview, "removeFormat", ""); |
|
33020
03c013f8990c
Remove links and background colours on format-clear.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33018
diff
changeset
|
1307 | do_formatting(webview, "unlink", ""); |
|
03c013f8990c
Remove links and background colours on format-clear.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33018
diff
changeset
|
1308 | do_formatting(webview, "backColor", "inherit"); |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1309 | } |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1310 | |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1311 | static void |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1312 | webview_toggle_format(GtkWebView *webview, GtkWebViewButtons buttons) |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1313 | { |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1314 | /* since this function is the handler for the formatting keystrokes, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1315 | we need to check here that the formatting attempted is permitted */ |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1316 | buttons &= gtk_webview_get_format_functions(webview); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1317 | |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1318 | switch (buttons) { |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1319 | case GTK_WEBVIEW_BOLD: |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1320 | do_formatting(webview, "bold", ""); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1321 | break; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1322 | case GTK_WEBVIEW_ITALIC: |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1323 | do_formatting(webview, "italic", ""); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1324 | break; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1325 | case GTK_WEBVIEW_UNDERLINE: |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1326 | do_formatting(webview, "underline", ""); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1327 | break; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1328 | case GTK_WEBVIEW_STRIKE: |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1329 | do_formatting(webview, "strikethrough", ""); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1330 | break; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1331 | case GTK_WEBVIEW_SHRINK: |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1332 | webview_font_shrink(webview); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1333 | break; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1334 | case GTK_WEBVIEW_GROW: |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
1335 | webview_font_grow(webview); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1336 | break; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1337 | default: |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1338 | break; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1339 | } |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1340 | } |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1341 | |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1342 | static void |
|
33028
2a61ad7ca6b6
Apparently, there's an object signal for this.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33025
diff
changeset
|
1343 | editable_input_cb(GtkWebView *webview, gpointer data) |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1344 | { |
|
33010
aa658ddce5ec
Don't emit the changed signal when modifying the webview ourselves.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33009
diff
changeset
|
1345 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
33030
4114ce42d094
Don't emit changed signal when a webview is insensitive.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33028
diff
changeset
|
1346 | if (!priv->edit.block_changed && gtk_widget_is_sensitive(GTK_WIDGET(webview))) |
|
33010
aa658ddce5ec
Don't emit the changed signal when modifying the webview ourselves.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33009
diff
changeset
|
1347 | g_signal_emit(webview, signals[CHANGED], 0); |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1348 | } |
|
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1349 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1350 | /****************************************************************************** |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1351 | * GObject Stuff |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1352 | *****************************************************************************/ |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1353 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1354 | GtkWidget * |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1355 | gtk_webview_new(void) |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1356 | { |
|
33877
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1357 | WebKitWebView *webview = WEBKIT_WEB_VIEW(g_object_new(gtk_webview_get_type(), NULL)); |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1358 | WebKitWebSettings *settings = webkit_web_view_get_settings(webview); |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1359 | |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1360 | g_object_set(G_OBJECT(settings), "default-encoding", "utf-8", NULL); |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1361 | #ifdef _WIN32 |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1362 | /* XXX: win32 WebKitGTK replaces backslash with yen sign for |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1363 | * "sans-serif" font. We should figure out, how to disable this |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1364 | * behavior, but for now I will just apply this simple hack (using other |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1365 | * font family). |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1366 | */ |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1367 | g_object_set(G_OBJECT(settings), "default-font-family", "Verdana", NULL); |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1368 | #endif |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1369 | webkit_web_view_set_settings(webview, settings); |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1370 | |
|
d33b4fa5ea06
win32: hack for webkit's feature of replacing backslash with yen sign; silencing some warnings in gtkconv.c; consistent messages in proxy.c
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33857
diff
changeset
|
1371 | return GTK_WIDGET(webview); |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1372 | } |
|
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1373 | |
|
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1374 | static void |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1375 | gtk_webview_finalize(GObject *webview) |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1376 | { |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1377 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1378 | gpointer temp; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1379 | |
|
33227
2541e55ae19d
Only remove source if non-zero.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33226
diff
changeset
|
1380 | if (priv->loader) |
|
2541e55ae19d
Only remove source if non-zero.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33226
diff
changeset
|
1381 | g_source_remove(priv->loader); |
|
33112
f3236514cb26
Queue HTML appends to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33097
diff
changeset
|
1382 | |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1383 | while (!g_queue_is_empty(priv->load_queue)) { |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1384 | temp = g_queue_pop_head(priv->load_queue); |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1385 | temp = g_queue_pop_head(priv->load_queue); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1386 | g_free(temp); |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1387 | } |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1388 | g_queue_free(priv->load_queue); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1389 | |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1390 | g_hash_table_destroy(priv->smiley_data); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1391 | gtk_smiley_tree_destroy(priv->default_smilies); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1392 | g_free(priv->protocol_name); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1393 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1394 | G_OBJECT_CLASS(parent_class)->finalize(G_OBJECT(webview)); |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1395 | } |
|
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1396 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1397 | static void |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1398 | gtk_webview_class_init(GtkWebViewClass *klass, gpointer userdata) |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1399 | { |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1400 | GObjectClass *gobject_class; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1401 | GtkBindingSet *binding_set; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1402 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1403 | parent_class = g_type_class_ref(webkit_web_view_get_type()); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1404 | gobject_class = G_OBJECT_CLASS(klass); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1405 | |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1406 | g_type_class_add_private(klass, sizeof(GtkWebViewPriv)); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1407 | |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1408 | signals[BUTTONS_UPDATE] = g_signal_new("allowed-formats-updated", |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1409 | G_TYPE_FROM_CLASS(gobject_class), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1410 | G_SIGNAL_RUN_FIRST, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1411 | G_STRUCT_OFFSET(GtkWebViewClass, buttons_update), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1412 | NULL, 0, g_cclosure_marshal_VOID__INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1413 | G_TYPE_NONE, 1, G_TYPE_INT); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1414 | signals[TOGGLE_FORMAT] = g_signal_new("format-toggled", |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1415 | G_TYPE_FROM_CLASS(gobject_class), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1416 | G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1417 | G_STRUCT_OFFSET(GtkWebViewClass, toggle_format), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1418 | NULL, 0, g_cclosure_marshal_VOID__INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1419 | G_TYPE_NONE, 1, G_TYPE_INT); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1420 | signals[CLEAR_FORMAT] = g_signal_new("format-cleared", |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1421 | G_TYPE_FROM_CLASS(gobject_class), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1422 | G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1423 | G_STRUCT_OFFSET(GtkWebViewClass, clear_format), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1424 | NULL, 0, g_cclosure_marshal_VOID__VOID, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1425 | G_TYPE_NONE, 0); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1426 | signals[UPDATE_FORMAT] = g_signal_new("format-updated", |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1427 | G_TYPE_FROM_CLASS(gobject_class), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1428 | G_SIGNAL_RUN_FIRST, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1429 | G_STRUCT_OFFSET(GtkWebViewClass, update_format), |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1430 | NULL, 0, g_cclosure_marshal_VOID__VOID, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1431 | G_TYPE_NONE, 0); |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1432 | signals[CHANGED] = g_signal_new("changed", |
|
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1433 | G_TYPE_FROM_CLASS(gobject_class), |
|
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1434 | G_SIGNAL_RUN_FIRST, |
|
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1435 | G_STRUCT_OFFSET(GtkWebViewClass, changed), |
|
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1436 | NULL, NULL, g_cclosure_marshal_VOID__VOID, |
|
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1437 | G_TYPE_NONE, 0); |
|
33241
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1438 | signals[HTML_APPENDED] = g_signal_new("html-appended", |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1439 | G_TYPE_FROM_CLASS(gobject_class), |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1440 | G_SIGNAL_RUN_FIRST, |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1441 | G_STRUCT_OFFSET(GtkWebViewClass, html_appended), |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1442 | NULL, NULL, |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1443 | g_cclosure_marshal_VOID__OBJECT, |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1444 | G_TYPE_NONE, 1, WEBKIT_TYPE_DOM_RANGE, |
|
d5a07f1ea70b
Add a signal for when HTML is appended to a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33233
diff
changeset
|
1445 | NULL); |
|
32811
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1446 | |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1447 | klass->toggle_format = webview_toggle_format; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1448 | klass->clear_format = webview_clear_formatting; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1449 | |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1450 | gobject_class->finalize = gtk_webview_finalize; |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1451 | |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1452 | binding_set = gtk_binding_set_by_class(parent_class); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1453 | gtk_binding_entry_add_signal(binding_set, GDK_KEY_b, GDK_CONTROL_MASK, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1454 | "format-toggled", 1, G_TYPE_INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1455 | GTK_WEBVIEW_BOLD); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1456 | gtk_binding_entry_add_signal(binding_set, GDK_KEY_i, GDK_CONTROL_MASK, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1457 | "format-toggled", 1, G_TYPE_INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1458 | GTK_WEBVIEW_ITALIC); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1459 | gtk_binding_entry_add_signal(binding_set, GDK_KEY_u, GDK_CONTROL_MASK, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1460 | "format-toggled", 1, G_TYPE_INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1461 | GTK_WEBVIEW_UNDERLINE); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1462 | gtk_binding_entry_add_signal(binding_set, GDK_KEY_plus, GDK_CONTROL_MASK, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1463 | "format-toggled", 1, G_TYPE_INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1464 | GTK_WEBVIEW_GROW); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1465 | gtk_binding_entry_add_signal(binding_set, GDK_KEY_equal, GDK_CONTROL_MASK, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1466 | "format-toggled", 1, G_TYPE_INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1467 | GTK_WEBVIEW_GROW); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1468 | gtk_binding_entry_add_signal(binding_set, GDK_KEY_minus, GDK_CONTROL_MASK, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1469 | "format-toggled", 1, G_TYPE_INT, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1470 | GTK_WEBVIEW_SHRINK); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1471 | |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1472 | binding_set = gtk_binding_set_by_class(klass); |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1473 | gtk_binding_entry_add_signal(binding_set, GDK_KEY_r, GDK_CONTROL_MASK, |
|
87c1f3bb5461
Add some formatting signals to webview from imhtml.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32810
diff
changeset
|
1474 | "format-cleared", 0); |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1475 | } |
|
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1476 | |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1477 | static void |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1478 | gtk_webview_init(GtkWebView *webview, gpointer userdata) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1479 | { |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1480 | GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1481 | |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1482 | priv->load_queue = g_queue_new(); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1483 | |
|
33256
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1484 | priv->smiley_data = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1485 | (GDestroyNotify)gtk_smiley_tree_destroy); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1486 | priv->default_smilies = gtk_smiley_tree_new(); |
|
2bf06f291ff7
Add some smiley stuff to a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33254
diff
changeset
|
1487 | |
|
33228
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1488 | g_signal_connect(G_OBJECT(webview), "button-press-event", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1489 | G_CALLBACK(webview_button_pressed), NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1490 | |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1491 | g_signal_connect(G_OBJECT(webview), "popup-menu", |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1492 | G_CALLBACK(webview_popup_menu), NULL); |
|
a5943b35eb77
Override the WebKitWebView default context menu.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33227
diff
changeset
|
1493 | |
|
33223
8bc668d886f4
Make some lines consistent with others.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33222
diff
changeset
|
1494 | g_signal_connect(G_OBJECT(webview), "navigation-policy-decision-requested", |
|
33226
ae332a3316c7
Give webview signal callback a more relevant name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33225
diff
changeset
|
1495 | G_CALLBACK(webview_navigation_decision), NULL); |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1496 | |
|
33223
8bc668d886f4
Make some lines consistent with others.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33222
diff
changeset
|
1497 | g_signal_connect(G_OBJECT(webview), "load-started", |
|
8bc668d886f4
Make some lines consistent with others.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33222
diff
changeset
|
1498 | G_CALLBACK(webview_load_started), NULL); |
|
32460
5771be5530d8
safely execute JS scripts only after loading is done. Untested code as of now, will test it in next commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
32446
diff
changeset
|
1499 | |
|
33223
8bc668d886f4
Make some lines consistent with others.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33222
diff
changeset
|
1500 | g_signal_connect(G_OBJECT(webview), "load-finished", |
|
8bc668d886f4
Make some lines consistent with others.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33222
diff
changeset
|
1501 | G_CALLBACK(webview_load_finished), NULL); |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
1502 | |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
1503 | g_signal_connect(G_OBJECT(webview), "resource-request-starting", |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
1504 | G_CALLBACK(webview_resource_loading), NULL); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1505 | } |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1506 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1507 | GType |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1508 | gtk_webview_get_type(void) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1509 | { |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1510 | static GType mview_type = 0; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1511 | if (G_UNLIKELY(mview_type == 0)) { |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1512 | static const GTypeInfo mview_info = { |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1513 | sizeof(GtkWebViewClass), |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1514 | NULL, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1515 | NULL, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1516 | (GClassInitFunc)gtk_webview_class_init, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1517 | NULL, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1518 | NULL, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1519 | sizeof(GtkWebView), |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1520 | 0, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1521 | (GInstanceInitFunc)gtk_webview_init, |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1522 | NULL |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1523 | }; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1524 | mview_type = g_type_register_static(webkit_web_view_get_type(), |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1525 | "GtkWebView", &mview_info, 0); |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1526 | } |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1527 | return mview_type; |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1528 | } |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1529 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1530 | /***************************************************************************** |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1531 | * Public API functions |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1532 | *****************************************************************************/ |
|
32793
db876e8e41ac
Avoid creating temporary files for images in a webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32791
diff
changeset
|
1533 | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1534 | char * |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1535 | gtk_webview_quote_js_string(const char *text) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1536 | { |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1537 | GString *str = g_string_new("\""); |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1538 | const char *cur = text; |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1539 | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1540 | while (cur && *cur) { |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1541 | switch (*cur) { |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1542 | case '\\': |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1543 | g_string_append(str, "\\\\"); |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1544 | break; |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1545 | case '\"': |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1546 | g_string_append(str, "\\\""); |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1547 | break; |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1548 | case '\r': |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1549 | g_string_append(str, "<br/>"); |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1550 | break; |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1551 | case '\n': |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1552 | break; |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1553 | default: |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1554 | g_string_append_c(str, *cur); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1555 | } |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1556 | cur++; |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1557 | } |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1558 | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1559 | g_string_append_c(str, '"'); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1560 | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1561 | return g_string_free(str, FALSE); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1562 | } |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1563 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1564 | void |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1565 | gtk_webview_safe_execute_script(GtkWebView *webview, const char *script) |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1566 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1567 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1568 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1569 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1570 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1571 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1572 | g_queue_push_tail(priv->load_queue, GINT_TO_POINTER(LOAD_JS)); |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1573 | g_queue_push_tail(priv->load_queue, g_strdup(script)); |
|
33224
4bb64c5ef111
Ensure queue processing function is only added once.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33223
diff
changeset
|
1574 | if (!priv->is_loading && priv->loader == 0) |
|
4bb64c5ef111
Ensure queue processing function is only added once.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33223
diff
changeset
|
1575 | priv->loader = g_idle_add((GSourceFunc)process_load_queue, webview); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1576 | } |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1577 | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1578 | void |
|
32993
d6da54acf528
Remove _with_imgstore suffix on this function. There isn't a version
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32898
diff
changeset
|
1579 | gtk_webview_load_html_string(GtkWebView *webview, const char *html) |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1580 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1581 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1582 | |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
1583 | webkit_web_view_load_string(WEBKIT_WEB_VIEW(webview), html, NULL, NULL, |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
1584 | "file:///"); |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1585 | } |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1586 | |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1587 | void |
|
33083
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1588 | gtk_webview_load_html_string_with_selection(GtkWebView *webview, const char *html) |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1589 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1590 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1591 | |
|
33083
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1592 | gtk_webview_load_html_string(webview, html); |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1593 | gtk_webview_safe_execute_script(webview, |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1594 | "var s = window.getSelection();" |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1595 | "var r = document.createRange();" |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1596 | "var n = document.getElementById('caret');" |
|
33084
1da63a04d506
Make sure the selection anchor is removed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33083
diff
changeset
|
1597 | "r.selectNodeContents(n);" |
|
1da63a04d506
Make sure the selection anchor is removed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33083
diff
changeset
|
1598 | "var f = r.extractContents();" |
|
1da63a04d506
Make sure the selection anchor is removed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33083
diff
changeset
|
1599 | "r.selectNode(n);" |
|
1da63a04d506
Make sure the selection anchor is removed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33083
diff
changeset
|
1600 | "r.insertNode(f);" |
|
1da63a04d506
Make sure the selection anchor is removed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33083
diff
changeset
|
1601 | "n.parentNode.removeChild(n);" |
|
33083
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1602 | "s.removeAllRanges();" |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1603 | "s.addRange(r);"); |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1604 | } |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1605 | |
|
e96acbe0e928
Move caret selection into GtkWebView code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33054
diff
changeset
|
1606 | void |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1607 | gtk_webview_append_html(GtkWebView *webview, const char *html) |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1608 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1609 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1610 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1611 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1612 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1613 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
33222
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1614 | g_queue_push_tail(priv->load_queue, GINT_TO_POINTER(LOAD_HTML)); |
|
868965128ec8
Combine HTML and JS loading queues.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33221
diff
changeset
|
1615 | g_queue_push_tail(priv->load_queue, g_strdup(html)); |
|
33224
4bb64c5ef111
Ensure queue processing function is only added once.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33223
diff
changeset
|
1616 | if (!priv->is_loading && priv->loader == 0) |
|
4bb64c5ef111
Ensure queue processing function is only added once.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33223
diff
changeset
|
1617 | priv->loader = g_idle_add((GSourceFunc)process_load_queue, webview); |
|
32441
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1618 | } |
|
8a015ca299f9
Apparently I missed these in my previous commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff
changeset
|
1619 | |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1620 | void |
|
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1621 | gtk_webview_set_vadjustment(GtkWebView *webview, GtkAdjustment *vadj) |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1622 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1623 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1624 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1625 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1626 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1627 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1628 | priv->vadj = vadj; |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1629 | } |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1630 | |
|
32513
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1631 | void |
|
9352b4c92d13
Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32506
diff
changeset
|
1632 | gtk_webview_scroll_to_end(GtkWebView *webview, gboolean smooth) |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1633 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1634 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1635 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1636 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1637 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1638 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1639 | if (priv->scroll_time) |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1640 | g_timer_destroy(priv->scroll_time); |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1641 | if (priv->scroll_src) |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1642 | g_source_remove(priv->scroll_src); |
|
32796
34f384b0d75f
Rearrange these files a bit to group common functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32794
diff
changeset
|
1643 | if (smooth) { |
|
32500
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1644 | priv->scroll_time = g_timer_new(); |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1645 | priv->scroll_src = g_timeout_add_full(G_PRIORITY_LOW, SCROLL_DELAY, smooth_scroll_cb, priv, NULL); |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1646 | } else { |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1647 | priv->scroll_time = NULL; |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1648 | priv->scroll_src = g_idle_add_full(G_PRIORITY_LOW, scroll_idle_cb, priv, NULL); |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1649 | } |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1650 | } |
|
d8aa742c6288
webkit: Scroll to end when appending html.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
32489
diff
changeset
|
1651 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1652 | void |
|
33247
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1653 | gtk_webview_set_autoscroll(GtkWebView *webview, gboolean scroll) |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1654 | { |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1655 | GtkWebViewPriv *priv; |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1656 | |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1657 | g_return_if_fail(webview != NULL); |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1658 | |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1659 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1660 | priv->autoscroll = scroll; |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1661 | } |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1662 | |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1663 | gboolean |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1664 | gtk_webview_get_autoscroll(GtkWebView *webview) |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1665 | { |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1666 | GtkWebViewPriv *priv; |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1667 | |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1668 | g_return_val_if_fail(webview != NULL, FALSE); |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1669 | |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1670 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1671 | return priv->autoscroll; |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1672 | } |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1673 | |
|
d8d6e87ce594
Add autoscrolling for the debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33241
diff
changeset
|
1674 | void |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1675 | gtk_webview_page_up(GtkWebView *webview) |
|
32772
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1676 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1677 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1678 | GtkAdjustment *vadj; |
|
32772
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1679 | gdouble scroll_val; |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1680 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1681 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1682 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1683 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1684 | vadj = priv->vadj; |
|
32772
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1685 | scroll_val = gtk_adjustment_get_value(vadj) - gtk_adjustment_get_page_size(vadj); |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1686 | scroll_val = MAX(scroll_val, gtk_adjustment_get_lower(vadj)); |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1687 | |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1688 | gtk_adjustment_set_value(vadj, scroll_val); |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1689 | } |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1690 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1691 | void |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1692 | gtk_webview_page_down(GtkWebView *webview) |
|
32772
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1693 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1694 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1695 | GtkAdjustment *vadj; |
|
32772
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1696 | gdouble scroll_val; |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1697 | gdouble page_size; |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1698 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1699 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1700 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1701 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1702 | vadj = priv->vadj; |
|
32772
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1703 | page_size = gtk_adjustment_get_page_size(vadj); |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1704 | scroll_val = gtk_adjustment_get_value(vadj) + page_size; |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1705 | scroll_val = MIN(scroll_val, gtk_adjustment_get_upper(vadj) - page_size); |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1706 | |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1707 | gtk_adjustment_set_value(vadj, scroll_val); |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1708 | } |
|
9d79ccaeedfe
Add page up/down for WebKit view.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32577
diff
changeset
|
1709 | |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1710 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1711 | gtk_webview_set_editable(GtkWebView *webview, gboolean editable) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1712 | { |
|
33197
151a6a5a0521
The default editing flags should enable everything.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
1713 | GtkWebViewPriv *priv; |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1714 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1715 | |
|
33197
151a6a5a0521
The default editing flags should enable everything.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
1716 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1717 | webkit_web_view_set_editable(WEBKIT_WEB_VIEW(webview), editable); |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1718 | |
|
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1719 | if (editable) { |
|
33028
2a61ad7ca6b6
Apparently, there's an object signal for this.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33025
diff
changeset
|
1720 | g_signal_connect(G_OBJECT(webview), "user-changed-contents", |
|
2a61ad7ca6b6
Apparently, there's an object signal for this.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33025
diff
changeset
|
1721 | G_CALLBACK(editable_input_cb), NULL); |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1722 | } else { |
|
33028
2a61ad7ca6b6
Apparently, there's an object signal for this.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33025
diff
changeset
|
1723 | g_signal_handlers_disconnect_by_func(G_OBJECT(webview), |
|
2a61ad7ca6b6
Apparently, there's an object signal for this.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33025
diff
changeset
|
1724 | G_CALLBACK(editable_input_cb), |
|
2a61ad7ca6b6
Apparently, there's an object signal for this.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33025
diff
changeset
|
1725 | NULL); |
|
33007
78b670090850
Add a changed signal shortcut for editable webview changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33006
diff
changeset
|
1726 | } |
|
33197
151a6a5a0521
The default editing flags should enable everything.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
1727 | |
|
151a6a5a0521
The default editing flags should enable everything.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
1728 | priv->format_functions = GTK_WEBVIEW_ALL; |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1729 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1730 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1731 | void |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1732 | gtk_webview_setup_entry(GtkWebView *webview, PurpleConnectionFlags flags) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1733 | { |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1734 | GtkWebViewButtons buttons; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1735 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1736 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1737 | |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1738 | if (flags & PURPLE_CONNECTION_HTML) { |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1739 | gboolean bold, italic, underline, strike; |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1740 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1741 | buttons = GTK_WEBVIEW_ALL; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1742 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1743 | if (flags & PURPLE_CONNECTION_NO_BGCOLOR) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1744 | buttons &= ~GTK_WEBVIEW_BACKCOLOR; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1745 | if (flags & PURPLE_CONNECTION_NO_FONTSIZE) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1746 | { |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1747 | buttons &= ~GTK_WEBVIEW_GROW; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1748 | buttons &= ~GTK_WEBVIEW_SHRINK; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1749 | } |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1750 | if (flags & PURPLE_CONNECTION_NO_URLDESC) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1751 | buttons &= ~GTK_WEBVIEW_LINKDESC; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1752 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1753 | gtk_webview_get_current_format(webview, &bold, &italic, &underline, &strike); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1754 | |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1755 | gtk_webview_set_format_functions(webview, GTK_WEBVIEW_ALL); |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1756 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_bold") != bold) |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1757 | gtk_webview_toggle_bold(webview); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1758 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1759 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_italic") != italic) |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1760 | gtk_webview_toggle_italic(webview); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1761 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1762 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_underline") != underline) |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1763 | gtk_webview_toggle_underline(webview); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1764 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1765 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_strike") != strike) |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1766 | gtk_webview_toggle_strike(webview); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1767 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1768 | gtk_webview_toggle_fontface(webview, |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1769 | purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/font_face")); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1770 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1771 | if (!(flags & PURPLE_CONNECTION_NO_FONTSIZE)) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1772 | { |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1773 | int size = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/font_size"); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1774 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1775 | /* 3 is the default. */ |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1776 | if (size != 3) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1777 | gtk_webview_font_set_size(webview, size); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1778 | } |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1779 | |
|
33025
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1780 | gtk_webview_toggle_forecolor(webview, |
|
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1781 | purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/fgcolor")); |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1782 | |
|
33025
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1783 | if (!(flags & PURPLE_CONNECTION_NO_BGCOLOR)) { |
|
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1784 | gtk_webview_toggle_backcolor(webview, |
|
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1785 | purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/bgcolor")); |
|
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1786 | } else { |
|
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1787 | gtk_webview_toggle_backcolor(webview, ""); |
|
74cd56966dbc
This colour parsing seems unnecessary now.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33024
diff
changeset
|
1788 | } |
|
32810
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1789 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1790 | if (flags & PURPLE_CONNECTION_FORMATTING_WBFO) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1791 | gtk_webview_set_whole_buffer_formatting_only(webview, TRUE); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1792 | else |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1793 | gtk_webview_set_whole_buffer_formatting_only(webview, FALSE); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1794 | } else { |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1795 | buttons = GTK_WEBVIEW_SMILEY | GTK_WEBVIEW_IMAGE; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1796 | webview_clear_formatting(webview); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1797 | } |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1798 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1799 | if (flags & PURPLE_CONNECTION_NO_IMAGES) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1800 | buttons &= ~GTK_WEBVIEW_IMAGE; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1801 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1802 | if (flags & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY) |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1803 | buttons |= GTK_WEBVIEW_CUSTOM_SMILEY; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1804 | else |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1805 | buttons &= ~GTK_WEBVIEW_CUSTOM_SMILEY; |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1806 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1807 | gtk_webview_set_format_functions(webview, buttons); |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1808 | } |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1809 | |
|
17dceb2423c2
Add a function for setting a WebView entry based on the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32805
diff
changeset
|
1810 | void |
|
33021
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1811 | pidgin_webview_set_spellcheck(GtkWebView *webview, gboolean enable) |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1812 | { |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1813 | WebKitWebSettings *settings; |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1814 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1815 | g_return_if_fail(webview != NULL); |
|
33021
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1816 | |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1817 | settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webview)); |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1818 | g_object_set(G_OBJECT(settings), "enable-spell-checking", enable, NULL); |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1819 | webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webview), settings); |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1820 | } |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1821 | |
|
3dc4b2cdba7f
Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33020
diff
changeset
|
1822 | void |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1823 | gtk_webview_set_whole_buffer_formatting_only(GtkWebView *webview, gboolean wbfo) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1824 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1825 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1826 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1827 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1828 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1829 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1830 | priv->edit.wbfo = wbfo; |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1831 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1832 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1833 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1834 | gtk_webview_set_format_functions(GtkWebView *webview, GtkWebViewButtons buttons) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1835 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1836 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1837 | GObject *object; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1838 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1839 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1840 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1841 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1842 | object = g_object_ref(G_OBJECT(webview)); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1843 | priv->format_functions = buttons; |
|
32812
5be5c09c86de
Emit the allowed-formats-updated signal when the set_format_functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32811
diff
changeset
|
1844 | g_signal_emit(object, signals[BUTTONS_UPDATE], 0, buttons); |
|
5be5c09c86de
Emit the allowed-formats-updated signal when the set_format_functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32811
diff
changeset
|
1845 | g_object_unref(object); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1846 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1847 | |
|
33231
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1848 | void |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1849 | gtk_webview_activate_anchor(WebKitDOMHTMLAnchorElement *link) |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1850 | { |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1851 | WebKitDOMDocument *doc; |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1852 | WebKitDOMEvent *event; |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1853 | |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1854 | doc = webkit_dom_node_get_owner_document(WEBKIT_DOM_NODE(link)); |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1855 | event = webkit_dom_document_create_event(doc, "MouseEvent", NULL); |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1856 | webkit_dom_event_init_event(event, "click", TRUE, TRUE); |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1857 | webkit_dom_node_dispatch_event(WEBKIT_DOM_NODE(link), event, NULL); |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1858 | } |
|
ab65d36fd975
Add a convenience function to activate a WebKit anchor element.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33229
diff
changeset
|
1859 | |
|
33229
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1860 | gboolean |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1861 | gtk_webview_class_register_protocol(const char *name, |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1862 | gboolean (*activate)(GtkWebView *webview, const char *uri), |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1863 | gboolean (*context_menu)(GtkWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu)) |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1864 | { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1865 | GtkWebViewClass *klass; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1866 | GtkWebViewProtocol *proto; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1867 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1868 | g_return_val_if_fail(name, FALSE); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1869 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1870 | klass = g_type_class_ref(GTK_TYPE_WEBVIEW); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1871 | g_return_val_if_fail(klass, FALSE); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1872 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1873 | if ((proto = webview_find_protocol(name, TRUE))) { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1874 | if (activate) { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1875 | return FALSE; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1876 | } |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1877 | klass->protocols = g_list_remove(klass->protocols, proto); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1878 | g_free(proto->name); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1879 | g_free(proto); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1880 | return TRUE; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1881 | } else if (!activate) { |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1882 | return FALSE; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1883 | } |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1884 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1885 | proto = g_new0(GtkWebViewProtocol, 1); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1886 | proto->name = g_strdup(name); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1887 | proto->length = strlen(name); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1888 | proto->activate = activate; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1889 | proto->context_menu = context_menu; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1890 | klass->protocols = g_list_prepend(klass->protocols, proto); |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1891 | |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1892 | return TRUE; |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1893 | } |
|
f9503bfa54a4
Add protocol registration on a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33228
diff
changeset
|
1894 | |
|
33004
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1895 | gchar * |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1896 | gtk_webview_get_head_html(GtkWebView *webview) |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1897 | { |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1898 | WebKitDOMDocument *doc; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1899 | WebKitDOMHTMLHeadElement *head; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1900 | gchar *html; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1901 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1902 | g_return_val_if_fail(webview != NULL, NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1903 | |
|
33004
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1904 | doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1905 | head = webkit_dom_document_get_head(doc); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1906 | html = webkit_dom_html_element_get_inner_html(WEBKIT_DOM_HTML_ELEMENT(head)); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1907 | |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1908 | return html; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1909 | } |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1910 | |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1911 | gchar * |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1912 | gtk_webview_get_body_html(GtkWebView *webview) |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1913 | { |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1914 | WebKitDOMDocument *doc; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1915 | WebKitDOMHTMLElement *body; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1916 | gchar *html; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1917 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1918 | g_return_val_if_fail(webview != NULL, NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1919 | |
|
33004
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1920 | doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1921 | body = webkit_dom_document_get_body(doc); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1922 | html = webkit_dom_html_element_get_inner_html(body); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1923 | |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1924 | return html; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1925 | } |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1926 | |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1927 | gchar * |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1928 | gtk_webview_get_body_text(GtkWebView *webview) |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1929 | { |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1930 | WebKitDOMDocument *doc; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1931 | WebKitDOMHTMLElement *body; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1932 | gchar *text; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1933 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1934 | g_return_val_if_fail(webview != NULL, NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1935 | |
|
33004
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1936 | doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1937 | body = webkit_dom_document_get_body(doc); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1938 | text = webkit_dom_html_element_get_inner_text(body); |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1939 | |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1940 | return text; |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1941 | } |
|
2a86ad923464
Add some convenience functions to get the contents of a GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32994
diff
changeset
|
1942 | |
|
33014
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1943 | gchar * |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1944 | gtk_webview_get_selected_text(GtkWebView *webview) |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1945 | { |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1946 | WebKitDOMDocument *dom; |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1947 | WebKitDOMDOMWindow *win; |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1948 | WebKitDOMDOMSelection *sel; |
|
33254
88b2504d0acf
Fix an warning with selections. Selections are weird.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33253
diff
changeset
|
1949 | WebKitDOMRange *range = NULL; |
|
33014
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1950 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1951 | g_return_val_if_fail(webview != NULL, NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1952 | |
|
33014
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1953 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1954 | win = webkit_dom_document_get_default_view(dom); |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1955 | sel = webkit_dom_dom_window_get_selection(win); |
|
33254
88b2504d0acf
Fix an warning with selections. Selections are weird.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33253
diff
changeset
|
1956 | if (webkit_dom_dom_selection_get_range_count(sel)) |
|
88b2504d0acf
Fix an warning with selections. Selections are weird.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33253
diff
changeset
|
1957 | range = webkit_dom_dom_selection_get_range_at(sel, 0, NULL); |
|
33014
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1958 | |
|
33254
88b2504d0acf
Fix an warning with selections. Selections are weird.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33253
diff
changeset
|
1959 | if (range) |
|
88b2504d0acf
Fix an warning with selections. Selections are weird.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33253
diff
changeset
|
1960 | return webkit_dom_range_get_text(range); |
|
88b2504d0acf
Fix an warning with selections. Selections are weird.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33253
diff
changeset
|
1961 | else |
|
88b2504d0acf
Fix an warning with selections. Selections are weird.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33253
diff
changeset
|
1962 | return NULL; |
|
33014
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1963 | } |
|
2f8a83007ab9
Set up the link description from the already selected text.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33013
diff
changeset
|
1964 | |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1965 | GtkWebViewButtons |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1966 | gtk_webview_get_format_functions(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1967 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1968 | GtkWebViewPriv *priv; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1969 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1970 | g_return_val_if_fail(webview != NULL, 0); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1971 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1972 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1973 | return priv->format_functions; |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1974 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1975 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1976 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1977 | gtk_webview_get_current_format(GtkWebView *webview, gboolean *bold, |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1978 | gboolean *italic, gboolean *underline, |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1979 | gboolean *strike) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1980 | { |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1981 | WebKitDOMDocument *dom; |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1982 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1983 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
1984 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1985 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1986 | |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1987 | if (bold) |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1988 | *bold = webkit_dom_document_query_command_state(dom, "bold"); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1989 | if (italic) |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1990 | *italic = webkit_dom_document_query_command_state(dom, "italic"); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1991 | if (underline) |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1992 | *underline = webkit_dom_document_query_command_state(dom, "underline"); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1993 | if (strike) |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1994 | *strike = webkit_dom_document_query_command_state(dom, "strikethrough"); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1995 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1996 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
1997 | char * |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1998 | gtk_webview_get_current_fontface(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
1999 | { |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2000 | WebKitDOMDocument *dom; |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2001 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2002 | g_return_val_if_fail(webview != NULL, NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2003 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2004 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2005 | return webkit_dom_document_query_command_value(dom, "fontName"); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2006 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2007 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2008 | char * |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2009 | gtk_webview_get_current_forecolor(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2010 | { |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2011 | WebKitDOMDocument *dom; |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2012 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2013 | g_return_val_if_fail(webview != NULL, NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2014 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2015 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2016 | return webkit_dom_document_query_command_value(dom, "foreColor"); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2017 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2018 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2019 | char * |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2020 | gtk_webview_get_current_backcolor(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2021 | { |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2022 | WebKitDOMDocument *dom; |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2023 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2024 | g_return_val_if_fail(webview != NULL, NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2025 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2026 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2027 | return webkit_dom_document_query_command_value(dom, "backColor"); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2028 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2029 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2030 | gint |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2031 | gtk_webview_get_current_fontsize(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2032 | { |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2033 | WebKitDOMDocument *dom; |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2034 | gchar *text; |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2035 | gint size; |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2036 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2037 | g_return_val_if_fail(webview != NULL, 0); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2038 | |
|
32895
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2039 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2040 | text = webkit_dom_document_query_command_value(dom, "fontSize"); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2041 | size = atoi(text); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2042 | g_free(text); |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2043 | |
|
fbd3b11e535a
WebKit knows the current formatting of the selection better than we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32894
diff
changeset
|
2044 | return size; |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2045 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2046 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2047 | gboolean |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2048 | gtk_webview_get_editable(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2049 | { |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2050 | return webkit_web_view_get_editable(WEBKIT_WEB_VIEW(webview)); |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2051 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2052 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2053 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2054 | gtk_webview_clear_formatting(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2055 | { |
|
32813
d1dc6f667a34
Emit the format-cleared signal when the webview format is cleared.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32812
diff
changeset
|
2056 | GObject *object; |
|
d1dc6f667a34
Emit the format-cleared signal when the webview format is cleared.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32812
diff
changeset
|
2057 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2058 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2059 | |
|
32813
d1dc6f667a34
Emit the format-cleared signal when the webview format is cleared.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32812
diff
changeset
|
2060 | object = g_object_ref(G_OBJECT(webview)); |
|
d1dc6f667a34
Emit the format-cleared signal when the webview format is cleared.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32812
diff
changeset
|
2061 | g_signal_emit(object, signals[CLEAR_FORMAT], 0); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2062 | g_object_unref(object); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2063 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2064 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2065 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2066 | gtk_webview_toggle_bold(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2067 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2068 | g_return_if_fail(webview != NULL); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2069 | emit_format_signal(webview, GTK_WEBVIEW_BOLD); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2070 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2071 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2072 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2073 | gtk_webview_toggle_italic(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2074 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2075 | g_return_if_fail(webview != NULL); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2076 | emit_format_signal(webview, GTK_WEBVIEW_ITALIC); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2077 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2078 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2079 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2080 | gtk_webview_toggle_underline(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2081 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2082 | g_return_if_fail(webview != NULL); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2083 | emit_format_signal(webview, GTK_WEBVIEW_UNDERLINE); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2084 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2085 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2086 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2087 | gtk_webview_toggle_strike(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2088 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2089 | g_return_if_fail(webview != NULL); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2090 | emit_format_signal(webview, GTK_WEBVIEW_STRIKE); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2091 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2092 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2093 | gboolean |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2094 | gtk_webview_toggle_forecolor(GtkWebView *webview, const char *color) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2095 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2096 | g_return_val_if_fail(webview != NULL, FALSE); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2097 | |
|
33006
86765d2f6f3b
Setup WBFO in a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33004
diff
changeset
|
2098 | do_formatting(webview, "foreColor", color); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2099 | emit_format_signal(webview, GTK_WEBVIEW_FORECOLOR); |
|
32823
f179695f60cb
Add some code for manipulating the WebView in edit-mode. Thanks to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32813
diff
changeset
|
2100 | |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2101 | return FALSE; |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2102 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2103 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2104 | gboolean |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2105 | gtk_webview_toggle_backcolor(GtkWebView *webview, const char *color) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2106 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2107 | g_return_val_if_fail(webview != NULL, FALSE); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2108 | |
|
33006
86765d2f6f3b
Setup WBFO in a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33004
diff
changeset
|
2109 | do_formatting(webview, "backColor", color); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2110 | emit_format_signal(webview, GTK_WEBVIEW_BACKCOLOR); |
|
32823
f179695f60cb
Add some code for manipulating the WebView in edit-mode. Thanks to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32813
diff
changeset
|
2111 | |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2112 | return FALSE; |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2113 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2114 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2115 | gboolean |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2116 | gtk_webview_toggle_fontface(GtkWebView *webview, const char *face) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2117 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2118 | g_return_val_if_fail(webview != NULL, FALSE); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2119 | |
|
33006
86765d2f6f3b
Setup WBFO in a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33004
diff
changeset
|
2120 | do_formatting(webview, "fontName", face); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2121 | emit_format_signal(webview, GTK_WEBVIEW_FACE); |
|
32823
f179695f60cb
Add some code for manipulating the WebView in edit-mode. Thanks to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32813
diff
changeset
|
2122 | |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2123 | return FALSE; |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2124 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2125 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2126 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2127 | gtk_webview_font_set_size(GtkWebView *webview, gint size) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2128 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2129 | char *tmp; |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2130 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2131 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2132 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2133 | tmp = g_strdup_printf("%d", size); |
|
33006
86765d2f6f3b
Setup WBFO in a WebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33004
diff
changeset
|
2134 | do_formatting(webview, "fontSize", tmp); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2135 | emit_format_signal(webview, GTK_WEBVIEW_SHRINK|GTK_WEBVIEW_GROW); |
|
32823
f179695f60cb
Add some code for manipulating the WebView in edit-mode. Thanks to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32813
diff
changeset
|
2136 | g_free(tmp); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2137 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2138 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2139 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2140 | gtk_webview_font_shrink(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2141 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2142 | g_return_if_fail(webview != NULL); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2143 | emit_format_signal(webview, GTK_WEBVIEW_SHRINK); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2144 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2145 | |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2146 | void |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2147 | gtk_webview_font_grow(GtkWebView *webview) |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2148 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2149 | g_return_if_fail(webview != NULL); |
|
33018
cfa94708af72
Emit formatting toggle signals.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33017
diff
changeset
|
2150 | emit_format_signal(webview, GTK_WEBVIEW_GROW); |
|
32805
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2151 | } |
|
57f914c32dc4
Copy some editing functions from GtkIMHtml. These are incomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32803
diff
changeset
|
2152 | |
|
33012
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2153 | void |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2154 | gtk_webview_insert_hr(GtkWebView *webview) |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2155 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2156 | GtkWebViewPriv *priv; |
|
33012
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2157 | WebKitDOMDocument *dom; |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2158 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2159 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2160 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2161 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
33012
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2162 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2163 | |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2164 | priv->edit.block_changed = TRUE; |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2165 | webkit_dom_document_exec_command(dom, "insertHorizontalRule", FALSE, ""); |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2166 | priv->edit.block_changed = FALSE; |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2167 | } |
|
3a742f00a0f4
Restore Insert Horizontal Rule functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33010
diff
changeset
|
2168 | |
|
33013
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2169 | void |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2170 | gtk_webview_insert_link(GtkWebView *webview, const char *url, const char *desc) |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2171 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2172 | GtkWebViewPriv *priv; |
|
33013
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2173 | WebKitDOMDocument *dom; |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2174 | char *link; |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2175 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2176 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2177 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2178 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
33013
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2179 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
33016
509c717fcf6e
The URL probably needs to be quoted.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33014
diff
changeset
|
2180 | link = g_strdup_printf("<a href='%s'>%s</a>", url, desc ? desc : url); |
|
33013
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2181 | |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2182 | priv->edit.block_changed = TRUE; |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2183 | webkit_dom_document_exec_command(dom, "insertHTML", FALSE, link); |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2184 | priv->edit.block_changed = FALSE; |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2185 | g_free(link); |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2186 | } |
|
f62232fb738a
Restore "Insert Link" functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33012
diff
changeset
|
2187 | |
|
33017
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2188 | void |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2189 | gtk_webview_insert_image(GtkWebView *webview, int id) |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2190 | { |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2191 | GtkWebViewPriv *priv; |
|
33017
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2192 | WebKitDOMDocument *dom; |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2193 | char *img; |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2194 | |
|
33097
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2195 | g_return_if_fail(webview != NULL); |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2196 | |
|
acd0d7217593
Prevent crashing and stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33084
diff
changeset
|
2197 | priv = GTK_WEBVIEW_GET_PRIVATE(webview); |
|
33017
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2198 | dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); |
|
33054
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
2199 | img = g_strdup_printf("<img src='" PURPLE_STORED_IMAGE_PROTOCOL "%d'/>", |
|
177359654a3d
Update the webview to use the new image sources.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33030
diff
changeset
|
2200 | id); |
|
33017
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2201 | |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2202 | priv->edit.block_changed = TRUE; |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2203 | webkit_dom_document_exec_command(dom, "insertHTML", FALSE, img); |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2204 | priv->edit.block_changed = FALSE; |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2205 | g_free(img); |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2206 | } |
|
d21ab88ad911
Fixup Insert Image functionality.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33016
diff
changeset
|
2207 |