X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus_cycle_popup.c;h=015330bda32f2be41a9b25b972568f0b360ae349;hb=4940d007cce43a135f1b448902f5a3571dbce62a;hp=13f12da514fac6b3a60eea04472d7e145ec3357b;hpb=db4bc708d3923016095bfc34e4cde871ea3c4800;p=chaz%2Fopenbox diff --git a/openbox/focus_cycle_popup.c b/openbox/focus_cycle_popup.c index 13f12da5..015330bd 100644 --- a/openbox/focus_cycle_popup.c +++ b/openbox/focus_cycle_popup.c @@ -321,6 +321,7 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c) /* set up the hilite texture for the background */ p->a_bg->texture[0].data.rgba.width = rgbaw; p->a_bg->texture[0].data.rgba.height = rgbah; + p->a_bg->texture[0].data.rgba.alpha = 0xff; p->hilite_rgba = g_new(RrPixel32, rgbaw * rgbah); p->a_bg->texture[0].data.rgba.data = p->hilite_rgba; @@ -405,7 +406,6 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c) const gint row = i / icons_per_row; /* starting from 0 */ const gint col = i % icons_per_row; /* starting from 0 */ gint innerx, innery; - RrPixel32 *icon_data; /* find the dimensions of the icon inside it */ innerx = icons_center_x + l + (col * ICON_SIZE); @@ -421,33 +421,14 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c) icon = client_icon(target->client, innerw, innerh); p->a_icon->texture[0].data.rgba.width = icon->width; p->a_icon->texture[0].data.rgba.height = icon->height; - 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; + p->a_icon->texture[0].data.rgba.alpha = + target->client->iconic ? OB_ICONIC_ALPHA : 0xff; + p->a_icon->texture[0].data.rgba.data = icon->data; /* draw the icon */ p->a_icon->surface.parentx = innerx; p->a_icon->surface.parenty = innery; RrPaint(p->a_icon, target->win, innerw, innerh); - - if (target->client->iconic) - g_free(icon_data); } } @@ -484,13 +465,16 @@ void focus_cycle_popup_show(ObClient *c, gboolean iconic_windows, void focus_cycle_popup_hide() { + gulong ignore_start; + + ignore_start = event_start_ignore_all_enters(); + XUnmapWindow(ob_display, popup.bg); XFlush(ob_display); - popup.mapped = FALSE; + event_end_ignore_all_enters(ignore_start); - /* kill enter events cause by this unmapping */ - event_ignore_all_queued_enters(); + popup.mapped = FALSE; while(popup.targets) { ObFocusCyclePopupTarget *t = popup.targets->data;