aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--README3
-rwxr-xr-xexamples/data/scripts/follow.sh4
-rwxr-xr-xexamples/data/scripts/load_cookies.sh2
-rw-r--r--src/callbacks.c45
-rw-r--r--src/callbacks.h3
-rw-r--r--src/io.c2
-rw-r--r--src/util.c2
-rw-r--r--src/uzbl-core.c1
-rw-r--r--src/uzbl-core.h3
-rw-r--r--src/variables.c2
11 files changed, 27 insertions, 42 deletions
diff --git a/Makefile b/Makefile
index 00a8f89..1df667b 100644
--- a/Makefile
+++ b/Makefile
@@ -25,7 +25,7 @@ ARCH:=$(shell uname -m)
COMMIT_HASH:=$(shell ./misc/hash.sh)
-CPPFLAGS += -DARCH=\"$(ARCH)\" -DCOMMIT=\"$(COMMIT_HASH)\"
+CPPFLAGS += -D_BSD_SOURCE -D_POSIX_SOURCE -DARCH=\"$(ARCH)\" -DCOMMIT=\"$(COMMIT_HASH)\"
PKG_CFLAGS:=$(shell pkg-config --cflags $(REQ_PKGS))
diff --git a/README b/README
index 928a7bd..b124fb4 100644
--- a/README
+++ b/README
@@ -373,6 +373,9 @@ file).
access the contents of other `file://` URIs. (default 0).
* `follow_hint_keys`: keys for keyboard-based navigation and link
highlighting
+* `handle_multi_click`: If set to 1, event handlers attached to `2Button*`
+ and `3Button*` bindings will only be used instead of the default actions in
+ WebKit (default 0).
* `ssl_ca_file`: File that contains CA certificates.
* `ssl_verify`: If set to 1, uzbl won't connect to "https" url unless it can
validate certificate presented by remote server against `ssl_ca_file`.
diff --git a/examples/data/scripts/follow.sh b/examples/data/scripts/follow.sh
index 5ed0fbb..3518059 100755
--- a/examples/data/scripts/follow.sh
+++ b/examples/data/scripts/follow.sh
@@ -14,7 +14,9 @@ case "$result" in
printf 'set mode=\nevent KEYCMD_CLEAR\n' > "$UZBL_FIFO"
;;
XXXNEW_WINDOWXXX*)
- printf "set mode=\nevent KEYCMD_CLEAR\nevent NEW_WINDOW $@\n" > "$UZBL_FIFO"
+ echo "set mode=
+event KEYCMD_CLEAR
+event NEW_WINDOW $@" > "$UZBL_FIFO"
;;
XXXRETURNED_URIXXX*)
uriaction=$1
diff --git a/examples/data/scripts/load_cookies.sh b/examples/data/scripts/load_cookies.sh
index 380301e..5feca05 100755
--- a/examples/data/scripts/load_cookies.sh
+++ b/examples/data/scripts/load_cookies.sh
@@ -14,7 +14,7 @@ BEGIN {
}
$0 ~ /^#HttpOnly_/ {
gsub(/@/, "\\@")
- printf("add_cookie \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", substr($1,length("#HttpOnly_"),length($1)), $3, $6, $7, scheme[$4], $5)
+ printf("add_cookie \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", substr($1,length("#HttpOnly_")+1,length($1)), $3, $6, $7, scheme[$4], $5)
}
$0 !~ /^#/ {
gsub(/@/, "\\@")
diff --git a/src/callbacks.c b/src/callbacks.c
index 23b8d55..eee9f69 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -95,17 +95,6 @@ load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer
}
void
-selection_changed_cb(WebKitWebView *webkitwebview, gpointer ud) {
- (void)ud;
- gchar *tmp;
-
- webkit_web_view_copy_clipboard(webkitwebview);
- tmp = gtk_clipboard_wait_for_text(gtk_clipboard_get (GDK_SELECTION_CLIPBOARD));
- send_event(SELECTION_CHANGED, NULL, TYPE_STR, tmp ? tmp : "", NULL);
- g_free(tmp);
-}
-
-void
destroy_cb (GtkWidget* widget, gpointer data) {
(void) widget;
(void) data;
@@ -165,13 +154,15 @@ button_press_cb (GtkWidget* window, GdkEventButton* event) {
gboolean propagate = FALSE,
sendev = FALSE;
- context = get_click_context(NULL);
+ // Save last button click for use in menu
+ if(uzbl.state.last_button)
+ gdk_event_free((GdkEvent *)uzbl.state.last_button);
+ uzbl.state.last_button = (GdkEventButton *)gdk_event_copy((GdkEvent *)event);
- if(event->type == GDK_BUTTON_PRESS) {
- if(uzbl.state.last_button)
- gdk_event_free((GdkEvent *)uzbl.state.last_button);
- uzbl.state.last_button = (GdkEventButton *)gdk_event_copy((GdkEvent *)event);
+ // Grab context from last click
+ context = get_click_context();
+ if(event->type == GDK_BUTTON_PRESS) {
/* left click */
if(event->button == 1) {
if((context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE))
@@ -191,29 +182,25 @@ button_press_cb (GtkWidget* window, GdkEventButton* event) {
sendev = TRUE;
propagate = TRUE;
}
-
- if(sendev) {
- button_to_event(event->button, event->state, GDK_BUTTON_PRESS);
- }
}
if(event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS) {
if(event->button == 1 && !(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE) && (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT)) {
sendev = TRUE;
- propagate = TRUE;
+ propagate = uzbl.state.handle_multi_button;
}
else if(event->button == 2 && !(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE)) {
sendev = TRUE;
- propagate = TRUE;
+ propagate = uzbl.state.handle_multi_button;
}
- else if(event->button > 3) {
+ else if(event->button >= 3) {
sendev = TRUE;
- propagate = TRUE;
+ propagate = uzbl.state.handle_multi_button;
}
+ }
- if(sendev) {
- button_to_event(event->button, event->state, event->type);
- }
+ if(sendev) {
+ button_to_event(event->button, event->state, event->type);
}
return propagate;
@@ -226,7 +213,7 @@ button_release_cb (GtkWidget* window, GdkEventButton* event) {
gboolean propagate = FALSE,
sendev = FALSE;
- context = get_click_context(NULL);
+ context = get_click_context();
if(event->type == GDK_BUTTON_RELEASE) {
if(event->button == 2 && !(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE)) {
sendev = TRUE;
@@ -624,7 +611,7 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) {
return;
/* check context */
- if((context = get_click_context(NULL)) == -1)
+ if((context = get_click_context()) == -1)
return;
for(i=0; i < uzbl.gui.menu_items->len; i++) {
diff --git a/src/callbacks.h b/src/callbacks.h
index e9240b5..6a10205 100644
--- a/src/callbacks.h
+++ b/src/callbacks.h
@@ -19,9 +19,6 @@ gboolean
load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer web_err, gpointer ud);
void
-selection_changed_cb(WebKitWebView *webkitwebview, gpointer ud);
-
-void
destroy_cb (GtkWidget* widget, gpointer data);
gboolean
diff --git a/src/io.c b/src/io.c
index b81b814..ff418ef 100644
--- a/src/io.c
+++ b/src/io.c
@@ -1,5 +1,3 @@
-#define _POSIX_SOURCE
-
#include <stdio.h>
#include "events.h"
diff --git a/src/util.c b/src/util.c
index eab176a..6a5806e 100644
--- a/src/util.c
+++ b/src/util.c
@@ -1,5 +1,3 @@
-#define _POSIX_SOURCE
-
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
diff --git a/src/uzbl-core.c b/src/uzbl-core.c
index 770d832..9db034a 100644
--- a/src/uzbl-core.c
+++ b/src/uzbl-core.c
@@ -771,7 +771,6 @@ create_scrolled_win() {
"signal::button-release-event", (GCallback)button_release_cb, NULL,
"signal::motion-notify-event", (GCallback)motion_notify_cb, NULL,
"signal::notify::title", (GCallback)title_change_cb, NULL,
- "signal::selection-changed", (GCallback)selection_changed_cb, NULL,
"signal::notify::progress", (GCallback)progress_change_cb, NULL,
"signal::notify::load-status", (GCallback)load_status_change_cb, NULL,
"signal::notify::uri", (GCallback)uri_change_cb, NULL,
diff --git a/src/uzbl-core.h b/src/uzbl-core.h
index 29b7b64..1f9613e 100644
--- a/src/uzbl-core.h
+++ b/src/uzbl-core.h
@@ -13,8 +13,6 @@
#ifndef __UZBL_CORE__
#define __UZBL_CORE__
-#define _POSIX_SOURCE
-
#include <glib/gstdio.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
@@ -113,6 +111,7 @@ typedef struct {
/* Events */
int socket_id;
gboolean events_stdout;
+ gboolean handle_multi_button;
GPtrArray* event_buffer;
gchar** connect_socket_names;
} State;
diff --git a/src/variables.c b/src/variables.c
index 8d874c2..e4763bc 100644
--- a/src/variables.c
+++ b/src/variables.c
@@ -735,6 +735,8 @@ const struct var_name_to_ptr_t {
{ "verbose", PTR_V_INT(uzbl.state.verbose, 1, NULL)},
{ "print_events", PTR_V_INT(uzbl.state.events_stdout, 1, NULL)},
+ { "handle_multi_button", PTR_V_INT(uzbl.state.handle_multi_button, 1, NULL)},
+
{ "show_status", PTR_V_INT_GETSET(show_status)},
{ "status_top", PTR_V_INT(uzbl.behave.status_top, 1, set_status_top)},
{ "status_format", PTR_V_STR(uzbl.behave.status_format, 1, NULL)},