mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-24 13:06:49 +03:00
make new browser window creation logic common
This commit is contained in:
parent
fc4ad51a66
commit
747f135de5
@ -1518,6 +1518,8 @@ void nsgtk_toolbar_customization_init(struct nsgtk_scaffolding *g)
|
|||||||
nsgtk_toolbar_window_open(g);
|
nsgtk_toolbar_window_open(g);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create a toolbar customization tab
|
* create a toolbar customization tab
|
||||||
*
|
*
|
||||||
@ -1588,6 +1590,49 @@ static gboolean cutomize_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create a new browser window
|
||||||
|
*
|
||||||
|
* creates a browser window with default url depending on user choices.
|
||||||
|
*
|
||||||
|
* \param bw The browser window to pass for existing window/
|
||||||
|
* \param intab true if the new window should be in a tab else false
|
||||||
|
* for new window.
|
||||||
|
* \return NSERROR_OK on success else error code.
|
||||||
|
*/
|
||||||
|
static nserror
|
||||||
|
nsgtk_browser_window_create(struct browser_window *bw, bool intab)
|
||||||
|
{
|
||||||
|
nserror res = NSERROR_OK;
|
||||||
|
nsurl *url = NULL;
|
||||||
|
int flags = BW_CREATE_HISTORY;
|
||||||
|
|
||||||
|
if (intab) {
|
||||||
|
flags |= BW_CREATE_TAB;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!nsoption_bool(new_blank)) {
|
||||||
|
const char *addr;
|
||||||
|
if (nsoption_charp(homepage_url) != NULL) {
|
||||||
|
addr = nsoption_charp(homepage_url);
|
||||||
|
} else {
|
||||||
|
addr = NETSURF_HOMEPAGE;
|
||||||
|
}
|
||||||
|
res = nsurl_create(addr, &url);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res == NSERROR_OK) {
|
||||||
|
res = browser_window_create(flags, url, NULL, bw, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (url != NULL) {
|
||||||
|
nsurl_unref(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \return toolbar item id when a widget is an element of the scaffolding
|
* \return toolbar item id when a widget is an element of the scaffolding
|
||||||
* else -1
|
* else -1
|
||||||
@ -2245,26 +2290,8 @@ newwindow_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
{
|
{
|
||||||
nserror res;
|
nserror res;
|
||||||
struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data;
|
struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data;
|
||||||
struct browser_window *bw;
|
|
||||||
const char *addr;
|
|
||||||
nsurl *url;
|
|
||||||
|
|
||||||
if (nsoption_charp(homepage_url) != NULL) {
|
res = nsgtk_browser_window_create(tb->get_bw(tb->get_ctx), false);
|
||||||
addr = nsoption_charp(homepage_url);
|
|
||||||
} else {
|
|
||||||
addr = NETSURF_HOMEPAGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = nsurl_create(addr, &url);
|
|
||||||
if (res == NSERROR_OK) {
|
|
||||||
bw = tb->get_bw(tb->get_ctx);
|
|
||||||
res = browser_window_create(BW_CREATE_HISTORY,
|
|
||||||
url,
|
|
||||||
NULL,
|
|
||||||
bw,
|
|
||||||
NULL);
|
|
||||||
nsurl_unref(url);
|
|
||||||
}
|
|
||||||
if (res != NSERROR_OK) {
|
if (res != NSERROR_OK) {
|
||||||
nsgtk_warning(messages_get_errorcode(res), 0);
|
nsgtk_warning(messages_get_errorcode(res), 0);
|
||||||
}
|
}
|
||||||
@ -2283,34 +2310,10 @@ newwindow_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
static gboolean
|
static gboolean
|
||||||
newtab_button_clicked_cb(GtkWidget *widget, gpointer data)
|
newtab_button_clicked_cb(GtkWidget *widget, gpointer data)
|
||||||
{
|
{
|
||||||
nserror res = NSERROR_OK;
|
nserror res;
|
||||||
nsurl *url = NULL;
|
|
||||||
struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data;
|
struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data;
|
||||||
struct browser_window *bw;
|
|
||||||
|
|
||||||
if (!nsoption_bool(new_blank)) {
|
res = nsgtk_browser_window_create(tb->get_bw(tb->get_ctx), true);
|
||||||
const char *addr;
|
|
||||||
if (nsoption_charp(homepage_url) != NULL) {
|
|
||||||
addr = nsoption_charp(homepage_url);
|
|
||||||
} else {
|
|
||||||
addr = NETSURF_HOMEPAGE;
|
|
||||||
}
|
|
||||||
res = nsurl_create(addr, &url);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (res == NSERROR_OK) {
|
|
||||||
bw = tb->get_bw(tb->get_ctx);
|
|
||||||
|
|
||||||
res = browser_window_create(BW_CREATE_HISTORY |
|
|
||||||
BW_CREATE_TAB,
|
|
||||||
url,
|
|
||||||
NULL,
|
|
||||||
bw,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
if (url != NULL) {
|
|
||||||
nsurl_unref(url);
|
|
||||||
}
|
|
||||||
if (res != NSERROR_OK) {
|
if (res != NSERROR_OK) {
|
||||||
nsgtk_warning(messages_get_errorcode(res), 0);
|
nsgtk_warning(messages_get_errorcode(res), 0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user