diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2008-10-06 07:07:33 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2008-10-06 07:07:33 +0000 |
commit | be787cabb17dc2e28b4f93e3a35ae5d9bff5b879 (patch) | |
tree | 0d0dd686f6c7e3b3ba17fc8c158851a8d044f1b5 /amiga | |
parent | 497c218d4a4b7e2419a7c7d664c3e869e88b6e6a (diff) | |
download | netsurf-be787cabb17dc2e28b4f93e3a35ae5d9bff5b879.tar.gz netsurf-be787cabb17dc2e28b4f93e3a35ae5d9bff5b879.tar.bz2 |
Closing entire windows instead of just tabs is now possible
svn path=/trunk/netsurf/; revision=5497
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/gui.c | 45 | ||||
-rwxr-xr-x | amiga/gui.h | 1 | ||||
-rwxr-xr-x | amiga/menu.c | 2 |
3 files changed, 45 insertions, 3 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 7f6118b58..032a66798 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -680,7 +680,7 @@ void ami_handle_msg(void) break; case WMHI_CLOSEWINDOW: - browser_window_destroy(gwin->bw); + ami_close_all_tabs(gwin); break; case WMHI_INTUITICK: @@ -993,7 +993,7 @@ void gui_quit(void) void ami_update_buttons(struct gui_window_2 *gwin) { - bool back=FALSE,forward=TRUE; + bool back=FALSE,forward=TRUE,tabclose=FALSE; if(!history_back_available(gwin->bw->history)) { @@ -1005,6 +1005,11 @@ void ami_update_buttons(struct gui_window_2 *gwin) forward=FALSE; } + if(gwin->tabs <= 1) + { + tabclose=TRUE; + } + RefreshSetGadgetAttrs(gwin->gadgets[GID_BACK],gwin->win,NULL, GA_Disabled,back, TAG_DONE); @@ -1012,6 +1017,13 @@ void ami_update_buttons(struct gui_window_2 *gwin) RefreshSetGadgetAttrs(gwin->gadgets[GID_FORWARD],gwin->win,NULL, GA_Disabled,forward, TAG_DONE); + + if(gwin->tabs) + { + RefreshSetGadgetAttrs(gwin->gadgets[GID_CLOSETAB],gwin->win,NULL, + GA_Disabled,tabclose, + TAG_DONE); + } } struct gui_window *gui_create_browser_window(struct browser_window *bw, @@ -1498,6 +1510,35 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, return gwin; } +void ami_close_all_tabs(struct gui_window_2 *gwin) +{ + struct Node *tab; + struct Node *ntab; + + if(gwin->tabs) + { + tab = GetHead(&gwin->tab_list); + + while(ntab=GetSucc(tab)) + { + GetClickTabNodeAttrs(tab, + TNA_UserData,&gwin->bw, + TAG_DONE); + browser_window_destroy(gwin->bw); + tab=ntab; + } + + GetClickTabNodeAttrs(tab, + TNA_UserData,&gwin->bw, + TAG_DONE); + browser_window_destroy(gwin->bw); + } + else + { + browser_window_destroy(gwin->bw); + } +} + void gui_window_destroy(struct gui_window *g) { struct Node *ptab; diff --git a/amiga/gui.h b/amiga/gui.h index 9680d80be..44d985081 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -115,6 +115,7 @@ struct gui_window void ami_get_msg(void); void ami_update_pointer(struct Window *win, gui_pointer_shape shape); +void ami_close_all_tabs(struct gui_window_2 *gwin); struct RastPort *currp; struct TextFont *origrpfont; diff --git a/amiga/menu.c b/amiga/menu.c index 7a4852ac3..6f6033e33 100755 --- a/amiga/menu.c +++ b/amiga/menu.c @@ -226,7 +226,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin) break; case 6: // close window - browser_window_destroy(gwin->bw); + ami_close_all_tabs(gwin); break; } break; |