diff options
author | Richard Wilson <rjw@netsurf-browser.org> | 2005-02-08 23:34:56 +0000 |
---|---|---|
committer | Richard Wilson <rjw@netsurf-browser.org> | 2005-02-08 23:34:56 +0000 |
commit | acb914b90af6f937c73c153a818c97baa13eb8c4 (patch) | |
tree | 8881e969a8bed65dabd1e5a44342f1c4725cc185 /riscos | |
parent | 91ec410b7cf03e301caf140a719adf1dd985ad92 (diff) | |
download | netsurf-acb914b90af6f937c73c153a818c97baa13eb8c4.tar.gz netsurf-acb914b90af6f937c73c153a818c97baa13eb8c4.tar.bz2 |
[project @ 2005-02-08 23:34:56 by rjw]
Implement nodes being retained in memory after deletion, stop nodes being able to be moved within themselves.
svn path=/import/netsurf/; revision=1507
Diffstat (limited to 'riscos')
-rw-r--r-- | riscos/treeview.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/riscos/treeview.c b/riscos/treeview.c index ef5618aae..805df40d8 100644 --- a/riscos/treeview.c +++ b/riscos/treeview.c @@ -466,6 +466,22 @@ void tree_update_URL_node(struct node *node) { element->text = strdup(buffer); } + element = tree_find_element(node, TREE_ELEMENT_VISITED); + if (element) { + if (element->text) { + free(element->text); + element->text = NULL; + } + if (element->user_data > 0) { + snprintf(buffer, 256, messages_get("TreeVisited"), + ctime((time_t *)&element->user_data)); + } else { + snprintf(buffer, 256, messages_get("TreeVisited"), + messages_get("TreeUnknown")); + } + element->text = strdup(buffer); + } + element = tree_find_element(node, TREE_ELEMENT_VISITS); if (element) { if (element->text) { @@ -1213,10 +1229,13 @@ void ro_gui_tree_get_tree_coordinates(struct tree *tree, int x, int y, * \param drag the drag box information */ void ro_gui_tree_move_drag_end(wimp_dragged *drag) { + struct gui_window *g; wimp_pointer pointer; wimp_auto_scroll_info scroll; os_error *error; struct node *node; + struct node *single; + struct node_element *element; bool before; int x, y; @@ -1232,11 +1251,24 @@ void ro_gui_tree_move_drag_end(wimp_dragged *drag) { return; } - /* todo: handle export */ - if (pointer.w != (wimp_w)ro_gui_tree_current_drag_tree->handle) + if (pointer.w != (wimp_w)ro_gui_tree_current_drag_tree->handle) { + /* try to drop into a browser window */ + single = tree_get_selected_node(ro_gui_tree_current_drag_tree->root->child); + element = tree_find_element(single, TREE_ELEMENT_URL); + if ((single) && (element)) { + g = ro_gui_window_lookup(pointer.w); + if (g) + browser_window_go(g->bw, element->text, 0); + return; + + } + /* todo: handle export */ return; + } /* internal drag */ + if (!ro_gui_tree_current_drag_tree->movable) + return; ro_gui_tree_get_tree_coordinates(ro_gui_tree_current_drag_tree, drag->final.x0 + 34, drag->final.y0 + 34, &x, &y); node = tree_get_link_details(ro_gui_tree_current_drag_tree, x, y, &before); |