static char *buildfile(const char *path);
static char *buildpath(const char *path);
static Client *newclient(Client *c);
-static void addaccelgroup(Client *c);
static void loaduri(Client *c, const Arg *a);
static const char *geturi(Client *c);
static void setatom(Client *c, int a, const char *v);
static GtkWidget *createview(WebKitWebView *v, WebKitNavigationAction *a,
Client *c);
static gboolean buttonreleased(GtkWidget *w, GdkEvent *e, Client *c);
-static gboolean keypress(GtkAccelGroup *group, GObject *obj, guint key,
- GdkModifierType mods, Client *c);
static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event,
gpointer d);
static gboolean winevent(GtkWidget *w, GdkEvent *e, Client *c);
return c;
}
-void
-addaccelgroup(Client *c)
-{
- int i;
- GtkAccelGroup *group = gtk_accel_group_new();
- GClosure *closure;
-
- for (i = 0; i < LENGTH(keys); i++) {
- closure = g_cclosure_new(G_CALLBACK(keypress), c, NULL);
- gtk_accel_group_connect(group, keys[i].keyval, keys[i].mod, 0,
- closure);
- }
- gtk_window_add_accel_group(GTK_WINDOW(c->win), group);
-}
-
void
loaduri(Client *c, const Arg *a)
{
reload(c, a);
} else {
webkit_web_view_load_uri(c->view, url);
- c->title = geturi(c);
updatetitle(c);
}
webkit_cookie_manager_set_accept_policy(
webkit_web_context_get_cookie_manager(context),
cookiepolicy_get());
+ /* languages */
+ webkit_web_context_set_preferred_languages(context,
+ preferedlanguages);
+ webkit_web_context_set_spell_checking_languages(context,
+ spellinglanguages);
+ webkit_web_context_set_spell_checking_enabled(context,
+ enablespellchecking);
g_signal_connect(G_OBJECT(context), "download-started",
G_CALLBACK(downloadstarted), c);
return FALSE;
}
-gboolean
-keypress(GtkAccelGroup *group, GObject *obj, guint key, GdkModifierType mods,
- Client *c)
-{
- guint i;
- gboolean processed = FALSE;
-
- mods = CLEANMASK(mods);
- key = gdk_keyval_to_lower(key);
- updatewinid(c);
- for (i = 0; i < LENGTH(keys); i++) {
- if (key == keys[i].keyval
- && mods == keys[i].mod
- && keys[i].func) {
- keys[i].func(c, &(keys[i].arg));
- processed = TRUE;
- }
- }
-
- return processed;
-}
-
GdkFilterReturn
processx(GdkXEvent *e, GdkEvent *event, gpointer d)
{
gboolean
winevent(GtkWidget *w, GdkEvent *e, Client *c)
{
+ int i;
+
switch (e->type) {
case GDK_ENTER_NOTIFY:
c->overtitle = c->targeturi;
updatetitle(c);
break;
+ case GDK_KEY_PRESS:
+ if (!kioskmode) {
+ for (i = 0; i < LENGTH(keys); ++i) {
+ if (gdk_keyval_to_lower(e->key.keyval) ==
+ keys[i].keyval &&
+ CLEANMASK(e->key.state) == keys[i].mod &&
+ keys[i].func) {
+ updatewinid(c);
+ keys[i].func(c, &(keys[i].arg));
+ return TRUE;
+ }
+ }
+ }
case GDK_LEAVE_NOTIFY:
c->overtitle = NULL;
updatetitle(c);
webkit_web_view_set_background_color(c->view, &bgcolor);
if (!kioskmode) {
- addaccelgroup(c);
gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK);
gdk_window_add_filter(gwin, processx, c);
}
G_CALLBACK(destroywin), c);
g_signal_connect(G_OBJECT(w), "enter-notify-event",
G_CALLBACK(winevent), c);
+ g_signal_connect(G_OBJECT(w), "key-press-event",
+ G_CALLBACK(winevent), c);
g_signal_connect(G_OBJECT(w), "leave-notify-event",
G_CALLBACK(winevent), c);
g_signal_connect(G_OBJECT(w), "window-state-event",
void
loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client *c)
{
+ const char *title = geturi(c);
+
switch (e) {
case WEBKIT_LOAD_STARTED:
+ setatom(c, AtomUri, title);
+ c->title = title;
c->tlsflags = G_TLS_CERTIFICATE_VALIDATE_ALL + 1;
break;
case WEBKIT_LOAD_REDIRECTED:
- setatom(c, AtomUri, geturi(c));
+ setatom(c, AtomUri, title);
+ c->title = title;
break;
case WEBKIT_LOAD_COMMITTED:
+ setatom(c, AtomUri, title);
+ c->title = title;
if (!webkit_web_view_get_tls_info(c->view, NULL,
&(c->tlsflags)))
c->tlsflags = G_TLS_CERTIFICATE_VALIDATE_ALL + 1;
- setatom(c, AtomUri, geturi(c));
-
if (enablestyle)
setstyle(c, getstyle(geturi(c)));
break;
{
Arg arg;
- if (webkit_hit_test_result_get_context(h) & OnMedia) {
- arg = (Arg)VIDEOPLAY(webkit_hit_test_result_get_media_uri(h));
- spawn(c, &arg);
- }
+ arg = (Arg)VIDEOPLAY(webkit_hit_test_result_get_media_uri(h));
+ spawn(c, &arg);
}
int
stylefile = EARGF(usage());
break;
case 'u':
- useragent = EARGF(usage());
+ fulluseragent = EARGF(usage());
break;
case 'v':
die("surf-"VERSION", ©2009-2015 surf engineers, "