summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2014-06-15 15:39:49 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2014-06-15 15:39:49 +0100
commit3de529d81590ab0ad01119521f8561c7e79897e9 (patch)
tree4d0fb083e0897de1e3c2cda3ca715dc2cc0fc5d3 /amiga
parentd552865da1203aeae7a7dd7b3edd789051e66580 (diff)
downloadnetsurf-3de529d81590ab0ad01119521f8561c7e79897e9.tar.gz
netsurf-3de529d81590ab0ad01119521f8561c7e79897e9.tar.bz2
Change the search ico to be a chooser gadget with the icon as the display
Diffstat (limited to 'amiga')
-rw-r--r--amiga/gui.c105
-rwxr-xr-xamiga/gui.h3
-rwxr-xr-xamiga/gui_options.c4
-rwxr-xr-xamiga/gui_options.h6
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 <proto/bevel.h>
#include <proto/bitmap.h>
#include <proto/button.h>
+#include <proto/chooser.h>
#include <proto/clicktab.h>
#include <proto/layout.h>
#include <proto/space.h>
@@ -122,6 +123,7 @@
#include <classes/window.h>
#include <gadgets/button.h>
+#include <gadgets/chooser.h>
#include <gadgets/clicktab.h>
#include <gadgets/layout.h>
#include <gadgets/scroller.h>
@@ -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
+