Introduction
Introduction Statistics Contact Development Disclaimer Help
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 };
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.