diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-05-07 14:56:42 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-05-07 14:56:42 +0100 |
commit | 8b6665fe0383fd565ac7d7cd6a2bf6243ebc9937 (patch) | |
tree | ffa2ae68c2f87f19cbbd13b7e79a632a682202ee /desktop | |
parent | 3afd9c97310d58c0c6588d18887244328590731e (diff) | |
parent | f4af0d86e240948bb37a1d318d4e2559f04c6a79 (diff) | |
download | netsurf-8b6665fe0383fd565ac7d7cd6a2bf6243ebc9937.tar.gz netsurf-8b6665fe0383fd565ac7d7cd6a2bf6243ebc9937.tar.bz2 |
Merge branch 'master' of git://git.netsurf-browser.org/netsurf into tlsa/selection-search-refactor
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/browser.c | 2 | ||||
-rw-r--r-- | desktop/cookies.c | 48 | ||||
-rw-r--r-- | desktop/history_global_core.c | 23 | ||||
-rw-r--r-- | desktop/hotlist.c | 40 | ||||
-rw-r--r-- | desktop/sslcert.c | 15 | ||||
-rw-r--r-- | desktop/tree.c | 106 | ||||
-rw-r--r-- | desktop/tree.h | 27 | ||||
-rw-r--r-- | desktop/tree_url_node.c | 47 |
8 files changed, 147 insertions, 161 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index a02807eeb..12cc9c830 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -2889,6 +2889,8 @@ void browser_window_redraw_rect(struct browser_window *bw, int x, int y, void browser_window_page_drag_start(struct browser_window *bw, int x, int y) { + assert(bw != NULL); + browser_window_set_drag_type(bw, DRAGGING_PAGE_SCROLL, NULL); bw->drag_start_x = x; diff --git a/desktop/cookies.c b/desktop/cookies.c index 581e1cc5b..197b3fbd1 100644 --- a/desktop/cookies.c +++ b/desktop/cookies.c @@ -264,19 +264,12 @@ static struct node *cookies_create_cookie_node(struct node *parent, const struct cookie_data *data) { struct node *node; - char *name; - name = strdup(data->name); - if (name == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - return NULL; - } - - node = tree_create_leaf_node(cookies_tree, NULL, name, + node = tree_create_leaf_node(cookies_tree, + NULL, + data->name, false, false, false); if (node == NULL) { - free(name); return NULL; } @@ -329,44 +322,33 @@ static void cookies_schedule_callback(const void *scheduled_data) const struct cookie_data *data = scheduled_data; struct node *node = NULL; struct node *cookie_node = NULL; - char *domain_cp; assert(data != NULL); node = cookies_find(cookies_tree_root, data->domain); if (node == NULL) { - domain_cp = strdup(data->domain); - if (domain_cp == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - return; - } - /* ownership of domain_cp passed to tree, if node creation - * does not fail */ node = tree_create_folder_node(cookies_tree, - cookies_tree_root, domain_cp, + cookies_tree_root, + data->domain, false, false, false); if (node != NULL) { - tree_set_node_user_callback(node, cookies_node_callback, + tree_set_node_user_callback(node, + cookies_node_callback, NULL); tree_set_node_icon(cookies_tree, node, folder_icon); - - } else { - free(domain_cp); } } - if (node == NULL) - return; - - cookie_node = cookies_find(node, data->name); - if (cookie_node == NULL) - cookies_create_cookie_node(node, data); - else - cookies_update_cookie_node(cookie_node, data); + if (node != NULL) { + cookie_node = cookies_find(node, data->name); + if (cookie_node == NULL) { + cookies_create_cookie_node(node, data); + } else { + cookies_update_cookie_node(cookie_node, data); + } - return; + } } /** diff --git a/desktop/history_global_core.c b/desktop/history_global_core.c index 3222dc7b8..2a941e05d 100644 --- a/desktop/history_global_core.c +++ b/desktop/history_global_core.c @@ -175,33 +175,24 @@ static bool history_global_initialise_node(const char *title, time_t base, int days_back) { struct tm *full_time; - char *buffer; struct node *node; base += days_back * 60 * 60 * 24; if (title == NULL) { full_time = localtime(&base); - buffer = strdup(messages_get(weekday_msg_name[full_time->tm_wday])); - } else { - buffer = strdup(title); + title = messages_get(weekday_msg_name[full_time->tm_wday]); } - if (buffer == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - return false; - } - - node = tree_create_folder_node(NULL, NULL, buffer, - false, true, true); + node = tree_create_folder_node(NULL, NULL, title, false, true, true); if (node == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - free(buffer); + warn_user(messages_get_errorcode(NSERROR_NOMEM), 0); return false; } - if (folder_icon != NULL) + + if (folder_icon != NULL) { tree_set_node_icon(global_history_tree, node, folder_icon); + } + tree_set_node_user_callback(node, history_global_node_callback, NULL); global_history_base_node[global_history_base_node_count] = node; diff --git a/desktop/hotlist.c b/desktop/hotlist.c index e2386fc8e..20cc8ea26 100644 --- a/desktop/hotlist.c +++ b/desktop/hotlist.c @@ -121,7 +121,6 @@ bool hotlist_initialise(struct tree *tree, const char *hotlist_path, { struct node *node; const struct url_data *url_data; - char *name; int hlst_loop; /* Either load or create a hotlist */ @@ -143,18 +142,15 @@ bool hotlist_initialise(struct tree *tree, const char *hotlist_path, return true; } - /* failed to load hotlist file, use default list */ - name = strdup("NetSurf"); - if (name == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - return false; - } - node = tree_create_folder_node(hotlist_tree, hotlist_tree_root, - name, true, false, false); + node = tree_create_folder_node(hotlist_tree, + hotlist_tree_root, + messages_get("NetSurf"), + true, + false, + false); if (node == NULL) { - free(name); + warn_user(messages_get_errorcode(NSERROR_NOMEM), 0); return false; } @@ -373,14 +369,7 @@ void hotlist_collapse_addresses(void) void hotlist_add_folder(bool selected) { struct node *node, *parent = NULL; - struct node_element *element; - char *title = strdup("Untitled"); - if (title == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - return; - } creating_node = true; if (selected == true) { @@ -394,16 +383,21 @@ void hotlist_add_folder(bool selected) parent = tree_get_default_folder_node(hotlist_tree); } - node = tree_create_folder_node(hotlist_tree, parent, title, - true, false, false); + node = tree_create_folder_node(hotlist_tree, + parent, + messages_get("Untitled"), + true, + false, + false); if (node == NULL) { - free(title); + warn_user(messages_get_errorcode(NSERROR_NOMEM), 0); return; } + tree_set_node_user_callback(node, hotlist_node_callback, NULL); tree_set_node_icon(hotlist_tree, node, folder_icon); - element = tree_node_find_element(node, TREE_ELEMENT_TITLE, NULL); - tree_start_edit(hotlist_tree, element); + tree_start_edit(hotlist_tree, + tree_node_find_element(node, TREE_ELEMENT_TITLE, NULL)); } /** diff --git a/desktop/sslcert.c b/desktop/sslcert.c index b7a424465..2b4d726e0 100644 --- a/desktop/sslcert.c +++ b/desktop/sslcert.c @@ -119,19 +119,22 @@ static node_callback_resp sslcert_node_callback(void *user_data, static struct node *sslcert_create_node(const struct ssl_cert_info *cert) { - struct node *node; + struct node *node = NULL; struct node_element *element; char *text; text = messages_get_buff("SSL_Certificate_Subject", cert->subject); - if (text == NULL) - return NULL; - - node = tree_create_leaf_node(NULL, NULL, text, false, false, false); - if (node == NULL) { + if (text != NULL) { + node = tree_create_leaf_node(NULL, + NULL, + text, + false, false, false); free(text); + } + if (node == NULL) { return NULL; } + tree_set_node_user_callback(node, sslcert_node_callback, NULL); /* add issuer node */ diff --git a/desktop/tree.c b/desktop/tree.c index af64be83b..c62793e02 100644 --- a/desktop/tree.c +++ b/desktop/tree.c @@ -117,7 +117,7 @@ struct node_element { struct node *parent; /**< Parent node */ node_element_type type; /**< Element type */ struct node_element_box box; /**< Element bounding box */ - const char *text; /**< Text for the element */ + char *text; /**< Text for the element */ void *bitmap; /**< Bitmap for the element */ struct node_element *next; /**< Next node element */ unsigned int flag; /**< Client specified flag for data @@ -233,26 +233,19 @@ struct tree *tree_create(unsigned int flags, const struct treeview_table *callbacks, void *client_data) { struct tree *tree; - char *title; tree = calloc(sizeof(struct tree), 1); if (tree == NULL) { LOG(("calloc failed")); - warn_user("NoMemory", 0); + warn_user(messages_get_errorcode(NSERROR_NOMEM), 0); return NULL; } - title = strdup("Root"); - if (title == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - free(tree); - return NULL; - } - tree->root = tree_create_folder_node(NULL, NULL, title, + tree->root = tree_create_folder_node(NULL, + NULL, + messages_get("Root"), false, false, false); if (tree->root == NULL) { - free(title); free(tree); return NULL; } @@ -553,18 +546,7 @@ static void tree_recalculate_node_sizes(struct tree *tree, struct node *node, } -/** - * Creates a folder node with the specified title, and optionally links it into - * the tree. - * - * \param tree the owner tree of 'parent', may be NULL - * \param parent the parent node, or NULL not to link - * \param title the node title (not copied, used directly) - * \param editable if true, the node title will be editable - * \param retain_in_memory if true, the node will stay in memory after deletion - * \param deleted if true, the node is created with the deleted flag - * \return the newly created node. - */ +/* exported interface documented in desktop/tree.h */ struct node *tree_create_folder_node(struct tree *tree, struct node *parent, const char *title, bool editable, bool retain_in_memory, bool deleted) @@ -575,16 +557,20 @@ struct node *tree_create_folder_node(struct tree *tree, struct node *parent, node = calloc(sizeof(struct node), 1); if (node == NULL) { - LOG(("calloc failed")); - warn_user("NoMemory", 0); return NULL; } + + node->data.text = strdup(title); + if (node->data.text == NULL) { + free(node); + return NULL; + } + node->folder = true; node->retain_in_memory = retain_in_memory; node->deleted = deleted; node->data.parent = node; node->data.type = NODE_ELEMENT_TEXT; - node->data.text = title; node->data.flag = TREE_ELEMENT_TITLE; node->data.editable = editable; node->sort = NULL; @@ -592,25 +578,14 @@ struct node *tree_create_folder_node(struct tree *tree, struct node *parent, node->previous = NULL; tree_recalculate_node_sizes(tree, node, true); - if (parent != NULL) + if (parent != NULL) { tree_link_node(tree, parent, node, false); + } return node; } - -/** - * Creates a leaf node with the specified title, and optionally links it into - * the tree. - * - * \param tree the owner tree of 'parent', may be NULL - * \param parent the parent node, or NULL not to link - * \param title the node title (not copied, used directly) - * \param editable if true, the node title will be editable - * \param retain_in_memory if true, the node will stay in memory after deletion - * \param deleted if true, the node is created with the deleted flag - * \return the newly created node. - */ +/* exported interface documented in desktop/tree.h */ struct node *tree_create_leaf_node(struct tree *tree, struct node *parent, const char *title, bool editable, bool retain_in_memory, bool deleted) @@ -621,8 +596,12 @@ struct node *tree_create_leaf_node(struct tree *tree, struct node *parent, node = calloc(sizeof(struct node), 1); if (node == NULL) { - LOG(("calloc failed")); - warn_user("NoMemory", 0); + return NULL; + } + + node->data.text = strdup(title); + if (node->data.text == NULL) { + free(node); return NULL; } @@ -631,7 +610,6 @@ struct node *tree_create_leaf_node(struct tree *tree, struct node *parent, node->deleted = deleted; node->data.parent = node; node->data.type = NODE_ELEMENT_TEXT; - node->data.text = title; node->data.flag = TREE_ELEMENT_TITLE; node->data.editable = editable; node->sort = NULL; @@ -639,8 +617,9 @@ struct node *tree_create_leaf_node(struct tree *tree, struct node *parent, node->previous = NULL; tree_recalculate_node_sizes(tree, node, true); - if (parent != NULL) + if (parent != NULL) { tree_link_node(tree, parent, node, false); + } return node; } @@ -1502,18 +1481,20 @@ void tree_update_node_element(struct tree *tree, struct node_element *element, assert(element != NULL); - if (tree != NULL && element == tree->editing) + if ((tree != NULL) && (element == tree->editing)) { tree_stop_edit(tree, false); + } - if (text != NULL && (element->type == NODE_ELEMENT_TEXT || - element->type == NODE_ELEMENT_TEXT_PLUS_ICON)) { + if ((text != NULL) && + (element->type == NODE_ELEMENT_TEXT || + element->type == NODE_ELEMENT_TEXT_PLUS_ICON)) { if (element->text != NULL) { - if(strcmp(element->text, text) == 0) text_changed = true; - + if (strcmp(element->text, text) == 0) { + text_changed = true; + } response = NODE_CALLBACK_NOT_HANDLED; - if (!element->editable && - element->parent->user_callback != - NULL) { + if ((!element->editable) && + (element->parent->user_callback != NULL)) { msg_data.msg = NODE_DELETE_ELEMENT_TXT; msg_data.flag = element->flag; msg_data.node = element->parent; @@ -1522,14 +1503,16 @@ void tree_update_node_element(struct tree *tree, struct node_element *element, element->parent->callback_data, &msg_data); } - if (response != NODE_CALLBACK_HANDLED) - free((void *)element->text); + if (response != NODE_CALLBACK_HANDLED) { + free(element->text); + } } - element->text = text; + element->text = (char *)text; } - if (bitmap != NULL && (element->type == NODE_ELEMENT_BITMAP || - element->type == NODE_ELEMENT_TEXT_PLUS_ICON)) { + if ((bitmap != NULL) && + ((element->type == NODE_ELEMENT_BITMAP) || + (element->type == NODE_ELEMENT_TEXT_PLUS_ICON))) { if (element->bitmap != NULL) { response = NODE_CALLBACK_NOT_HANDLED; if (element->parent->user_callback != NULL) { @@ -1541,10 +1524,11 @@ void tree_update_node_element(struct tree *tree, struct node_element *element, element->parent->callback_data, &msg_data); } - if (response != NODE_CALLBACK_HANDLED) + + if (response != NODE_CALLBACK_HANDLED) { free(element->bitmap); - } - else { + } + } else { /* Increase the box width to accomodate the new icon */ element->box.width += NODE_INSTEP; } diff --git a/desktop/tree.h b/desktop/tree.h index 8ac505783..00ac99984 100644 --- a/desktop/tree.h +++ b/desktop/tree.h @@ -137,12 +137,39 @@ void tree_setup_colours(void); struct tree *tree_create(unsigned int flags, const struct treeview_table *callbacks, void *client_data); + +/** + * Creates a folder node with the specified title, and optionally links it into + * the tree. + * + * \param tree the owner tree of 'parent', may be NULL + * \param parent the parent node, or NULL not to link + * \param title the node title + * \param editable if true, the node title will be editable + * \param retain_in_memory if true, the node will stay in memory after deletion + * \param deleted if true, the node is created with the deleted flag + * \return the newly created node or NULL on error. + */ struct node *tree_create_folder_node(struct tree *tree, struct node *parent, const char *title, bool editable, bool retain_in_memory, bool deleted); + +/** + * Creates a leaf node with the specified title, and optionally links it into + * the tree. + * + * \param tree the owner tree of 'parent', may be NULL + * \param parent the parent node, or NULL not to link + * \param title the node title. + * \param editable if true, the node title will be editable + * \param retain_in_memory if true, the node will stay in memory after deletion + * \param deleted if true, the node is created with the deleted flag + * \return the newly created node or NULL on error. + */ struct node *tree_create_leaf_node(struct tree *tree, struct node *parent, const char *title, bool editable, bool retain_in_memory, bool deleted); + struct node_element *tree_create_node_element(struct node *parent, node_element_type type, unsigned int flag, bool editable); void tree_link_node(struct tree *tree, struct node *link, struct node *node, diff --git a/desktop/tree_url_node.c b/desktop/tree_url_node.c index 76bc8a47c..938cd1d69 100644 --- a/desktop/tree_url_node.c +++ b/desktop/tree_url_node.c @@ -126,35 +126,41 @@ void tree_url_node_cleanup() * \param parent the node to link to * \param url the URL (copied) * \param data the URL data to use - * \param title the custom title to use + * \param title custom title to use or NULL to use url * \return the node created, or NULL for failure */ struct node *tree_create_URL_node(struct tree *tree, struct node *parent, nsurl *url, const char *title, tree_node_user_callback user_callback, void *callback_data) { - struct node *node; + struct node *node = NULL; struct node_element *element; - char *text_cp, *squashed; - squashed = squash_whitespace(title ? title : nsurl_access(url)); - text_cp = strdup(squashed); - if (text_cp == NULL) { - LOG(("malloc failed")); - warn_user("NoMemory", 0); - return NULL; + if (title == NULL) { + node = tree_create_leaf_node(tree, + parent, + nsurl_access(url), + true, false, false); + } else { + char *squashed; + + squashed = squash_whitespace(title); + if (squashed != NULL) { + node = tree_create_leaf_node(tree, + parent, + squashed, + true, false, false); + free(squashed); + } } - free(squashed); - node = tree_create_leaf_node(tree, parent, text_cp, true, false, - false); if (node == NULL) { - free(text_cp); return NULL; } - if (user_callback != NULL) + if (user_callback != NULL) { tree_set_node_user_callback(node, user_callback, callback_data); + } tree_create_node_element(node, NODE_ELEMENT_BITMAP, TREE_ELEMENT_THUMBNAIL, false); @@ -165,7 +171,7 @@ struct node *tree_create_URL_node(struct tree *tree, struct node *parent, element = tree_create_node_element(node, NODE_ELEMENT_TEXT, TREE_ELEMENT_URL, true); if (element != NULL) { - text_cp = strdup(nsurl_access(url)); + char *text_cp = strdup(nsurl_access(url)); if (text_cp == NULL) { tree_delete_node(tree, node, false); LOG(("malloc failed")); @@ -194,22 +200,18 @@ struct node *tree_create_URL_node_readonly(struct tree *tree, { struct node *node; struct node_element *element; - char *title; + const char *title; assert(url && data); if (data->title != NULL) { - title = strdup(data->title); + title = data->title; } else { - title = strdup(nsurl_access(url)); + title = nsurl_access(url); } - if (title == NULL) - return NULL; - node = tree_create_leaf_node(tree, parent, title, false, false, false); if (node == NULL) { - free(title); return NULL; } @@ -683,6 +685,7 @@ static bool tree_url_load_directory_cb(dom_node *node, void *ctx) dir = tree_create_folder_node(tctx->tree, tctx->directory, title, true, false, false); + free(title); if (dir == NULL) { dom_string_unref(name); return false; |