Enable resizable text areas.
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 28d8465..bcb3a7b 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -29,7 +29,7 @@
 char *argv0;
 
 #define LENGTH(x)               (sizeof x / sizeof x[0])
-#define CLEANMASK(mask)                (mask & (MODKEY|GDK_SHIFT_MASK))
+#define CLEANMASK(mask)         (mask & (MODKEY|GDK_SHIFT_MASK))
 #define COOKIEJAR_TYPE          (cookiejar_get_type ())
 #define COOKIEJAR(obj)          (G_TYPE_CHECK_INSTANCE_CAST ((obj), COOKIEJAR_TYPE, CookieJar))
 
@@ -148,8 +148,9 @@ static void navigate(Client *c, const Arg *arg);
 static Client *newclient(void);
 static void newwindow(Client *c, const Arg *arg, gboolean noembed);
 static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d);
-static void populatepopup(WebKitWebView *web, GtkMenu *menu, Client *c);
-static void popupactivate(GtkMenuItem *menu, Client *);
+static gboolean contextmenu(WebKitWebView *view, GtkWidget *menu,
+               WebKitHitTestResult *target, gboolean keyboard, Client *c);
+static void menuactivate(GtkMenuItem *item, Client *c);
 static void print(Client *c, const Arg *arg);
 static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event,
                gpointer d);
@@ -781,8 +782,8 @@ newclient(void) {
                        "button-release-event",
                        G_CALLBACK(buttonrelease), c);
        g_signal_connect(G_OBJECT(c->view),
-                       "populate-popup",
-                       G_CALLBACK(populatepopup), c);
+                       "context-menu",
+                       G_CALLBACK(contextmenu), c);
        g_signal_connect(G_OBJECT(c->view),
                        "resource-request-starting",
                        G_CALLBACK(beforerequest), c);
@@ -847,6 +848,8 @@ newclient(void) {
                        kioskmode ^ 1, NULL);
        g_object_set(G_OBJECT(settings), "default-font-size",
                        defaultfontsize, NULL);
+       g_object_set(G_OBJECT(settings), "resizable-text-areas",
+                       1, NULL);
 
        /*
         * While stupid, CSS specifies that a pixel represents 1/96 of an inch.
@@ -945,19 +948,21 @@ newwindow(Client *c, const Arg *arg, gboolean noembed) {
        spawn(NULL, &a);
 }
 
-static void
-populatepopup(WebKitWebView *web, GtkMenu *menu, Client *c) {
-       GList *items = gtk_container_get_children(GTK_CONTAINER(menu));
+static gboolean
+contextmenu(WebKitWebView *view, GtkWidget *menu, WebKitHitTestResult *target,
+               gboolean keyboard, Client *c) {
+       GList *items = gtk_container_get_children(GTK_CONTAINER(GTK_MENU(menu)));
 
        for(GList *l = items; l; l = l->next) {
-               g_signal_connect(l->data, "activate", G_CALLBACK(popupactivate), c);
+               g_signal_connect(l->data, "activate", G_CALLBACK(menuactivate), c);
        }
 
        g_list_free(items);
+       return FALSE;
 }
 
 static void
-popupactivate(GtkMenuItem *menu, Client *c) {
+menuactivate(GtkMenuItem *item, Client *c) {
        /*
         * context-menu-action-2000     open link
         * context-menu-action-1        open link in window
@@ -973,7 +978,7 @@ popupactivate(GtkMenuItem *menu, Client *c) {
        const char *name;
        GtkClipboard *prisel;
 
-       a = gtk_activatable_get_related_action(GTK_ACTIVATABLE(menu));
+       a = gtk_activatable_get_related_action(GTK_ACTIVATABLE(item));
        if(a == NULL)
                return;
 
@@ -1179,8 +1184,10 @@ stop(Client *c, const Arg *arg) {
 static void
 titlechange(WebKitWebView *view, GParamSpec *pspec, Client *c) {
        const gchar *t = webkit_web_view_get_title(view);
-       c->title = copystr(&c->title, t);
-       updatetitle(c);
+       if (t) {
+               c->title = copystr(&c->title, t);
+               updatetitle(c);
+       }
 }
 
 static void