diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-09-15 22:49:33 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-09-15 22:49:33 +0000 |
commit | a35b96ace757af3dfa72c9c2a2454b17ee42d7ee (patch) | |
tree | 9bef383ce7ad67cb334ab59dd12e10cdbea8c6b3 | |
parent | a6fb92eb8a300cbb034610b882814f7b566696d6 (diff) | |
download | netsurf-a35b96ace757af3dfa72c9c2a2454b17ee42d7ee.tar.gz netsurf-a35b96ace757af3dfa72c9c2a2454b17ee42d7ee.tar.bz2 |
Modify bottom border status gadget so that it has a frame. When the gadget is
refreshed now it will erase the gadget area before redrawing, allowing to use
RefreshGList instead of RefreshWindowFrame. This is significantly faster as
RefreshWindowFrame redraws more than the function name suggests.
svn path=/trunk/netsurf/; revision=9577
-rwxr-xr-x | amiga/gui.c | 69 | ||||
-rwxr-xr-x | amiga/gui.h | 1 |
2 files changed, 47 insertions, 23 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 678e2f44f..0a784e22e 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -2172,12 +2172,30 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, GA_Width, size1, GA_DrawInfo, dri, GA_BottomBorder, TRUE, + GA_ReadOnly, TRUE, + GA_Image, (struct Image *)NewObject( + NULL, + "frameiclass", + IA_FrameType, FRAME_DISPLAY, + IA_Simple, TRUE, + IA_Top, -(scrn->RastPort.TxHeight), + IA_Left, -1, + IA_Height, 1 + scrn->WBorBottom + scrn->RastPort.TxHeight, + IA_InBorder, TRUE, + TAG_DONE), GA_Next, gwin->shared->gadgets[GID_HSCROLL], TAG_DONE); AddGList(gwin->shared->win, gwin->shared->gadgets[GID_STATUS], (UWORD)~0, -1, NULL); + /* Apparently you can't set GA_Width on creation time for frbuttonclass */ + + SetGadgetAttrs(gwin->shared->gadgets[GID_STATUS], + gwin->shared->win, NULL, + GA_Width, size1, + TAG_DONE); + RefreshGadgets((APTR)gwin->shared->gadgets[GID_STATUS], gwin->shared->win, NULL); } @@ -2223,7 +2241,7 @@ ULONG ami_set_border_gadget_balance(struct gui_window_2 *gwin) GA_Width, size1, TAG_DONE); - RefreshWindowFrame(gwin->win); + RefreshGList(gwin->gadgets[GID_STATUS], gwin->win, NULL, 2); } ULONG ami_get_border_gadget_balance(struct gui_window_2 *gwin, ULONG *size1, ULONG *size2) @@ -2243,8 +2261,8 @@ ULONG ami_get_border_gadget_balance(struct gui_window_2 *gwin, ULONG *size1, ULO gad1percent = option_toolbar_status_width / 10000.0; - *size1 = (ULONG)available_width * gad1percent; - *size2 = (ULONG)available_width * (1 - gad1percent); + *size1 = (ULONG)(available_width * gad1percent); + *size2 = (ULONG)(available_width * (1 - gad1percent)); return sz; } @@ -2348,34 +2366,39 @@ void gui_window_set_title(struct gui_window *g, const char *title) { struct Node *node; ULONG cur_tab = 0; - STRPTR newtitle = NULL; + char *utf8title; if(!g) return; + if(!title) return; if(g->tab_node) { - node = g->tab_node; + utf8title = ami_utf8_easy((char *)title); - SetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL, - CLICKTAB_Labels,~0, - TAG_DONE); - newtitle = ami_utf8_easy((char *)title); - SetClickTabNodeAttrs(node,TNA_Text,newtitle,TAG_DONE); - if(newtitle) ami_utf8_free(newtitle); - RefreshSetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL, - CLICKTAB_Labels,&g->shared->tab_list, - TAG_DONE); + if((g->shared->wintitle == NULL) || (strcmp(utf8title, g->shared->wintitle))) + { + node = g->tab_node; - if(ClickTabBase->lib_Version < 53) - RethinkLayout(g->shared->gadgets[GID_TABLAYOUT],g->shared->win,NULL,TRUE); + SetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL, + CLICKTAB_Labels,~0, + TAG_DONE); + if(g->shared->wintitle) ami_utf8_free(g->shared->wintitle); + g->shared->wintitle = utf8title; + SetClickTabNodeAttrs(node,TNA_Text, g->shared->wintitle, TAG_DONE); + RefreshSetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL, + CLICKTAB_Labels,&g->shared->tab_list, + TAG_DONE); - GetAttr(CLICKTAB_Current,g->shared->gadgets[GID_TABS],(ULONG *)&cur_tab); - } + if(ClickTabBase->lib_Version < 53) + RethinkLayout(g->shared->gadgets[GID_TABLAYOUT],g->shared->win,NULL,TRUE); - 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((char *)title),nsscreentitle); + GetAttr(CLICKTAB_Current,g->shared->gadgets[GID_TABS],(ULONG *)&cur_tab); + + if((cur_tab == g->tab) || (g->shared->tabs == 0)) + { + SetWindowTitles(g->shared->win, g->shared->wintitle, nsscreentitle); + } + } } } @@ -2802,7 +2825,7 @@ void gui_window_set_status(struct gui_window *g, const char *text) GA_Text, utf8text, TAG_DONE); - RefreshWindowFrame(g->shared->win); + RefreshGList(g->shared->gadgets[GID_STATUS],g->shared->win,NULL,1); if(g->shared->status) ami_utf8_free(g->shared->status); g->shared->status = utf8text; diff --git a/amiga/gui.h b/amiga/gui.h index ef55c8c55..ddf1dc9b2 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -100,6 +100,7 @@ struct gui_window_2 { bool new_content; char *svbuffer; char *status; + char *wintitle; }; struct gui_window |