summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2008-10-06 07:07:33 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2008-10-06 07:07:33 +0000
commitbe787cabb17dc2e28b4f93e3a35ae5d9bff5b879 (patch)
tree0d0dd686f6c7e3b3ba17fc8c158851a8d044f1b5
parent497c218d4a4b7e2419a7c7d664c3e869e88b6e6a (diff)
downloadnetsurf-be787cabb17dc2e28b4f93e3a35ae5d9bff5b879.tar.gz
netsurf-be787cabb17dc2e28b4f93e3a35ae5d9bff5b879.tar.bz2
Closing entire windows instead of just tabs is now possible
svn path=/trunk/netsurf/; revision=5497
-rwxr-xr-xamiga/gui.c45
-rwxr-xr-xamiga/gui.h1
-rwxr-xr-xamiga/menu.c2
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;