(no commit message)
[prss.git] / src / webbrowser.c
1 /*
2  * Copyright (C) 2012-2013 jeanfi@gmail.com
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of the
7  * License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  * 02110-1301 USA
18  */
19
20 #include <webkit/webkit.h>
21
22 #include "webbrowser.h"
23
24 static WebKitWebView *view;
25
26 static gboolean new_window_requested_cbk(WebKitWebView *view,
27                                          WebKitWebFrame *frame,
28                                          WebKitNetworkRequest *rq,
29                                          WebKitWebNavigationAction *action,
30                                          WebKitWebPolicyDecision *decision)
31 {
32         webkit_web_view_load_uri(view, webkit_network_request_get_uri(rq));
33
34         webkit_web_policy_decision_ignore(decision);
35
36         return TRUE;
37 }
38
39 GtkWidget *web_get_widget()
40 {
41         if (!view) {
42                 view = WEBKIT_WEB_VIEW(webkit_web_view_new());
43                 g_signal_connect(view,
44                                  "new-window-policy-decision-requested",
45                                  G_CALLBACK(new_window_requested_cbk),
46                                  view);
47
48         }
49
50         return GTK_WIDGET(view);
51 }
52
53 void web_load(const char *str)
54 {
55         webkit_web_view_load_string(view, str, NULL, "UTF-8", "file://");
56 }