diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-04-14 22:36:57 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-04-14 22:36:57 +0000 |
commit | 4044c864e1b3b68602a8791773841c8777b4e8b5 (patch) | |
tree | a146174a1ceb511ee8313d9a2dd49de7baad7b7e /amiga | |
parent | 9f4851d288207aa711a6d4b8f54d307084da85c8 (diff) | |
download | netsurf-4044c864e1b3b68602a8791773841c8777b4e8b5.tar.gz netsurf-4044c864e1b3b68602a8791773841c8777b4e8b5.tar.bz2 |
Ensure the selected item stays selected when being moved. Bit of a hack as the
listbrowser is single-select and recreated completely every update. Needs some
reworking and change to multi-select mode.
svn path=/trunk/netsurf/; revision=7076
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/tree.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/amiga/tree.c b/amiga/tree.c index e67624674..540dd4f3a 100755 --- a/amiga/tree.c +++ b/amiga/tree.c @@ -1,5 +1,5 @@ /* - * Copyright 2008 Chris Young <chris@unsatisfactorysoftware.co.uk> + * Copyright 2008,2009 Chris Young <chris@unsatisfactorysoftware.co.uk> * * This file is part of NetSurf, http://www.netsurf-browser.org/ * @@ -37,6 +37,9 @@ #include <proto/bitmap.h> #include <images/bitmap.h> +struct Node *selectednode; +struct node *selectednode2; + void ami_add_elements(struct treeview_window *twin,struct node *root,WORD *gen); bool ami_tree_launch_node(struct tree *tree, struct node *node); void free_browserlist(struct List *list); @@ -462,6 +465,7 @@ area below the listview when items are selected */ TAG_DONE)) { AddTail(twin->listbrowser_list, lbnode); + if(node == selectednode2) selectednode = lbnode; } break; } @@ -638,6 +642,8 @@ void ami_move_node(struct treeview_window *twin,int move) // for multiselects? LBNA_Selected,(BOOL *)&sel, TAG_DONE); + selectednode2 = treenode; + tree_set_node_selected(twin->tree,twin->tree->root,false); tree_set_node_selected(twin->tree,treenode,true); @@ -665,6 +671,7 @@ void ami_move_node(struct treeview_window *twin,int move) //tree_move_selected_nodes(twin->tree,moveto,before); tree_link_node(moveto,treenode,before); ami_recreate_listbrowser(twin); + selectednode2 = NULL; } void ami_new_bookmark(struct treeview_window *twin) @@ -717,5 +724,6 @@ void ami_recreate_listbrowser(struct treeview_window *twin) RefreshSetGadgetAttrs(twin->gadgets[GID_TREEBROWSER],twin->win,NULL, LISTBROWSER_Labels,twin->listbrowser_list, + LISTBROWSER_SelectedNode,selectednode, TAG_DONE); } |