WebKitNetworkRequest *,
WebKitWebNavigationAction *,
WebKitWebPolicyDecision *, gpointer);
+static void zea_search(gpointer, gint);
static void zea_scroll(GtkAdjustment *, gint, gdouble);
static void zea_title_changed(GObject *, GParamSpec *, gpointer);
static void zea_uri_changed(GObject *, GParamSpec *, gpointer);
static Window embed = 0;
static gint clients = 0;
static gdouble global_zoom = 1.0;
+static gchar *search_text = NULL;
struct Client
zea_location_key(GtkWidget *widget, GdkEvent *event, gpointer data)
{
struct Client *c = (struct Client *)data;
+ const gchar *t;
(void)widget;
if (((GdkEventKey *)event)->keyval == GDK_KEY_Return)
{
gtk_widget_grab_focus(c->web_view);
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view),
- gtk_entry_get_text(GTK_ENTRY(c->location)));
+ t = gtk_entry_get_text(GTK_ENTRY(c->location));
+ if (t != NULL && t[0] == '/')
+ {
+ if (search_text != NULL)
+ g_free(search_text);
+ search_text = g_strdup(t + 1); /* XXX whacky */
+ zea_search(c, 1);
+ }
+ else
+ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view), t);
return TRUE;
}
}
return TRUE;
}
+void
+zea_search(gpointer data, gint direction)
+{
+ struct Client *c = (struct Client *)data;
+
+ if (search_text == NULL)
+ return;
+
+ webkit_web_view_search_text(WEBKIT_WEB_VIEW(c->web_view), search_text,
+ FALSE, direction == 1, TRUE);
+}
+
void
zea_scroll(GtkAdjustment *a, gint step_type, gdouble factor)
{
GTK_SCROLLED_WINDOW(c->scroll)), 1, -0.5);
return TRUE;
}
+ if (((GdkEventKey *)event)->keyval == GDK_KEY_n)
+ {
+ zea_search(c, 1);
+ return TRUE;
+ }
+ if (((GdkEventKey *)event)->keyval == GDK_KEY_p)
+ {
+ zea_search(c, -1);
+ return TRUE;
+ }
}
else if (((GdkEventKey *)event)->keyval == GDK_KEY_Escape)
{