diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2008-10-04 23:29:17 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2008-10-04 23:29:17 +0000 |
commit | bd94b1242239bce989c254071a31d38398365831 (patch) | |
tree | 6174136f2b0444ec7a5ac6675ace3ca0ef0c405c | |
parent | fb09cf8f0acbc655b4d63c5097252ddba9572a16 (diff) | |
download | netsurf-bd94b1242239bce989c254071a31d38398365831.tar.gz netsurf-bd94b1242239bce989c254071a31d38398365831.tar.bz2 |
Incomplete support for tabbed browsing.
svn path=/trunk/netsurf/; revision=5482
-rwxr-xr-x | amiga/gui.c | 426 | ||||
-rwxr-xr-x | amiga/gui.h | 19 | ||||
-rwxr-xr-x | amiga/menu.c | 68 | ||||
-rwxr-xr-x | amiga/menu.h | 3 |
4 files changed, 311 insertions, 205 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 1ed226a92..a8c91fe6a 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -16,16 +16,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "desktop/gui.h" +#include "amiga/gui.h" #include "desktop/netsurf.h" #include "desktop/options.h" #include "utils/messages.h" #include <proto/exec.h> #include <proto/intuition.h> -#include "amiga/gui.h" #include "amiga/plotters.h" #include "amiga/schedule.h" -#include "amiga/object.h" #include <proto/timer.h> #include "content/urldb.h" #include <libraries/keymap.h> @@ -138,11 +136,11 @@ char *ptrs[AMI_LASTPOINTER+1] = { "Resources/Pointers/Progress", "Resources/Pointers/Blank"}; -void ami_update_throbber(struct gui_window *g); -void ami_update_buttons(struct gui_window *); +void ami_update_throbber(struct gui_window_2 *g); +void ami_update_buttons(struct gui_window_2 *); void ami_scroller_hook(struct Hook *,Object *,struct IntuiMessage *); uint32 ami_popup_hook(struct Hook *hook,Object *item,APTR reserved); -void ami_do_redraw(struct gui_window *g); +void ami_do_redraw(struct gui_window_2 *g); void ami_init_mouse_pointers(void); #ifdef WITH_HUBBUB static void *myrealloc(void *ptr, size_t len, void *pw); @@ -421,9 +419,10 @@ void ami_handle_msg(void) struct IBox *bbox; struct nsObject *node; struct nsObject *nnode; - struct gui_window *gwin,*destroywin=NULL; + struct gui_window_2 *gwin,*destroywin=NULL; struct MenuItem *item; struct InputEvent *ie; + struct Node *tabnode; node = (struct nsObject *)window_list->mlh_Head; @@ -433,7 +432,7 @@ void ami_handle_msg(void) if(node->Type == AMINS_TVWINDOW) { - if(ami_tree_event((struct treeviw_window *)gwin)) + if(ami_tree_event((struct treeview_window *)gwin)) { if(IsMinListEmpty(window_list)) { @@ -486,7 +485,7 @@ void ami_handle_msg(void) } else { - if(!gwin->mouse_state) gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT); + if(!gwin->mouse_state) ami_update_pointer(gwin->win,GUI_POINTER_DEFAULT); } break; @@ -551,6 +550,20 @@ void ami_handle_msg(void) case WMHI_GADGETUP: switch(result & WMHI_GADGETMASK) //gadaddr->GadgetID) //result & WMHI_GADGETMASK) { + case GID_TABS: + GetAttr(CLICKTAB_CurrentNode,gwin->gadgets[GID_TABS],(ULONG *)&tabnode); + GetClickTabNodeAttrs(tabnode, + TNA_UserData,&gwin->bw, + TAG_DONE); + + ami_update_buttons(gwin); + + browser_window_update(gwin->bw,false); + + gwin->redraw_required = true; + gwin->redraw_data = NULL; + break; + case GID_URL: GetAttr(STRINGA_TextVal,gwin->gadgets[GID_URL],(ULONG *)&storage); browser_window_go(gwin->bw,(char *)storage,NULL,true); @@ -703,7 +716,11 @@ void ami_handle_msg(void) ami_update_throbber(gwin); if(gwin->c_h) - gui_window_place_caret(gwin,gwin->c_x,gwin->c_y,gwin->c_h); + { + struct gui_window tgw; + tgw.shared = gwin; + gui_window_place_caret(&tgw,gwin->c_x,gwin->c_y,gwin->c_h); + } node = nnode; } @@ -712,7 +729,7 @@ void ami_handle_msg(void) void ami_handle_appmsg(void) { struct AppMessage *appmsg; - struct gui_window *gwin; + struct gui_window_2 *gwin; struct IBox *bbox; ULONG x,y,xs,ys,width,height,len; struct WBArg *appwinargs; @@ -955,11 +972,9 @@ void gui_quit(void) FreeObjList(schedule_list); FreeObjList(window_list); - -// ami_close_tte(); } -void ami_update_buttons(struct gui_window *gwin) +void ami_update_buttons(struct gui_window_2 *gwin) { bool back=FALSE,forward=TRUE; @@ -989,6 +1004,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, struct NewMenu *menu; struct gui_window *gwin = NULL; bool closegadg=TRUE; + struct Node *node; ULONG curx=option_window_x,cury=option_window_y,curw=option_window_width,curh=option_window_height; char nav_west[100],nav_west_s[100],nav_west_g[100]; char nav_east[100],nav_east_s[100],nav_east_g[100]; @@ -1000,10 +1016,10 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, { if(clone->window) { - curx=clone->window->win->LeftEdge; - cury=clone->window->win->TopEdge; - curw=clone->window->win->Width; - curh=clone->window->win->Height; + curx=clone->window->shared->win->LeftEdge; + cury=clone->window->shared->win->TopEdge; + curw=clone->window->shared->win->Width; + curh=clone->window->shared->win->Height; } } @@ -1026,17 +1042,51 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, return NULL; } - gwin->scrollerhook.h_Entry = ami_scroller_hook; - gwin->scrollerhook.h_Data = gwin; + if(new_tab) + { + gwin->shared = clone->window->shared; - menu = ami_create_menu(bw->browser_window_type); + SetGadgetAttrs(gwin->shared->gadgets[GID_TABS],gwin->shared->win,NULL, + CLICKTAB_Labels,~0, + TAG_DONE); + + gwin->tab_node = AllocClickTabNode(TNA_Text,messages_get("NetSurf"), + TNA_Number,gwin->shared->tabs, + TNA_UserData,bw, + TAG_DONE); + + gwin->tab = gwin->shared->tabs; + + AddTail(&gwin->shared->tab_list,gwin->tab_node); + + RefreshSetGadgetAttrs(gwin->shared->gadgets[GID_TABS],gwin->shared->win,NULL, + CLICKTAB_Labels,&gwin->shared->tab_list, + TAG_DONE); + + RethinkLayout(gwin->shared->gadgets[GID_MAIN],gwin->shared->win,NULL,TRUE); + + gwin->shared->tabs++; + + return gwin; + } + + gwin->shared = AllocVec(sizeof(struct gui_window_2),MEMF_CLEAR); + + if(!gwin->shared) + { + warn_user("NoMemory",""); + return NULL; + } + + gwin->shared->scrollerhook.h_Entry = ami_scroller_hook; + gwin->shared->scrollerhook.h_Data = gwin; switch(bw->browser_window_type) { case BROWSER_WINDOW_IFRAME: case BROWSER_WINDOW_FRAMESET: case BROWSER_WINDOW_FRAME: - gwin->objects[OID_MAIN] = WindowObject, + gwin->shared->objects[OID_MAIN] = WindowObject, WA_ScreenTitle,nsscreentitle, // WA_Title, messages_get("NetSurf"), WA_Activate, FALSE, @@ -1056,18 +1106,18 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, WINDOW_NewMenu,menu, WINDOW_HorizProp,1, WINDOW_VertProp,1, - WINDOW_IDCMPHook,&gwin->scrollerhook, + WINDOW_IDCMPHook,&gwin->shared->scrollerhook, WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE, WINDOW_AppPort, appport, WINDOW_AppWindow,TRUE, WINDOW_SharedPort,sport, - WINDOW_UserData,gwin, + WINDOW_UserData,gwin->shared, // WINDOW_Position, WPOS_CENTERSCREEN, // WINDOW_CharSet,106, - WINDOW_ParentGroup, gwin->gadgets[GID_MAIN] = VGroupObject, + WINDOW_ParentGroup, gwin->shared->gadgets[GID_MAIN] = VGroupObject, // LAYOUT_CharSet,106, LAYOUT_SpaceOuter, TRUE, - LAYOUT_AddChild, gwin->gadgets[GID_BROWSER] = SpaceObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_BROWSER] = SpaceObject, GA_ID,GID_BROWSER, /* GA_RelVerify,TRUE, @@ -1081,6 +1131,17 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, break; case BROWSER_WINDOW_NORMAL: + menu = ami_create_menu(bw->browser_window_type); + + NewList(&gwin->shared->tab_list); + gwin->tab_node = AllocClickTabNode(TNA_Text,messages_get("NetSurf"), + TNA_Number,0, + TNA_UserData,bw, + TAG_DONE); + AddTail(&gwin->shared->tab_list,gwin->tab_node); + + gwin->shared->tabs=1; + strcpy(nav_west,option_toolbar_images); strcpy(nav_west_s,option_toolbar_images); strcpy(nav_west_g,option_toolbar_images); @@ -1112,7 +1173,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, AddPart(home_s,"home_s",100); AddPart(home_g,"home_g",100); - gwin->objects[OID_MAIN] = WindowObject, + gwin->shared->objects[OID_MAIN] = WindowObject, WA_ScreenTitle,nsscreentitle, // WA_Title, messages_get("NetSurf"), WA_Activate, TRUE, @@ -1132,19 +1193,19 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, WINDOW_NewMenu,menu, WINDOW_HorizProp,1, WINDOW_VertProp,1, - WINDOW_IDCMPHook,&gwin->scrollerhook, + WINDOW_IDCMPHook,&gwin->shared->scrollerhook, WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE, WINDOW_AppPort, appport, WINDOW_AppWindow,TRUE, WINDOW_SharedPort,sport, - WINDOW_UserData,gwin, + WINDOW_UserData,gwin->shared, // WINDOW_Position, WPOS_CENTERSCREEN, // WINDOW_CharSet,106, - WINDOW_ParentGroup, gwin->gadgets[GID_MAIN] = VGroupObject, + WINDOW_ParentGroup, gwin->shared->gadgets[GID_MAIN] = VGroupObject, // LAYOUT_CharSet,106, LAYOUT_SpaceOuter, TRUE, LAYOUT_AddChild, HGroupObject, - LAYOUT_AddChild, gwin->gadgets[GID_BACK] = ButtonObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_BACK] = ButtonObject, GA_ID,GID_BACK, GA_RelVerify,TRUE, GA_Disabled,TRUE, @@ -1159,7 +1220,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, gwin->gadgets[GID_FORWARD] = ButtonObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_FORWARD] = ButtonObject, GA_ID,GID_FORWARD, GA_RelVerify,TRUE, GA_Disabled,TRUE, @@ -1174,7 +1235,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, gwin->gadgets[GID_STOP] = ButtonObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_STOP] = ButtonObject, GA_ID,GID_STOP, GA_RelVerify,TRUE, BUTTON_Transparent,TRUE, @@ -1188,7 +1249,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, gwin->gadgets[GID_RELOAD] = ButtonObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_RELOAD] = ButtonObject, GA_ID,GID_RELOAD, GA_RelVerify,TRUE, BUTTON_Transparent,TRUE, @@ -1202,7 +1263,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, gwin->gadgets[GID_HOME] = ButtonObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_HOME] = ButtonObject, GA_ID,GID_HOME, GA_RelVerify,TRUE, BUTTON_Transparent,TRUE, @@ -1216,11 +1277,11 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, gwin->gadgets[GID_URL] = StringObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_URL] = StringObject, GA_ID,GID_URL, GA_RelVerify,TRUE, StringEnd, - LAYOUT_AddChild, gwin->gadgets[GID_THROBBER] = SpaceObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_THROBBER] = SpaceObject, GA_ID,GID_THROBBER, SPACE_MinWidth,throbber_width, SPACE_MinHeight,throbber_height, @@ -1229,15 +1290,17 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, CHILD_WeightedHeight,0, LayoutEnd, CHILD_WeightedHeight,0, - LAYOUT_AddChild, gwin->gadgets[GID_BROWSER] = SpaceObject, - GA_ID,GID_BROWSER, -/* + LAYOUT_AddChild, gwin->shared->gadgets[GID_TABS] = ClickTabObject, + GA_ID,GID_TABS, GA_RelVerify,TRUE, - GA_Immediate,TRUE, - GA_FollowMouse,TRUE, -*/ + CLICKTAB_Labels,&gwin->shared->tab_list, + CLICKTAB_LabelTruncate,TRUE, + ClickTabEnd, + CHILD_CacheDomain,FALSE, + LAYOUT_AddChild, gwin->shared->gadgets[GID_BROWSER] = SpaceObject, + GA_ID,GID_BROWSER, SpaceEnd, - LAYOUT_AddChild, gwin->gadgets[GID_STATUS] = StringObject, + LAYOUT_AddChild, gwin->shared->gadgets[GID_STATUS] = StringObject, GA_ID,GID_STATUS, GA_ReadOnly,TRUE, StringEnd, @@ -1248,80 +1311,81 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, break; } - gwin->win = (struct Window *)RA_OpenWindow(gwin->objects[OID_MAIN]); + gwin->shared->win = (struct Window *)RA_OpenWindow(gwin->shared->objects[OID_MAIN]); - if(!gwin->win) + if(!gwin->shared->win) { warn_user("NoMemory",""); + FreeVec(gwin->shared); FreeVec(gwin); return NULL; } - gwin->bw = bw; - currp = &gwin->rp; // WINDOW.CLASS: &gwin->rp; //gwin->win->RPort; + gwin->shared->bw = bw; + currp = &gwin->shared->rp; // WINDOW.CLASS: &gwin->rp; //gwin->win->RPort; - gwin->bm = p96AllocBitMap(scrn->Width,scrn->Height,32, + gwin->shared->bm = p96AllocBitMap(scrn->Width,scrn->Height,32, BMF_CLEAR | BMF_DISPLAYABLE | BMF_INTERLEAVED, - gwin->win->RPort->BitMap, + gwin->shared->win->RPort->BitMap, RGBFB_A8R8G8B8); - if(!gwin->bm) + if(!gwin->shared->bm) { warn_user("NoMemory",""); browser_window_destroy(bw); return NULL; } - InitRastPort(&gwin->rp); - gwin->rp.BitMap = gwin->bm; - SetDrMd(&gwin->rp,BGBACKFILL); + InitRastPort(&gwin->shared->rp); + gwin->shared->rp.BitMap = gwin->shared->bm; + SetDrMd(&gwin->shared->rp,BGBACKFILL); - gwin->layerinfo = NewLayerInfo(); - gwin->rp.Layer = CreateUpfrontLayer(gwin->layerinfo,gwin->bm,0,0,scrn->Width-1,scrn->Height-1,0,NULL); + gwin->shared->layerinfo = NewLayerInfo(); + gwin->shared->rp.Layer = CreateUpfrontLayer(gwin->shared->layerinfo,gwin->shared->bm,0,0,scrn->Width-1,scrn->Height-1,0,NULL); - gwin->areabuf = AllocVec(100,MEMF_CLEAR); - gwin->rp.AreaInfo = AllocVec(sizeof(struct AreaInfo),MEMF_CLEAR); + gwin->shared->areabuf = AllocVec(100,MEMF_CLEAR); + gwin->shared->rp.AreaInfo = AllocVec(sizeof(struct AreaInfo),MEMF_CLEAR); - if((!gwin->areabuf) || (!gwin->rp.AreaInfo)) + if((!gwin->shared->areabuf) || (!gwin->shared->rp.AreaInfo)) { warn_user("NoMemory",""); browser_window_destroy(bw); return NULL; } - InitArea(gwin->rp.AreaInfo,gwin->areabuf,100/5); - gwin->rp.TmpRas = AllocVec(sizeof(struct TmpRas),MEMF_CLEAR); - gwin->tmprasbuf = AllocVec(scrn->Width*scrn->Height,MEMF_CLEAR); + InitArea(gwin->shared->rp.AreaInfo,gwin->shared->areabuf,100/5); + gwin->shared->rp.TmpRas = AllocVec(sizeof(struct TmpRas),MEMF_CLEAR); + gwin->shared->tmprasbuf = AllocVec(scrn->Width*scrn->Height,MEMF_CLEAR); - if((!gwin->tmprasbuf) || (!gwin->rp.TmpRas)) + if((!gwin->shared->tmprasbuf) || (!gwin->shared->rp.TmpRas)) { warn_user("NoMemory",""); browser_window_destroy(bw); return NULL; } - InitTmpRas(gwin->rp.TmpRas,gwin->tmprasbuf,scrn->Width*scrn->Height); + InitTmpRas(gwin->shared->rp.TmpRas,gwin->shared->tmprasbuf,scrn->Width*scrn->Height); // GetRPAttrs(&gwin->rp,RPTAG_Font,&origrpfont,TAG_DONE); // ami_tte_setdefaults(&gwin->rp,gwin->win); - GetAttr(WINDOW_HorizObject,gwin->objects[OID_MAIN],(ULONG *)&gwin->objects[OID_HSCROLL]); - GetAttr(WINDOW_VertObject,gwin->objects[OID_MAIN],(ULONG *)&gwin->objects[OID_VSCROLL]); + GetAttr(WINDOW_HorizObject,gwin->shared->objects[OID_MAIN],(ULONG *)&gwin->shared->objects[OID_HSCROLL]); + GetAttr(WINDOW_VertObject,gwin->shared->objects[OID_MAIN],(ULONG *)&gwin->shared->objects[OID_VSCROLL]); - RefreshSetGadgetAttrs((APTR)gwin->objects[OID_VSCROLL],gwin->win,NULL, + RefreshSetGadgetAttrs((APTR)gwin->shared->objects[OID_VSCROLL],gwin->shared->win,NULL, GA_ID,OID_VSCROLL, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); - RefreshSetGadgetAttrs((APTR)gwin->objects[OID_HSCROLL],gwin->win,NULL, + RefreshSetGadgetAttrs((APTR)gwin->shared->objects[OID_HSCROLL],gwin->shared->win,NULL, GA_ID,OID_HSCROLL, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); - gwin->node = AddObject(window_list,AMINS_WINDOW); - gwin->node->objstruct = gwin; + gwin->shared->node = AddObject(window_list,AMINS_WINDOW); + gwin->shared->node->objstruct = gwin->shared; return gwin; } @@ -1330,17 +1394,25 @@ void gui_window_destroy(struct gui_window *g) { if(!g) return; + if(g->shared->tabs > 1) + { +/* we need to remove the tab in question, but for the moment... */ + g->shared->tabs--; + win_destroyed = true; + return; + } + // DisposeDTObject(g->gadgets[GID_THROBBER]); - DisposeObject(g->objects[OID_MAIN]); - DeleteLayer(0,g->rp.Layer); - DisposeLayerInfo(g->layerinfo); + DisposeObject(g->shared->objects[OID_MAIN]); + DeleteLayer(0,g->shared->rp.Layer); + DisposeLayerInfo(g->shared->layerinfo); // ami_tte_cleanup(&g->rp); - p96FreeBitMap(g->bm); - FreeVec(g->rp.TmpRas); - FreeVec(g->rp.AreaInfo); - FreeVec(g->tmprasbuf); - FreeVec(g->areabuf); - DelObject(g->node); + p96FreeBitMap(g->shared->bm); + FreeVec(g->shared->rp.TmpRas); + FreeVec(g->shared->rp.AreaInfo); + FreeVec(g->shared->tmprasbuf); + FreeVec(g->shared->areabuf); + DelObject(g->shared->node); // FreeVec(g); should be freed by DelObject() if(IsMinListEmpty(window_list)) @@ -1354,9 +1426,31 @@ void gui_window_destroy(struct gui_window *g) void gui_window_set_title(struct gui_window *g, const char *title) { + struct Node *node; + WORD cur_tab; if(!g) return; - if(g->win->Title) ami_utf8_free(g->win->Title); - SetWindowTitles(g->win,ami_utf8_easy(title),nsscreentitle); + + if(g->tab_node) + { + node = g->tab_node; +// GetAttr(CLICKTAB_CurrentNode,g->shared->gadgets[GID_TABS],(ULONG *)&node); + SetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL, + CLICKTAB_Labels,~0, + TAG_DONE); + SetClickTabNodeAttrs(node,TNA_Text,title,TAG_DONE); + RefreshSetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL, + CLICKTAB_Labels,&g->shared->tab_list, + TAG_DONE); + RethinkLayout(g->shared->gadgets[GID_MAIN],g->shared->win,NULL,TRUE); + + GetAttr(CLICKTAB_Current,g->shared->gadgets[GID_TABS],(ULONG *)&cur_tab); + } + + if((cur_tab == g->tab) || (g->shared->tabs == 0)) + { + if(g->shared->win->Title) ami_utf8_free(g->shared->win->Title); + SetWindowTitles(g->shared->win,ami_utf8_easy(title),nsscreentitle); + } } void gui_window_redraw(struct gui_window *g, int x0, int y0, int x1, int y1) @@ -1368,8 +1462,8 @@ void gui_window_redraw_window(struct gui_window *g) { if(!g) return; - g->redraw_required = true; - g->redraw_data = NULL; + g->shared->redraw_required = true; + g->shared->redraw_data = NULL; } void gui_window_update_box(struct gui_window *g, @@ -1381,20 +1475,20 @@ void gui_window_update_box(struct gui_window *g, if(!g) return; - GetAttr(SPACE_AreaBox,g->gadgets[GID_BROWSER],(ULONG *)&bbox); - GetAttr(SCROLLER_Top,g->objects[OID_HSCROLL],(ULONG *)&hcurrent); - GetAttr(SCROLLER_Top,g->objects[OID_VSCROLL],(ULONG *)&vcurrent); + GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox); + GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)&hcurrent); + GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)&vcurrent); // DebugPrintF("DOING REDRAW\n"); - c = g->bw->current_content; + c = g->shared->bw->current_content; if(!c) return; if (c->locked) return; - current_redraw_browser = g->bw; + current_redraw_browser = g->shared->bw; - currp = &g->rp; + currp = &g->shared->rp; width=bbox->Width; height=bbox->Height; @@ -1407,31 +1501,31 @@ void gui_window_update_box(struct gui_window *g, content_redraw(data->redraw.object, floorf((data->redraw.object_x * - g->bw->scale)-hcurrent), + g->shared->bw->scale)-hcurrent), ceilf((data->redraw.object_y * - g->bw->scale)-vcurrent), + g->shared->bw->scale)-vcurrent), data->redraw.object_width * - g->bw->scale, + g->shared->bw->scale, data->redraw.object_height * - g->bw->scale, + g->shared->bw->scale, 0,0,width,height, - g->bw->scale, + g->shared->bw->scale, 0xFFFFFF); current_redraw_browser = NULL; currp = &dummyrp; - ami_update_buttons(g); + ami_update_buttons(g->shared); - BltBitMapRastPort(g->bm,0,0,g->win->RPort,xoffset,yoffset,width,height,0x0C0); // this blit needs optimising + BltBitMapRastPort(g->shared->bm,0,0,g->shared->win->RPort,xoffset,yoffset,width,height,0x0C0); // this blit needs optimising -/* doing immedaite redraw here for now - g->redraw_required = true; - g->redraw_data = data; +/* doing immediate redraw here for now + g->shared->redraw_required = true; + g->shared->redraw_data = data; */ } -void ami_do_redraw(struct gui_window *g) +void ami_do_redraw(struct gui_window_2 *g) { struct Region *reg = NULL; struct Rectangle rect; @@ -1454,21 +1548,6 @@ void ami_do_redraw(struct gui_window *g) currp = &g->rp; -/* - reg = NewRegion(); - - rect.MinX = 0; - rect.MinY = 0; - rect.MaxX = 1023; - rect.MaxY = 767; - - OrRectRegion(reg,&rect); - - InstallClipRegion(g->rp.Layer,reg); -*/ - -// currp = g->rp.Layer->rp; - width=bbox->Width; height=bbox->Height; xoffset=bbox->Left; @@ -1521,24 +1600,24 @@ void ami_do_redraw(struct gui_window *g) bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy) { - GetAttr(SCROLLER_Top,g->objects[OID_HSCROLL],(ULONG *)sx); - GetAttr(SCROLLER_Top,g->objects[OID_VSCROLL],(ULONG *)sy); + GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)sx); + GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)sy); } void gui_window_set_scroll(struct gui_window *g, int sx, int sy) { if(!g) return; - RefreshSetGadgetAttrs((APTR)g->objects[OID_VSCROLL],g->win,NULL, + RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_VSCROLL],g->shared->win,NULL, SCROLLER_Top,sy, TAG_DONE); - RefreshSetGadgetAttrs((APTR)g->objects[OID_HSCROLL],g->win,NULL, + RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_HSCROLL],g->shared->win,NULL, SCROLLER_Top,sx, TAG_DONE); - g->redraw_required = true; - g->redraw_data = NULL; + g->shared->redraw_required = true; + g->shared->redraw_data = NULL; } void gui_window_scroll_visible(struct gui_window *g, int x0, int y0, @@ -1551,7 +1630,7 @@ void gui_window_position_frame(struct gui_window *g, int x0, int y0, int x1, int y1) { if(!g) return; - ChangeWindowBox(g->win,x0,y0,x1-x0,y1-y0); + ChangeWindowBox(g->shared->win,x0,y0,x1-x0,y1-y0); } void gui_window_get_dimensions(struct gui_window *g, int *width, int *height, @@ -1560,7 +1639,7 @@ void gui_window_get_dimensions(struct gui_window *g, int *width, int *height, struct IBox *bbox; if(!g) return; - GetAttr(SPACE_AreaBox,g->gadgets[GID_BROWSER],(ULONG *)&bbox); + GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox); *width = bbox->Width; *height = bbox->Height; @@ -1580,21 +1659,21 @@ void gui_window_update_extent(struct gui_window *g) if(!g) return; - GetAttr(SPACE_AreaBox,g->gadgets[GID_BROWSER],(ULONG *)&bbox); + GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox); /* printf("upd ext %ld,%ld\n",g->bw->current_content->width, // * g->bw->scale, g->bw->current_content->height); // * g->bw->scale); */ - RefreshSetGadgetAttrs((APTR)g->objects[OID_VSCROLL],g->win,NULL, - SCROLLER_Total,g->bw->current_content->height, + RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_VSCROLL],g->shared->win,NULL, + SCROLLER_Total,g->shared->bw->current_content->height, SCROLLER_Visible,bbox->Height, SCROLLER_Top,0, TAG_DONE); - RefreshSetGadgetAttrs((APTR)g->objects[OID_HSCROLL],g->win,NULL, - SCROLLER_Total,g->bw->current_content->width, + RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_HSCROLL],g->shared->win,NULL, + SCROLLER_Total,g->shared->bw->current_content->width, SCROLLER_Visible,bbox->Width, SCROLLER_Top,0, TAG_DONE); @@ -1602,11 +1681,16 @@ void gui_window_update_extent(struct gui_window *g) void gui_window_set_status(struct gui_window *g, const char *text) { - RefreshSetGadgetAttrs(g->gadgets[GID_STATUS],g->win,NULL,STRINGA_TextVal,text,TAG_DONE); + RefreshSetGadgetAttrs(g->shared->gadgets[GID_STATUS],g->shared->win,NULL,STRINGA_TextVal,text,TAG_DONE); } void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) { + ami_update_pointer(g->shared->win,shape); +} + +void ami_update_pointer(struct Window *win, gui_pointer_shape shape) +{ if(mouseptrcurrent == shape) return; if(option_use_os_pointers) @@ -1614,11 +1698,11 @@ void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) switch(shape) { case GUI_POINTER_DEFAULT: - SetWindowPointer(g->win,TAG_DONE); + SetWindowPointer(win,TAG_DONE); break; case GUI_POINTER_WAIT: - SetWindowPointer(g->win, + SetWindowPointer(win, WA_BusyPointer,TRUE, WA_PointerDelay,TRUE, TAG_DONE); @@ -1627,11 +1711,11 @@ void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) default: if(mouseptrobj[shape]) { - SetWindowPointer(g->win,WA_Pointer,mouseptrobj[shape],TAG_DONE); + SetWindowPointer(win,WA_Pointer,mouseptrobj[shape],TAG_DONE); } else { - SetWindowPointer(g->win,TAG_DONE); + SetWindowPointer(win,TAG_DONE); } break; } @@ -1640,20 +1724,20 @@ void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) { if(mouseptrobj[shape]) { - SetWindowPointer(g->win,WA_Pointer,mouseptrobj[shape],TAG_DONE); + SetWindowPointer(win,WA_Pointer,mouseptrobj[shape],TAG_DONE); } else { if(shape == GUI_POINTER_WAIT) { - SetWindowPointer(g->win, + SetWindowPointer(win, WA_BusyPointer,TRUE, WA_PointerDelay,TRUE, TAG_DONE); } else { - SetWindowPointer(g->win,TAG_DONE); + SetWindowPointer(win,TAG_DONE); } } } @@ -1665,7 +1749,7 @@ void gui_window_hide_pointer(struct gui_window *g) { if(mouseptrcurrent != AMI_LASTPOINTER) { - SetWindowPointer(g->win,WA_Pointer,mouseptrobj[AMI_LASTPOINTER],TAG_DONE); + SetWindowPointer(g->shared->win,WA_Pointer,mouseptrobj[AMI_LASTPOINTER],TAG_DONE); mouseptrcurrent = AMI_LASTPOINTER; } } @@ -1785,30 +1869,30 @@ void gui_window_set_url(struct gui_window *g, const char *url) { if(!g) return; - RefreshSetGadgetAttrs(g->gadgets[GID_URL],g->win,NULL,STRINGA_TextVal,url,TAG_DONE); + RefreshSetGadgetAttrs(g->shared->gadgets[GID_URL],g->shared->win,NULL,STRINGA_TextVal,url,TAG_DONE); } void gui_window_start_throbber(struct gui_window *g) { struct IBox *bbox; - GetAttr(SPACE_AreaBox,g->gadgets[GID_THROBBER],(ULONG *)&bbox); + GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_THROBBER],(ULONG *)&bbox); - g->throbber_frame=1; + g->shared->throbber_frame=1; - BltBitMapRastPort(throbber,throbber_width,0,g->win->RPort,bbox->Left,bbox->Top,throbber_width,throbber_height,0x0C0); + BltBitMapRastPort(throbber,throbber_width,0,g->shared->win->RPort,bbox->Left,bbox->Top,throbber_width,throbber_height,0x0C0); } void gui_window_stop_throbber(struct gui_window *g) { struct IBox *bbox; - GetAttr(SPACE_AreaBox,g->gadgets[GID_THROBBER],(ULONG *)&bbox); + GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_THROBBER],(ULONG *)&bbox); - BltBitMapRastPort(throbber,0,0,g->win->RPort,bbox->Left,bbox->Top,throbber_width,throbber_height,0x0C0); + BltBitMapRastPort(throbber,0,0,g->shared->win->RPort,bbox->Left,bbox->Top,throbber_width,throbber_height,0x0C0); - g->throbber_frame = 0; + g->shared->throbber_frame = 0; } -void ami_update_throbber(struct gui_window *g) +void ami_update_throbber(struct gui_window_2 *g) { struct IBox *bbox; @@ -1838,19 +1922,19 @@ void gui_window_place_caret(struct gui_window *g, int x, int y, int height) gui_window_remove_caret(g); - GetAttr(SPACE_AreaBox,g->gadgets[GID_BROWSER],(ULONG *)&bbox); - GetAttr(SCROLLER_Top,g->objects[OID_HSCROLL],&xs); - GetAttr(SCROLLER_Top,g->objects[OID_VSCROLL],&ys); + GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox); + GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],&xs); + GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],&ys); - SetAPen(g->win->RPort,3); + SetAPen(g->shared->win->RPort,3); // if(((x-xs) < bbox->Left) || ((x-xs) > (bbox->Left+bbox->Width)) || ((y-ys) < bbox->Top) || ((y-ys) > (bbox->Top+bbox->Height))) return; - RectFill(g->win->RPort,x+bbox->Left-xs,y+bbox->Top-ys,x+bbox->Left+2-xs,y+bbox->Top+height-ys); + RectFill(g->shared->win->RPort,x+bbox->Left-xs,y+bbox->Top-ys,x+bbox->Left+2-xs,y+bbox->Top+height-ys); - g->c_x = x; - g->c_y = y; - g->c_h = height; + g->shared->c_x = x; + g->shared->c_y = y; + g->shared->c_h = height; } void gui_window_remove_caret(struct gui_window *g) @@ -1860,13 +1944,13 @@ void gui_window_remove_caret(struct gui_window *g) if(!g) return; - GetAttr(SPACE_AreaBox,g->gadgets[GID_BROWSER],(ULONG *)&bbox); - GetAttr(SCROLLER_Top,g->objects[OID_HSCROLL],(ULONG *)&xs); - GetAttr(SCROLLER_Top,g->objects[OID_VSCROLL],(ULONG *)&ys); + GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox); + GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)&xs); + GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)&ys); - BltBitMapRastPort(g->bm,g->c_x,g->c_y,g->win->RPort,bbox->Left+g->c_x-xs,bbox->Top+g->c_y-ys,2+1,g->c_h+1,0x0C0); + BltBitMapRastPort(g->shared->bm,g->shared->c_x,g->shared->c_y,g->shared->win->RPort,bbox->Left+g->shared->c_x-xs,bbox->Top+g->shared->c_y-ys,2+1,g->shared->c_h+1,0x0C0); - g->c_h = 0; + g->shared->c_h = 0; } void gui_window_new_content(struct gui_window *g) @@ -1955,8 +2039,8 @@ struct gui_download_window *gui_download_window_create(const char *url, FUELGAUGE_Min,0, FUELGAUGE_Max,total_size, FUELGAUGE_Level,0, - FUELGAUGE_Ticks,4, - FUELGAUGE_ShortTicks,4, + FUELGAUGE_Ticks,11, + FUELGAUGE_ShortTicks,TRUE, FUELGAUGE_VarArgs,va, FUELGAUGE_Percent,FALSE, FUELGAUGE_Justification,FGJ_CENTER, @@ -2075,7 +2159,7 @@ void gui_paste_from_clipboard(struct gui_window *g, int x, int y) utf8_from_enc(readbuf,parserutils_charset_mibenum_to_name(cset.CodeSet),rlen,&clip); } - browser_window_paste_text(g->bw,clip,rlen,true); + browser_window_paste_text(g->shared->bw,clip,rlen,true); } if(rlen < 0) error = rlen; } @@ -2177,17 +2261,17 @@ void gui_create_form_select_menu(struct browser_window *bw, struct form_option *opt = control->data.select.items; ULONG i = 0; - gwin->popuphook.h_Entry = ami_popup_hook; - gwin->popuphook.h_Data = gwin; + gwin->shared->popuphook.h_Entry = ami_popup_hook; + gwin->shared->popuphook.h_Data = gwin; - gwin->control = control; + gwin->shared->control = control; - gwin->objects[OID_MENU] = PMMENU(messages_get("NetSurf")), - PMA_MenuHandler, &gwin->popuphook,End; + gwin->shared->objects[OID_MENU] = PMMENU(messages_get("NetSurf")), + PMA_MenuHandler, &gwin->shared->popuphook,End; while(opt) { - IDoMethod(gwin->objects[OID_MENU],PM_INSERT,NewObject( POPUPMENU_GetItemClass(), NULL, PMIA_Title, (ULONG)ami_utf8_easy(opt->text),PMIA_ID,i,PMIA_CheckIt,TRUE,PMIA_Checked,opt->selected,TAG_DONE),~0); + IDoMethod(gwin->shared->objects[OID_MENU],PM_INSERT,NewObject( POPUPMENU_GetItemClass(), NULL, PMIA_Title, (ULONG)ami_utf8_easy(opt->text),PMIA_ID,i,PMIA_CheckIt,TRUE,PMIA_Checked,opt->selected,TAG_DONE),~0); opt = opt->next; i++; @@ -2195,7 +2279,7 @@ void gui_create_form_select_menu(struct browser_window *bw, gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT); // Clear the menu-style pointer - IDoMethod(gwin->objects[OID_MENU],PM_OPEN,gwin->win); + IDoMethod(gwin->shared->objects[OID_MENU],PM_OPEN,gwin->shared->win); } @@ -2221,11 +2305,11 @@ void ami_scroller_hook(struct Hook *hook,Object *object,struct IntuiMessage *msg switch( gid ) { case OID_HSCROLL: - gwin->redraw_required = true; + gwin->shared->redraw_required = true; break; case OID_VSCROLL: - gwin->redraw_required = true; + gwin->shared->redraw_required = true; break; } } @@ -2239,7 +2323,7 @@ uint32 ami_popup_hook(struct Hook *hook,Object *item,APTR reserved) if(GetAttr(PMIA_ID, item, &itemid)) { - browser_window_form_select(gwin->bw,gwin->control,itemid); + browser_window_form_select(gwin->shared->bw,gwin->shared->control,itemid); } // DisposeObject(gwin->objects[OID_MENU]); diff --git a/amiga/gui.h b/amiga/gui.h index 6df70c454..288b5838d 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -23,6 +23,7 @@ #include <intuition/classusr.h> #include "desktop/browser.h" #include <dos/dos.h> +#include "desktop/gui.h" /* temp icon.library stuff */ #define ICONCTRLA_SetImageDataFormat (ICONA_Dummy + 0x67) /*103*/ @@ -34,8 +35,6 @@ #define IDFMT_DIRECTMAPPED (2) /* Direct mapped icon (truecolor 0xAARRGGBB, V51+) */ /* temp icon.library stuff */ -void ami_get_msg(void); - enum { GID_MAIN=0, @@ -48,6 +47,7 @@ enum GID_BACK, GID_FORWARD, GID_THROBBER, + GID_TABS, GID_USER, GID_PASS, GID_LOGIN, @@ -76,7 +76,7 @@ struct gui_download_window { uint32 downloaded; }; -struct gui_window { +struct gui_window_2 { struct Window *win; Object *objects[OID_LAST]; struct Gadget *gadgets[GID_LAST]; @@ -85,7 +85,8 @@ struct gui_window { bool redraw_required; int throbber_frame; int c_h; - struct List *tab_bw_list; + struct List tab_list; + int tabs; struct BitMap *bm; struct RastPort rp; struct Layer_Info *layerinfo; @@ -102,6 +103,16 @@ struct gui_window { int c_y; }; +struct gui_window +{ + struct gui_window_2 *shared; + int tab; + struct Node *tab_node; +}; + +void ami_get_msg(void); +void ami_update_pointer(struct Window *win, gui_pointer_shape shape); + struct RastPort *currp; struct TextFont *origrpfont; struct MinList *window_list; diff --git a/amiga/menu.c b/amiga/menu.c index d9d0d878a..a85bb17cc 100755 --- a/amiga/menu.c +++ b/amiga/menu.c @@ -47,22 +47,22 @@ void ami_init_menulabs(void) { menulab[0] = ami_utf8_easy((char *)messages_get("Project")); menulab[1] = ami_utf8_easy((char *)messages_get("NewWindowNS")); - menulab[2] = NM_BARLABEL; - menulab[3] = ami_utf8_easy((char *)messages_get("SaveAs")); - menulab[4] = ami_utf8_easy((char *)messages_get("Source")); - menulab[5] = ami_utf8_easy((char *)messages_get("TextNS")); - menulab[6] = ami_utf8_easy((char *)messages_get("PDF")); - menulab[7] = NM_BARLABEL; - menulab[8] = ami_utf8_easy((char *)messages_get("CloseWindow")); - menulab[9] = ami_utf8_easy((char *)messages_get("Edit")); - menulab[10] = ami_utf8_easy((char *)messages_get("CopyNS")); - menulab[11] = ami_utf8_easy((char *)messages_get("Paste")); - menulab[12] = ami_utf8_easy((char *)messages_get("SelectAllNS")); - menulab[13] = ami_utf8_easy((char *)messages_get("ClearNS")); - menulab[14] = ami_utf8_easy((char *)messages_get("Hotlist")); - menulab[15] = ami_utf8_easy((char *)messages_get("HotlistAdd")); - menulab[16] = ami_utf8_easy((char *)messages_get("HotlistShowNS")); - menulab[17] = ami_utf8_easy((char *)messages_get("Hotlist-browser")); + menulab[2] = ami_utf8_easy((char *)messages_get("NewTab")); + menulab[3] = NM_BARLABEL; + menulab[4] = ami_utf8_easy((char *)messages_get("SaveAs")); + menulab[5] = ami_utf8_easy((char *)messages_get("Source")); + menulab[6] = ami_utf8_easy((char *)messages_get("TextNS")); + menulab[7] = ami_utf8_easy((char *)messages_get("PDF")); + menulab[8] = NM_BARLABEL; + menulab[9] = ami_utf8_easy((char *)messages_get("CloseWindow")); + menulab[10] = ami_utf8_easy((char *)messages_get("Edit")); + menulab[11] = ami_utf8_easy((char *)messages_get("CopyNS")); + menulab[12] = ami_utf8_easy((char *)messages_get("Paste")); + menulab[13] = ami_utf8_easy((char *)messages_get("SelectAllNS")); + menulab[14] = ami_utf8_easy((char *)messages_get("ClearNS")); + menulab[15] = ami_utf8_easy((char *)messages_get("Hotlist")); + menulab[16] = ami_utf8_easy((char *)messages_get("HotlistAdd")); + menulab[17] = ami_utf8_easy((char *)messages_get("HotlistShowNS")); menulab[18] = ami_utf8_easy((char *)messages_get("Settings")); menulab[19] = ami_utf8_easy((char *)messages_get("SnapshotWindow")); menulab[20] = ami_utf8_easy((char *)messages_get("SettingsSave")); @@ -75,6 +75,7 @@ struct NewMenu *ami_create_menu(ULONG type) STATIC struct NewMenu menu[] = { {NM_TITLE,0,0,0,0,0,}, // project { NM_ITEM,0,"N",0,0,0,}, // new window + { NM_ITEM,0,"T",0,0,0,}, // new tab { NM_ITEM,NM_BARLABEL,0,0,0,0,}, { NM_ITEM,0,0,0,0,0,}, // save { NM_SUB,0,"S",0,0,0,}, // save as source @@ -90,7 +91,6 @@ struct NewMenu *ami_create_menu(ULONG type) {NM_TITLE,0,0,0,0,0,}, // hotlist { NM_ITEM,0,0,0,0,0,}, // add to hotlist { NM_ITEM,0,"H",0,0,0,}, // show hotlist (treeview) - { NM_ITEM,0,0,0,0,0,}, // show hotlist (browser window) {NM_TITLE,0,0,0,0,0,}, // settings { NM_ITEM,0,0,0,0,0,}, // snapshot window { NM_ITEM,0,0,0,0,0,}, // save settings @@ -108,22 +108,28 @@ struct NewMenu *ami_create_menu(ULONG type) } menu[1].nm_Flags = menuflags; - menu[8].nm_Flags = menuflags; + menu[2].nm_Flags = menuflags; + menu[9].nm_Flags = menuflags; #ifndef WITH_PDF_EXPORT - menu[6].nm_Flags = NM_ITEMDISABLED; + menu[7].nm_Flags = NM_ITEMDISABLED; #endif return(menu); } -void ami_menupick(ULONG code,struct gui_window *gwin) +void ami_menupick(ULONG code,struct gui_window_2 *gwin) { + struct gui_window tgw; ULONG menunum=0,itemnum=0,subnum=0; menunum = MENUNUM(code); itemnum = ITEMNUM(code); subnum = SUBNUM(code); + tgw.tab_node = NULL; + tgw.tab = 0; + tgw.shared = gwin; + switch(menunum) { case 0: // project @@ -134,7 +140,11 @@ void ami_menupick(ULONG code,struct gui_window *gwin) bw = browser_window_create(gwin->bw->current_content->url,gwin->bw, 0, true, false); break; - case 2: // save + case 1: // new tab + bw = browser_window_create(gwin->bw->current_content->url,gwin->bw, 0, true, true); + break; + + case 3: // save switch(subnum) { BPTR fh=0; @@ -150,14 +160,14 @@ void ami_menupick(ULONG code,struct gui_window *gwin) { strlcpy(&fname,filereq->fr_Drawer,1024); AddPart(fname,filereq->fr_File,1024); - gui_window_set_pointer(gwin,GUI_POINTER_WAIT); + ami_update_pointer(gwin->win,GUI_POINTER_WAIT); if(fh = FOpen(fname,MODE_NEWFILE,0)) { FWrite(fh,gwin->bw->current_content->source_data,1,gwin->bw->current_content->source_size); FClose(fh); SetComment(fname,gwin->bw->current_content->url); } - gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT); + ami_update_pointer(gwin->win,GUI_POINTER_DEFAULT); } break; @@ -171,10 +181,10 @@ void ami_menupick(ULONG code,struct gui_window *gwin) { strlcpy(&fname,filereq->fr_Drawer,1024); AddPart(fname,filereq->fr_File,1024); - gui_window_set_pointer(gwin,GUI_POINTER_WAIT); + ami_update_pointer(gwin->win,GUI_POINTER_WAIT); save_as_text(gwin->bw->current_content,fname); SetComment(fname,gwin->bw->current_content->url); - gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT); + ami_update_pointer(gwin->win,GUI_POINTER_DEFAULT); } break; @@ -189,18 +199,18 @@ void ami_menupick(ULONG code,struct gui_window *gwin) { strlcpy(&fname,filereq->fr_Drawer,1024); AddPart(fname,filereq->fr_File,1024); - gui_window_set_pointer(gwin,GUI_POINTER_WAIT); + ami_update_pointer(gwin->win,GUI_POINTER_WAIT); pdf_set_scale(DEFAULT_EXPORT_SCALE); save_as_pdf(gwin->bw->current_content,fname); SetComment(fname,gwin->bw->current_content->url); - gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT); + ami_update_pointer(gwin->win,GUI_POINTER_DEFAULT); } #endif break; } break; - case 4: // close + case 5: // close browser_window_destroy(gwin->bw); break; } @@ -215,7 +225,7 @@ void ami_menupick(ULONG code,struct gui_window *gwin) break; case 1: // paste - gui_paste_from_clipboard(gwin,0,0); + gui_paste_from_clipboard(&tgw,0,0); break; case 2: // select all diff --git a/amiga/menu.h b/amiga/menu.h index 59edbe66a..ead20791c 100755 --- a/amiga/menu.h +++ b/amiga/menu.h @@ -19,6 +19,7 @@ #ifndef AMIGA_MENU_H #define AMIGA_MENU_H #include <exec/types.h> +#include "amiga/gui.h" #define AMI_MENU_MAX 20 char *menulab[AMI_MENU_MAX+1]; @@ -26,5 +27,5 @@ char *menulab[AMI_MENU_MAX+1]; struct NewMenu *ami_create_menu(ULONG type); void ami_init_menulabs(void); void ami_free_menulabs(void); -void ami_menupick(ULONG code,struct gui_window *gwin); +void ami_menupick(ULONG code,struct gui_window_2 *gwin); #endif |