aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/callbacks.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/callbacks.c')
-rw-r--r--src/callbacks.c45
1 files changed, 16 insertions, 29 deletions
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++) {