diff options
Diffstat (limited to 'src/callbacks.c')
-rw-r--r-- | src/callbacks.c | 45 |
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++) { |