diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-11-11 13:09:12 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-11-11 13:09:12 +0000 |
commit | dd267bd90a9d4ddd6f6247fc4eceaf7ed80839d0 (patch) | |
tree | c88b1b50fd5359fe0632815fd6f86ca00a16b9ff /amiga/tree.c | |
parent | 36599a09cead791900935aeadcea49d46ff6a786 (diff) | |
download | netsurf-dd267bd90a9d4ddd6f6247fc4eceaf7ed80839d0.tar.gz netsurf-dd267bd90a9d4ddd6f6247fc4eceaf7ed80839d0.tar.bz2 |
Trap RMB and select the node under the pointer if no other node selected
svn path=/trunk/netsurf/; revision=13146
Diffstat (limited to 'amiga/tree.c')
-rwxr-xr-x | amiga/tree.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/amiga/tree.c b/amiga/tree.c index 60bf21aaa..d3694bc2e 100755 --- a/amiga/tree.c +++ b/amiga/tree.c @@ -1,5 +1,5 @@ /* - * Copyright 2008 - 2010 Chris Young <chris@unsatisfactorysoftware.co.uk> + * Copyright 2008 - 2011 Chris Young <chris@unsatisfactorysoftware.co.uk> * * This file is part of NetSurf, http://www.netsurf-browser.org/ * @@ -95,6 +95,7 @@ struct treeview_window { int max_height; struct gui_globals globals; struct sslcert_session_data *ssl_data; + BOOL rmbtrapped; }; void ami_tree_draw(struct treeview_window *twin); @@ -840,6 +841,26 @@ BOOL ami_tree_event(struct treeview_window *twin) GetAttr(SPACE_AreaBox, twin->objects[GID_BROWSER], (ULONG *)&bbox); + if((twin->win->MouseX - bbox->Left >=0) && + (twin->win->MouseX - bbox->Width - bbox->Left <=0) && + (twin->win->MouseY - bbox->Top >=0) && + (twin->win->MouseY - bbox->Height - bbox->Top <=0)) + { + if(twin->rmbtrapped == FALSE) + { + SetWindowAttr(twin->win, WA_RMBTrap, (APTR)(BOOL)TRUE, sizeof(BOOL)); + twin->rmbtrapped = FALSE; + } + } + else + { + if(twin->rmbtrapped == TRUE) + { + SetWindowAttr(twin->win, WA_RMBTrap, (APTR)(BOOL)FALSE, sizeof(BOOL)); + twin->rmbtrapped = TRUE; + } + } + GetAttr(SCROLLER_Top, twin->objects[OID_HSCROLL], (ULONG *)&xs); x = twin->win->MouseX - bbox->Left + xs; @@ -920,6 +941,12 @@ BOOL ami_tree_event(struct treeview_window *twin) if(twin->drag_x == 0) twin->drag_x = x; if(twin->drag_y == 0) twin->drag_y = y; break; + case MENUDOWN: + if(tree_node_has_selection(tree_get_root(twin->tree)) == false) + { + tree_set_node_selected_at(twin->tree, x, y, true); + } + break; } } |