static void
_action_location_submit_uri (GtkAction* action,
const gchar* uri,
+ gboolean new_tab,
MidoriBrowser* browser)
{
gchar* location_entry_search;
gchar* new_uri;
+ gint n;
g_object_get (browser->settings, "location-entry-search",
&location_entry_search, NULL);
else if (!new_uri)
new_uri = g_strdup (location_entry_search);
g_free (location_entry_search);
- _midori_browser_open_uri (browser, new_uri);
+ if (new_tab)
+ {
+ n = midori_browser_add_uri (browser, new_uri);
+ midori_browser_set_current_page (browser, n);
+ }
+ else
+ _midori_browser_open_uri (browser, new_uri);
g_free (new_uri);
gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
}
midori_location_action_disconnect_proxy (GtkAction* action,
GtkWidget* proxy);
+static void
+midori_cclosure_marshal_VOID__STRING_BOOLEAN (GClosure* closure,
+ GValue* return_value,
+ guint n_param_values,
+ const GValue* param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef void(*GMarshalFunc_VOID__STRING_BOOLEAN) (gpointer data1,
+ const gchar* arg_1,
+ gboolean arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__STRING_BOOLEAN callback;
+ register GCClosure* cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__STRING_BOOLEAN) (marshal_data
+ ? marshal_data : cc->callback);
+ callback (data1,
+ g_value_get_string (param_values + 1),
+ g_value_get_boolean (param_values + 2),
+ data2);
+}
+
static void
midori_location_action_class_init (MidoriLocationActionClass* class)
{
0,
0,
NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1,
- G_TYPE_STRING);
+ midori_cclosure_marshal_VOID__STRING_BOOLEAN,
+ G_TYPE_NONE, 2,
+ G_TYPE_STRING,
+ G_TYPE_BOOLEAN);
gobject_class = G_OBJECT_CLASS (class);
gobject_class->finalize = midori_location_action_finalize;
{
if ((uri = gtk_entry_get_text (GTK_ENTRY (widget))))
{
- g_signal_emit (action, signals[SUBMIT_URI], 0, uri);
+ g_signal_emit (action, signals[SUBMIT_URI], 0, uri,
+ (event->state & GDK_MOD1_MASK) ? TRUE : FALSE);
return TRUE;
}
}