Ctrl + middle click is handled twice

Ctrl middle click set the zoom level to 0 but it is supposed to open
a link (selected text) in a new tab, too
If a link is selected it should open and otherwise set the zoom level to 1.0.
So if you click on a link with Ctrl + middle click
you get a new tab and your zoom isn't changed.
This commit is contained in:
André Stösel 2012-03-20 23:44:46 +01:00 committed by Christian Dywan
parent 357187e264
commit a695a91410

View file

@ -1782,12 +1782,7 @@ midori_view_web_view_button_press_event_cb (WebKitWebView* web_view,
view->button_press_handled = TRUE; view->button_press_handled = TRUE;
return TRUE; return TRUE;
} }
else if (MIDORI_MOD_SCROLL (event->state)) if (view->middle_click_opens_selection)
{
midori_view_set_zoom_level (MIDORI_VIEW (view), 1.0);
return FALSE; /* Allow Ctrl + Middle click */
}
else if (view->middle_click_opens_selection)
{ {
gboolean is_editable; gboolean is_editable;
WebKitHitTestResult* result; WebKitHitTestResult* result;
@ -1797,56 +1792,63 @@ midori_view_web_view_button_press_event_cb (WebKitWebView* web_view,
context = katze_object_get_int (result, "context"); context = katze_object_get_int (result, "context");
is_editable = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE; is_editable = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE;
g_object_unref (result); g_object_unref (result);
if (is_editable) if (!is_editable)
return FALSE;
clipboard = gtk_clipboard_get_for_display (
gtk_widget_get_display (GTK_WIDGET (view)),
GDK_SELECTION_PRIMARY);
if ((uri = gtk_clipboard_wait_for_text (clipboard)))
{ {
guint i = 0; clipboard = gtk_clipboard_get_for_display (
while (uri[i++] != '\0') gtk_widget_get_display (GTK_WIDGET (view)),
if (uri[i] == '\n' || uri[i] == '\r') GDK_SELECTION_PRIMARY);
uri[i] = ' '; if ((uri = gtk_clipboard_wait_for_text (clipboard)))
g_strstrip (uri);
/* Hold Alt to search for the selected word */
if (event->state & GDK_MOD1_MASK)
{ {
new_uri = sokoke_magic_uri (uri); guint i = 0;
if (!new_uri) while (uri[i++] != '\0')
if (uri[i] == '\n' || uri[i] == '\r')
uri[i] = ' ';
g_strstrip (uri);
/* Hold Alt to search for the selected word */
if (event->state & GDK_MOD1_MASK)
{ {
gchar* search = katze_object_get_string ( new_uri = sokoke_magic_uri (uri);
view->settings, "location-entry-search"); if (!new_uri)
new_uri = midori_uri_for_search (search, uri); {
g_free (search); gchar* search = katze_object_get_string (
view->settings, "location-entry-search");
new_uri = midori_uri_for_search (search, uri);
g_free (search);
}
katze_assign (uri, new_uri);
}
else if (midori_uri_is_location (uri))
{
if (MIDORI_MOD_NEW_TAB (event->state))
{
background = view->open_tabs_in_the_background;
if (MIDORI_MOD_BACKGROUND (event->state))
background = !background;
g_signal_emit (view, signals[NEW_TAB], 0, uri, background);
}
else
{
midori_view_set_uri (MIDORI_VIEW (view), uri);
gtk_widget_grab_focus (GTK_WIDGET (view));
}
g_free (uri);
view->button_press_handled = TRUE;
return TRUE;
}
else
{
g_free (uri);
} }
katze_assign (uri, new_uri);
} }
else if (!midori_uri_is_location (uri))
{
g_free (uri);
return FALSE;
}
if (MIDORI_MOD_NEW_TAB (event->state))
{
background = view->open_tabs_in_the_background;
if (MIDORI_MOD_BACKGROUND (event->state))
background = !background;
g_signal_emit (view, signals[NEW_TAB], 0, uri, background);
}
else
{
midori_view_set_uri (MIDORI_VIEW (view), uri);
gtk_widget_grab_focus (GTK_WIDGET (view));
}
g_free (uri);
view->button_press_handled = TRUE;
return TRUE;
} }
} }
if (MIDORI_MOD_SCROLL (event->state))
{
midori_view_set_zoom_level (MIDORI_VIEW (view), 1.0);
return FALSE; /* Allow Ctrl + Middle click */
}
return FALSE;
break; break;
case 3: case 3:
if (event->state & GDK_CONTROL_MASK) if (event->state & GDK_CONTROL_MASK)