Author: chris_y
Date: Sat Jun 4 15:46:08 2011
New Revision: 12460
URL:
http://source.netsurf-browser.org?rev=12460&view=rev
Log:
Remove at least one instance of unnecessary recalculation
Modified:
trunk/netsurf/desktop/tree.c
Modified: trunk/netsurf/desktop/tree.c
URL:
http://source.netsurf-browser.org/trunk/netsurf/desktop/tree.c?rev=12460&...
==============================================================================
--- trunk/netsurf/desktop/tree.c (original)
+++ trunk/netsurf/desktop/tree.c Sat Jun 4 15:46:08 2011
@@ -824,7 +824,7 @@
* \param element the node element to update
*/
static void tree_handle_node_element_changed(struct tree *tree,
- struct node_element *element)
+ struct node_element *element, bool text_changed)
{
int width, height;
@@ -832,10 +832,13 @@
width = element->box.width;
height = element->box.height;
- #ifdef TREE_NOISY_DEBUG
- if(element->text) LOG(("%s", element->text));
- #endif
- tree_recalculate_node_element(tree, element);
+
+ if(text_changed == true) {
+ #ifdef TREE_NOISY_DEBUG
+ if(element->text) LOG(("%s", element->text));
+ #endif
+ tree_recalculate_node_element(tree, element);
+ }
if (element->box.height != height) {
tree_recalculate_node_sizes(tree, element->parent, false);
@@ -936,7 +939,7 @@
if (text != NULL)
tree_update_node_element(tree, element, text, NULL);
else
- tree_handle_node_element_changed(tree, element);
+ tree_handle_node_element_changed(tree, element, true);
tree_recalculate_size(tree);
@@ -1423,6 +1426,7 @@
{
node_callback_resp response;
struct node_msg_data msg_data;
+ bool text_changed = false;
assert(element != NULL);
@@ -1432,6 +1436,8 @@
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;
+
response = NODE_CALLBACK_NOT_HANDLED;
if (!element->editable &&
element->parent->user_callback !=
@@ -1474,7 +1480,7 @@
element->bitmap = bitmap;
}
- tree_handle_node_element_changed(tree, element);
+ tree_handle_node_element_changed(tree, element, text_changed);
}
@@ -2324,7 +2330,7 @@
tree_set_node_selected(tree, tree->root->child, true,
false);
node->selected = true;
- tree_handle_node_element_changed(tree, &node->data);
+ tree_handle_node_element_changed(tree, &node->data, false);
}
return true;
}
@@ -2334,7 +2340,7 @@
if (tree->flags & TREE_NO_SELECT)
return true;
node->selected = !node->selected;
- tree_handle_node_element_changed(tree, &node->data);
+ tree_handle_node_element_changed(tree, &node->data, false);
return true;
}
@@ -2348,7 +2354,7 @@
tree_set_node_selected(tree, tree->root->child, true,
false);
node->selected = true;
- tree_handle_node_element_changed(tree, &node->data);
+ tree_handle_node_element_changed(tree, &node->data, false);
}
if (tree->flags & TREE_MOVABLE)
@@ -2412,11 +2418,11 @@
if (invert) {
node->selected = !node->selected;
tree_handle_node_element_changed(tree,
- &node->data);
+ &node->data, false);
} else if (!node->selected) {
node->selected = true;
tree_handle_node_element_changed(tree,
- &node->data);
+ &node->data, false);
}
}
}
@@ -2721,7 +2727,7 @@
}
textarea_set_text(tree->textarea, element->text);
- tree_handle_node_element_changed(tree, element);
+ tree_handle_node_element_changed(tree, element, true);
tree_recalculate_size(tree);
tree->callbacks->scroll_visible(element->box.y, element->box.height,
tree->client_data);