make iconic windows have 50% opacity in the alt-tab box
This commit is contained in:
parent
8205b6581d
commit
db4bc708d3
1 changed files with 23 additions and 1 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue