make iconic windows have 50% opacity in the alt-tab box

This commit is contained in:
Dana Jansens 2007-05-28 02:56:35 +00:00
parent 8205b6581d
commit db4bc708d3

View file

@ -405,6 +405,7 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
const gint row = i / icons_per_row; /* starting from 0 */ const gint row = i / icons_per_row; /* starting from 0 */
const gint col = i % icons_per_row; /* starting from 0 */ const gint col = i % icons_per_row; /* starting from 0 */
gint innerx, innery; gint innerx, innery;
RrPixel32 *icon_data;
/* find the dimensions of the icon inside it */ /* find the dimensions of the icon inside it */
innerx = icons_center_x + l + (col * ICON_SIZE); innerx = icons_center_x + l + (col * ICON_SIZE);
@ -420,12 +421,33 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
icon = client_icon(target->client, innerw, innerh); icon = client_icon(target->client, innerw, innerh);
p->a_icon->texture[0].data.rgba.width = icon->width; p->a_icon->texture[0].data.rgba.width = icon->width;
p->a_icon->texture[0].data.rgba.height = icon->height; p->a_icon->texture[0].data.rgba.height = icon->height;
p->a_icon->texture[0].data.rgba.data = icon->data; if (target->client->iconic) {
/* fade iconic windows */
gint i;
RrPixel32 *d, *s;
icon_data = g_new(RrPixel32, icon->width * icon->height);
s = icon->data;
d = icon_data;
for (i = 0; i < icon->width * icon->height; ++i, ++d, ++s) {
/* 50% opacity */
gint a = ((*s >> RrDefaultAlphaOffset) & 0xff);
*d = *s - (a << RrDefaultAlphaOffset) +
((a>>1) << RrDefaultAlphaOffset);
}
} else
icon_data = icon->data;
p->a_icon->texture[0].data.rgba.data = icon_data;
/* draw the icon */ /* draw the icon */
p->a_icon->surface.parentx = innerx; p->a_icon->surface.parentx = innerx;
p->a_icon->surface.parenty = innery; p->a_icon->surface.parenty = innery;
RrPaint(p->a_icon, target->win, innerw, innerh); RrPaint(p->a_icon, target->win, innerw, innerh);
if (target->client->iconic)
g_free(icon_data);
} }
} }