diff options
author | Vincent Sanders <vince@kyllikki.org> | 2016-03-20 20:28:20 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2016-03-20 20:28:20 +0000 |
commit | 78fd5ccbf6ebd85329cb0df999b6e259c9e915ce (patch) | |
tree | 1e27fb59443691b5d5013b8de65520e8bedfff32 /windows/window.c | |
parent | c2f321010a06e4ccf8d8ec61f8673850c7d175e2 (diff) | |
download | netsurf-78fd5ccbf6ebd85329cb0df999b6e259c9e915ce.tar.gz netsurf-78fd5ccbf6ebd85329cb0df999b6e259c9e915ce.tar.bz2 |
fix new creating new window assert
Diffstat (limited to 'windows/window.c')
-rw-r--r-- | windows/window.c | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/windows/window.c b/windows/window.c index d3f2c99c5..1dd2bfdc9 100644 --- a/windows/window.c +++ b/windows/window.c @@ -858,6 +858,36 @@ void win32_window_set_scroll(struct gui_window *w, int sx, int sy) } +/** + * Create a new window due to menu selection + * + * \param gw frontends graphical window. + * \return NSERROR_OK on success else appropriate error code. + */ +static nserror win32_open_new_window(struct gui_window *gw) +{ + const char *addr; + nsurl *url; + nserror ret; + + if (nsoption_charp(homepage_url) != NULL) { + addr = nsoption_charp(homepage_url); + } else { + addr = NETSURF_HOMEPAGE; + } + + ret = nsurl_create(addr, &url); + if (ret == NSERROR_OK) { + ret = browser_window_create(BW_CREATE_HISTORY, + url, + NULL, + gw->bw, + NULL); + nsurl_unref(url); + } + + return ret; +} static LRESULT nsws_window_command(HWND hwnd, @@ -868,7 +898,8 @@ nsws_window_command(HWND hwnd, { nserror ret; - LOG("notification_code %x identifier %x ctrl_window %p", notification_code, identifier, ctrl_window); + LOG("notification_code %x identifier %x ctrl_window %p", + notification_code, identifier, ctrl_window); switch(identifier) { @@ -888,11 +919,7 @@ nsws_window_command(HWND hwnd, break; case IDM_FILE_OPEN_WINDOW: - ret = browser_window_create(BW_CREATE_NONE, - NULL, - NULL, - gw->bw, - NULL); + ret = win32_open_new_window(gw); if (ret != NSERROR_OK) { warn_user(messages_get_errorcode(ret), 0); } |