summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2009-04-14 22:36:57 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2009-04-14 22:36:57 +0000
commit4044c864e1b3b68602a8791773841c8777b4e8b5 (patch)
treea146174a1ceb511ee8313d9a2dd49de7baad7b7e /amiga
parent9f4851d288207aa711a6d4b8f54d307084da85c8 (diff)
downloadnetsurf-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-xamiga/tree.c10
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);
}