tThe right click menu to copy the link URI will now work. Thanks to Carlos Pita… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 81d23cb76d40331656efd61338c0fb1ccc3422c2 | |
parent 2e92060efcb672e44dfd3424a9dadffcdf9aa770 | |
Author: Christoph Lohmann <[email protected]> | |
Date: Sat, 13 Oct 2012 07:28:16 +0200 | |
The right click menu to copy the link URI will now work. Thanks to Carlos | |
Pita! | |
Diffstat: | |
M surf.c | 42 +++++++++++++++++++++++++++++… | |
1 file changed, 42 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/surf.c b/surf.c | |
t@@ -93,6 +93,8 @@ static Client *newclient(void); | |
static void newwindow(Client *c, const Arg *arg, gboolean noembed); | |
static void newrequest(SoupSession *s, SoupMessage *msg, gpointer v); | |
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 void print(Client *c, const Arg *arg); | |
static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpointer d… | |
static void progresschange(WebKitWebView *view, GParamSpec *pspec, Client *c); | |
t@@ -513,6 +515,7 @@ newclient(void) { | |
g_signal_connect(G_OBJECT(c->view), "notify::progress", G_CALLBACK(pro… | |
g_signal_connect(G_OBJECT(c->view), "download-requested", G_CALLBACK(i… | |
g_signal_connect(G_OBJECT(c->view), "button-release-event", G_CALLBACK… | |
+ g_signal_connect(G_OBJECT(c->view), "populate-popup", G_CALLBACK(popul… | |
/* Indicator */ | |
c->indicator = gtk_drawing_area_new(); | |
t@@ -615,6 +618,45 @@ 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)); | |
+ | |
+ for(GList *l = items; l; l = l->next) { | |
+ g_signal_connect(l->data, "activate", G_CALLBACK(popupactivate… | |
+ } | |
+ | |
+ g_list_free(items); | |
+} | |
+ | |
+static void | |
+popupactivate(GtkMenuItem *menu, Client *c) { | |
+ /* | |
+ * context-menu-action-2000 open link | |
+ * context-menu-action-1 open link in window | |
+ * context-menu-action-2 download linked file | |
+ * context-menu-action-3 copy link location | |
+ * context-menu-action-13 reload | |
+ * context-menu-action-10 back | |
+ * context-menu-action-11 forward | |
+ * context-menu-action-12 stop | |
+ */ | |
+ | |
+ GtkAction *a = NULL; | |
+ const char *name; | |
+ GtkClipboard *prisel; | |
+ | |
+ a = gtk_activatable_get_related_action(GTK_ACTIVATABLE(menu)); | |
+ if(a == NULL) | |
+ return; | |
+ | |
+ name = gtk_action_get_name(a); | |
+ if(!g_strcmp0(name, "context-menu-action-3")) { | |
+ prisel = gtk_clipboard_get(GDK_SELECTION_PRIMARY); | |
+ gtk_clipboard_set_text(prisel, c->linkhover, -1); | |
+ } | |
+} | |
+ | |
void | |
pasteuri(GtkClipboard *clipboard, const char *text, gpointer d) { | |
Arg arg = {.v = text }; |