aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/form.cc4
-rw-r--r--src/uicmd.cc36
2 files changed, 30 insertions, 10 deletions
diff --git a/src/form.cc b/src/form.cc
index bd10b4f6..b9306cf2 100644
--- a/src/form.cc
+++ b/src/form.cc
@@ -947,10 +947,10 @@ void DilloHtmlForm::submit(DilloHtmlInput *active_input, EventButton *event)
if (event->state == SHIFT_MASK) focus = !focus;
a_UIcmd_open_url_nt(html->bw, url, focus);
} else {
- a_Nav_push_nw(html->bw, url);
+ a_UIcmd_open_url_nw(html->bw, url);
}
} else {
- a_Nav_push(html->bw, url);
+ a_UIcmd_open_url(html->bw, url);
}
a_Url_free(url);
}
diff --git a/src/uicmd.cc b/src/uicmd.cc
index ed0dc1a7..098b12ba 100644
--- a/src/uicmd.cc
+++ b/src/uicmd.cc
@@ -472,6 +472,8 @@ BrowserWindow *a_UIcmd_browser_window_new(int ww, int wh,
win->callback(win_cb, new_bw);
+ new_ui->focus_location();
+
return new_bw;
}
@@ -617,12 +619,31 @@ void a_UIcmd_open_url(BrowserWindow *bw, const DilloUrl *url)
a_Nav_push(bw, url);
}
+static void UIcmd_open_url_nbw(BrowserWindow *new_bw, const DilloUrl *url)
+{
+ /* When opening a new BrowserWindow (tab or real window) we focus
+ * Location if we don't yet have an URL, main otherwise.
+ */
+ if (url) {
+ a_Nav_push(new_bw, url);
+ BW2UI(new_bw)->focus_main();
+ } else {
+ BW2UI(new_bw)->focus_location();
+ }
+}
+
/*
- * Open a new URL in the given browser window
+ * Open a new URL in a new browser window
*/
void a_UIcmd_open_url_nw(BrowserWindow *bw, const DilloUrl *url)
-{
- a_Nav_push_nw(bw, url);
+{
+ int w, h;
+ BrowserWindow *new_bw;
+
+ a_UIcmd_get_wh(bw, &w, &h);
+ new_bw = a_UIcmd_browser_window_new(w, h, 0, bw);
+
+ UIcmd_open_url_nbw(new_bw, url);
}
/*
@@ -631,12 +652,11 @@ void a_UIcmd_open_url_nw(BrowserWindow *bw, const DilloUrl *url)
void a_UIcmd_open_url_nt(void *vbw, const DilloUrl *url, int focus)
{
BrowserWindow *new_bw = UIcmd_tab_new(vbw);
- if (url)
- a_Nav_push(new_bw, url);
- if (focus) {
+
+ if (focus)
BW2UI(new_bw)->tabs()->selected_child(BW2UI(new_bw));
- BW2UI(new_bw)->tabs()->selected_child()->take_focus();
- }
+
+ UIcmd_open_url_nbw(new_bw, url);
}
/*