summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
Diffstat (limited to 'amiga')
-rwxr-xr-xamiga/gui.c43
1 files changed, 35 insertions, 8 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index f3670a4f6..6409ed550 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -3813,6 +3813,7 @@ void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
struct BitMap *bm = NULL;
struct IBox *bbox;
ULONG cur_tab = 0;
+ struct bitmap *icon_bitmap;
if(nsoption_bool(kiosk_mode) == true) return;
if(!g) return;
@@ -3821,9 +3822,9 @@ void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
g->shared->objects[GID_TABS],
(ULONG *)&cur_tab);
- if ((icon != NULL) && (content_get_bitmap(icon) != NULL))
+ if ((icon != NULL) && ((icon_bitmap = content_get_bitmap(icon)) != NULL))
{
- bm = ami_bitmap_get_native(content_get_bitmap(icon), 16, 16,
+ bm = ami_bitmap_get_native(icon_bitmap, 16, 16,
g->shared->win->RPort->BitMap);
}
@@ -3836,6 +3837,18 @@ void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
if(bm)
{
+ ULONG tag, tag_data, minterm;
+
+ if(ami_plot_screen_is_palettemapped() == false) {
+ tag = BLITA_UseSrcAlpha;
+ tag_data = !icon_bitmap->opaque;
+ minterm = 0xc0;
+ } else {
+ tag = BLITA_MaskPlane;
+ tag_data = (ULONG)icon_bitmap->native_mask;
+ minterm = 0xc0; /* should be (ABC|ABNC|ANBC); */
+ }
+
BltBitMapTags(BLITA_SrcX, 0,
BLITA_SrcY, 0,
BLITA_DestX, bbox->Left,
@@ -3846,7 +3859,8 @@ void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
BLITA_Dest, g->shared->win->RPort,
BLITA_SrcType, BLITT_BITMAP,
BLITA_DestType, BLITT_RASTPORT,
- BLITA_UseSrcAlpha, TRUE,
+ BLITA_Minterm, minterm,
+ tag, tag_data,
TAG_DONE);
}
}
@@ -3876,15 +3890,15 @@ void gui_window_set_search_ico(hlcache_handle *ico)
struct nsObject *nnode;
struct gui_window_2 *gwin;
char fname[100];
+ struct bitmap *ico_bitmap;
if(IsMinListEmpty(window_list)) return;
if(nsoption_bool(kiosk_mode) == true) return;
if (ico == NULL) ico = search_web_ico();
- if ((ico != NULL) && (content_get_bitmap(ico) != NULL))
- {
- bm = ami_bitmap_get_native(content_get_bitmap(ico), 16, 16, NULL);
- }
+ ico_bitmap = content_get_bitmap(ico);
+ if ((ico != NULL) && (ico_bitmap != NULL))
+ bm = ami_bitmap_get_native(ico_bitmap, 16, 16, NULL);
node = (struct nsObject *)GetHead((struct List *)window_list);
@@ -3906,6 +3920,18 @@ void gui_window_set_search_ico(hlcache_handle *ico)
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)ico_bitmap->native_mask;
+ minterm = 0xc0; /* should be (ABC|ABNC|ANBC); */
+ }
+
BltBitMapTags(BLITA_SrcX, 0,
BLITA_SrcY, 0,
BLITA_DestX, bbox->Left,
@@ -3916,7 +3942,8 @@ void gui_window_set_search_ico(hlcache_handle *ico)
BLITA_Dest, gwin->win->RPort,
BLITA_SrcType, BLITT_BITMAP,
BLITA_DestType, BLITT_RASTPORT,
- BLITA_UseSrcAlpha, TRUE,
+ BLITA_Minterm, minterm,
+ tag, tag_data,
TAG_DONE);
}
}