From 3de529d81590ab0ad01119521f8561c7e79897e9 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 15 Jun 2014 15:39:49 +0100 Subject: Change the search ico to be a chooser gadget with the icon as the display --- amiga/gui.c | 105 +++++++++++++++++++--------------------------------- amiga/gui.h | 3 +- amiga/gui_options.c | 4 +- amiga/gui_options.h | 6 +++ 4 files changed, 47 insertions(+), 71 deletions(-) diff --git a/amiga/gui.c b/amiga/gui.c index 1501a5f88..7c4946af2 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -113,6 +113,7 @@ #include #include #include +#include #include #include #include @@ -122,6 +123,7 @@ #include #include +#include #include #include #include @@ -197,8 +199,6 @@ void ami_try_quit(void); void ami_quit_netsurf_delayed(void); Object *ami_gui_splash_open(void); void ami_gui_splash_close(Object *win_obj); -static uint32 ami_set_search_ico_render_hook(struct Hook *hook, APTR space, - struct gpRender *msg); static uint32 ami_set_favicon_render_hook(struct Hook *hook, APTR space, struct gpRender *msg); static uint32 ami_set_throbber_render_hook(struct Hook *hook, APTR space, @@ -3241,9 +3241,6 @@ gui_window_create(struct browser_window *bw, g->shared->scrollerhook.h_Entry = (void *)ami_scroller_hook; g->shared->scrollerhook.h_Data = g->shared; - g->shared->search_ico_hook.h_Entry = (void *)ami_set_search_ico_render_hook; - g->shared->search_ico_hook.h_Data = g->shared; - g->shared->favicon_hook.h_Entry = (void *)ami_set_favicon_render_hook; g->shared->favicon_hook.h_Data = g->shared; @@ -3278,6 +3275,9 @@ gui_window_create(struct browser_window *bw, TAG_DONE); AddTail(&g->shared->tab_list,g->tab_node); + g->shared->web_search_list = ami_gui_opts_websearch(); + g->shared->search_bm = NULL; + g->shared->tabs=1; g->shared->next_tab=1; @@ -3387,12 +3387,12 @@ gui_window_create(struct browser_window *bw, } g->shared->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, - WA_Activate, TRUE, - WA_DepthGadget, TRUE, - WA_DragBar, TRUE, - WA_CloseGadget, TRUE, - WA_SizeGadget, TRUE, + WA_ScreenTitle,nsscreentitle, + WA_Activate, TRUE, + WA_DepthGadget, TRUE, + WA_DragBar, TRUE, + WA_CloseGadget, TRUE, + WA_SizeGadget, TRUE, WA_Top,cury, WA_Left,curx, WA_Width,curw, @@ -3401,12 +3401,12 @@ gui_window_create(struct browser_window *bw, WA_ReportMouse,TRUE, refresh_mode, TRUE, WA_SizeBBottom, TRUE, - WA_IDCMP, IDCMP_MENUPICK | IDCMP_MOUSEMOVE | - IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE | - IDCMP_RAWKEY | idcmp_sizeverify | - IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | - IDCMP_REFRESHWINDOW | - IDCMP_ACTIVEWINDOW | IDCMP_EXTENDEDMOUSE, + WA_IDCMP, IDCMP_MENUPICK | IDCMP_MOUSEMOVE | + IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE | + IDCMP_RAWKEY | idcmp_sizeverify | + IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | + IDCMP_REFRESHWINDOW | + IDCMP_ACTIVEWINDOW | IDCMP_EXTENDEDMOUSE, WINDOW_IconifyGadget, iconifygadget, WINDOW_NewMenu, g->shared->menu, WINDOW_MenuUserData, WGUD_HOOK, @@ -3419,8 +3419,8 @@ gui_window_create(struct browser_window *bw, WINDOW_BuiltInScroll, TRUE, WINDOW_GadgetHelp, TRUE, WINDOW_UserData, g->shared, - WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = VGroupObject, - LAYOUT_SpaceOuter, TRUE, + WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = VGroupObject, + LAYOUT_SpaceOuter, TRUE, LAYOUT_AddChild, g->shared->objects[GID_TOOLBARLAYOUT] = HGroupObject, LAYOUT_VertAlignment, LALIGN_CENTER, LAYOUT_AddChild, g->shared->objects[GID_BACK] = ButtonObject, @@ -3532,13 +3532,12 @@ gui_window_create(struct browser_window *bw, LAYOUT_WeightBar, TRUE, LAYOUT_AddChild, HGroupObject, LAYOUT_VertAlignment, LALIGN_CENTER, - LAYOUT_AddChild, g->shared->objects[GID_SEARCH_ICON] = SpaceObject, + LAYOUT_AddChild, g->shared->objects[GID_SEARCH_ICON] = ChooserObject, GA_ID, GID_SEARCH_ICON, - SPACE_MinWidth, 16, - SPACE_MinHeight, 16, - SPACE_Transparent, FALSE, - SPACE_RenderHook, &g->shared->search_ico_hook, - SpaceEnd, + CHOOSER_DropDown, TRUE, + CHOOSER_Labels, g->shared->web_search_list, + CHOOSER_MaxLabels, 40, /* Same as options GUI */ + ChooserEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, LAYOUT_AddChild, g->shared->objects[GID_SEARCHSTRING] =StringObject, @@ -3746,8 +3745,6 @@ gui_window_create(struct browser_window *bw, if(locked_screen) UnlockPubScreen(NULL,scrn); - /* set web search provider */ - search_web_select_provider(nsoption_int(search_provider)); refresh_search_ico = TRUE; ScreenToFront(scrn); @@ -3912,6 +3909,9 @@ static void gui_window_destroy(struct gui_window *g) DisposeObject(g->shared->objects[GID_FAVE_ADD]); DisposeObject(g->shared->objects[GID_FAVE_RMV]); + ami_gui_opts_websearch_free(g->shared->web_search_list); + if(g->shared->search_bm) DisposeObject(g->shared->search_bm); + ami_free_menulabs(g->shared); free(g->shared->wintitle); ami_utf8_free(g->shared->status); @@ -4678,57 +4678,28 @@ static nserror gui_search_web_provider_update(const char *provider_name, if(node->Type == AMINS_WINDOW) { - GetAttr(SPACE_AreaBox, gwin->objects[GID_SEARCH_ICON], (ULONG *)&bbox); + if(gwin->search_bm != NULL) + DisposeObject(gwin->search_bm); + + gwin->search_bm = BitMapObject, + BITMAP_Masking, TRUE, + BITMAP_HasAlpha, TRUE, + BITMAP_Width, 16, + BITMAP_Height, 16, + BITMAP_BitMap, bm, + BitMapEnd; RefreshSetGadgetAttrs((struct Gadget *)gwin->objects[GID_SEARCH_ICON], gwin->win, NULL, GA_HintInfo, provider_name, + GA_Image, gwin->search_bm, TAG_DONE); - - EraseRect(gwin->win->RPort, bbox->Left, bbox->Top, - bbox->Left+16, bbox->Top+16); - - if(bm) - { - ULONG tag, tag_data, minterm; - - if(ami_plot_screen_is_palettemapped() == false) { - tag = BLITA_UseSrcAlpha; - tag_data = !ico_bitmap->opaque; - minterm = 0xc0; - } else { - tag = BLITA_MaskPlane; - tag_data = (ULONG)ami_bitmap_get_mask(ico_bitmap, 16, 16, bm); - minterm = (ABC|ABNC|ANBC); - } - - BltBitMapTags(BLITA_SrcX, 0, - BLITA_SrcY, 0, - BLITA_DestX, bbox->Left, - BLITA_DestY, bbox->Top, - BLITA_Width, 16, - BLITA_Height, 16, - BLITA_Source, bm, - BLITA_Dest, gwin->win->RPort, - BLITA_SrcType, BLITT_BITMAP, - BLITA_DestType, BLITT_RASTPORT, - BLITA_Minterm, minterm, - tag, tag_data, - TAG_DONE); - } } } while(node = nnode); return NSERROR_OK; } -static uint32 ami_set_search_ico_render_hook(struct Hook *hook, APTR space, - struct gpRender *msg) -{ - refresh_search_ico = TRUE; - return 0; -} - static uint32 ami_set_throbber_render_hook(struct Hook *hook, APTR space, struct gpRender *msg) { diff --git a/amiga/gui.h b/amiga/gui.h index ad187500a..f5a9030c9 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -111,6 +111,8 @@ struct gui_window_2 { ULONG hotlist_items; char *hotlist_toolbar_lab[AMI_GUI_TOOLBAR_MAX]; struct List hotlist_toolbar_list; + struct List *web_search_list; + Object *search_bm; char *svbuffer; char *status; char *wintitle; @@ -120,7 +122,6 @@ struct gui_window_2 { BOOL rmbtrapped; struct AppIcon *appicon; /* iconify appicon */ struct DiskObject *dobj; /* iconify appicon */ - struct Hook search_ico_hook; struct Hook favicon_hook; struct Hook throbber_hook; gui_drag_type drag_op; diff --git a/amiga/gui_options.c b/amiga/gui_options.c index 141de2fcd..50f7b7cfd 100755 --- a/amiga/gui_options.c +++ b/amiga/gui_options.c @@ -218,9 +218,6 @@ CONST_STRPTR fontopts[6]; CONST_STRPTR gadlab[OPTS_LAST]; struct List *websearch_list; -struct List *ami_gui_opts_websearch(void); -void ami_gui_opts_websearch_free(struct List *websearchlist); - void ami_gui_opts_setup(void) { tabs[0] = (char *)ami_utf8_easy((char *)messages_get("con_general")); @@ -2155,3 +2152,4 @@ void ami_gui_opts_websearch_free(struct List *websearchlist) FreeVec(websearchlist); } + diff --git a/amiga/gui_options.h b/amiga/gui_options.h index 2b57769ab..04c1be51e 100755 --- a/amiga/gui_options.h +++ b/amiga/gui_options.h @@ -18,9 +18,15 @@ #ifndef AMIGA_GUI_OPTIONS_H #define AMIGA_GUI_OPTIONS_H +/* Prefs GUI control */ void ami_gui_opts_open(void); BOOL ami_gui_opts_event(void); void ami_gui_opts_close(void); +/* Web search list */ +struct List *ami_gui_opts_websearch(void); +void ami_gui_opts_websearch_free(struct List *websearchlist); + char *current_user_options; #endif + -- cgit v1.2.3