summaryrefslogtreecommitdiff
path: root/desktop/tree_url_node.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2013-02-14 18:21:11 +0000
committerVincent Sanders <vince@netsurf-browser.org>2013-02-18 11:23:48 +0000
commitb112dec78d5e8289ded3f61db96e495690ae96b5 (patch)
tree9babaed21ed2eb841b8d398e28814544c73656d9 /desktop/tree_url_node.c
parent3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8 (diff)
downloadnetsurf-b112dec78d5e8289ded3f61db96e495690ae96b5.tar.gz
netsurf-b112dec78d5e8289ded3f61db96e495690ae96b5.tar.bz2
change browser_window_create and refactor all callsites
Diffstat (limited to 'desktop/tree_url_node.c')
-rw-r--r--desktop/tree_url_node.c54
1 files changed, 35 insertions, 19 deletions
diff --git a/desktop/tree_url_node.c b/desktop/tree_url_node.c
index 5305fa11d..3b84b4c08 100644
--- a/desktop/tree_url_node.c
+++ b/desktop/tree_url_node.c
@@ -356,7 +356,7 @@ node_callback_resp tree_url_node_callback(void *user_data,
{
struct tree *tree;
struct node_element *element;
- nsurl *nsurl;
+ nsurl *url;
nserror error;
const char *text;
char *norm_text;
@@ -372,13 +372,13 @@ node_callback_resp tree_url_node_callback(void *user_data,
*/
case TREE_ELEMENT_URL:
/* reset URL characteristics */
- error = nsurl_create(msg_data->data.text, &nsurl);
+ error = nsurl_create(msg_data->data.text, &url);
if (error != NSERROR_OK) {
warn_user("NoMemory", 0);
return NODE_CALLBACK_REJECT;
}
- urldb_reset_url_visit_data(nsurl);
- nsurl_unref(nsurl);
+ urldb_reset_url_visit_data(url);
+ nsurl_unref(url);
return NODE_CALLBACK_HANDLED;
case TREE_ELEMENT_TITLE:
return NODE_CALLBACK_HANDLED;
@@ -393,29 +393,45 @@ node_callback_resp tree_url_node_callback(void *user_data,
element = tree_node_find_element(msg_data->node,
TREE_ELEMENT_URL, NULL);
if (element != NULL) {
+ nserror error;
+ enum browser_window_nav_flags flags;
+
text = tree_node_element_get_text(element);
- if (msg_data->flag == TREE_ELEMENT_LAUNCH_IN_TABS) {
- msg_data->data.bw = browser_window_create(text,
- msg_data->data.bw, 0, true, true);
- } else {
- browser_window_create(text, NULL, 0,
- true, false);
+
+ error = nsurl_create(text, &url);
+ if (error == NSERROR_OK) {
+ flags = BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY;
+ if (msg_data->flag == TREE_ELEMENT_LAUNCH_IN_TABS) {
+ flags |= BROWSER_WINDOW_GO_FLAG_TAB;
+ }
+ error = browser_window_create(flags,
+ url,
+ NULL,
+ msg_data->data.bw,
+ &msg_data->data.bw);
+ nsurl_unref(url);
}
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
+
return NODE_CALLBACK_HANDLED;
}
break;
+
case NODE_ELEMENT_EDIT_FINISHING:
text = msg_data->data.text;
if (msg_data->flag == TREE_ELEMENT_URL) {
size_t len;
- error = nsurl_create(text, &nsurl);
+ error = nsurl_create(text, &url);
if (error != NSERROR_OK) {
warn_user("NoMemory", 0);
return NODE_CALLBACK_REJECT;
}
- error = nsurl_get(nsurl, NSURL_WITH_FRAGMENT,
+ error = nsurl_get(url, NSURL_WITH_FRAGMENT,
&norm_text, &len);
if (error != NSERROR_OK) {
warn_user("NoMemory", 0);
@@ -424,20 +440,20 @@ node_callback_resp tree_url_node_callback(void *user_data,
msg_data->data.text = norm_text;
- data = urldb_get_url_data(nsurl);
+ data = urldb_get_url_data(url);
if (data == NULL) {
- urldb_add_url(nsurl);
- urldb_set_url_persistence(nsurl, true);
- data = urldb_get_url_data(nsurl);
+ urldb_add_url(url);
+ urldb_set_url_persistence(url, true);
+ data = urldb_get_url_data(url);
if (data == NULL) {
- nsurl_unref(nsurl);
+ nsurl_unref(url);
return NODE_CALLBACK_REJECT;
}
}
tree = user_data;
tree_update_URL_node(tree, msg_data->node,
- nsurl, NULL);
- nsurl_unref(nsurl);
+ url, NULL);
+ nsurl_unref(url);
}
else if (msg_data->flag == TREE_ELEMENT_TITLE) {
while (isspace(*text))