X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus_cycle_popup.c;h=89468493470b044cbfb0727614e30c957e1ad05d;hb=cea865698391bba733d763686f20d54032a940c8;hp=ee03370004d8aa04d2e5a2bcc7a38e9816761eb9;hpb=c4eaa943852c770d09034258ba40ccc07516d2f6;p=chaz%2Fopenbox diff --git a/openbox/focus_cycle_popup.c b/openbox/focus_cycle_popup.c index ee033700..89468493 100644 --- a/openbox/focus_cycle_popup.c +++ b/openbox/focus_cycle_popup.c @@ -35,6 +35,7 @@ #define ICON_HILITE_WIDTH 2 #define ICON_HILITE_MARGIN 1 #define OUTSIDE_BORDER 3 +#define TEXT_BORDER 2 typedef struct _ObFocusCyclePopup ObFocusCyclePopup; typedef struct _ObFocusCyclePopupTarget ObFocusCyclePopupTarget; @@ -112,9 +113,9 @@ void focus_cycle_popup_startup(gboolean reconfig) popup.a_bg->texture[0].type = RR_TEXTURE_RGBA; attrib.override_redirect = True; - attrib.border_pixel=RrColorPixel(ob_rr_theme->frame_focused_border_color); + attrib.border_pixel=RrColorPixel(ob_rr_theme->osd_border_color); popup.bg = create_window(RootWindow(ob_display, ob_screen), - ob_rr_theme->fbwidth, + ob_rr_theme->obwidth, CWOverrideRedirect | CWBorderPixel, &attrib); popup.text = create_window(popup.bg, 0, 0, NULL); @@ -287,10 +288,10 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c) /* get the text dimensions */ textw = w - l - r; - texth = RrMinHeight(p->a_text); + texth = RrMinHeight(p->a_text) + TEXT_BORDER * 2; /* find the height of the dialog */ - h = t + b + (icon_rows * ICON_SIZE) + (OUTSIDE_BORDER*2 + texth); + h = t + b + (icon_rows * ICON_SIZE) + (OUTSIDE_BORDER + texth); /* get the position of the text */ textx = l; @@ -298,9 +299,9 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c) /* find the position for the popup (include the outer borders) */ x = screen_area->x + (screen_area->width - - (w + ob_rr_theme->fbwidth * 2)) / 2; + (w + ob_rr_theme->obwidth * 2)) / 2; y = screen_area->y + (screen_area->height - - (h + ob_rr_theme->fbwidth * 2)) / 2; + (h + ob_rr_theme->obwidth * 2)) / 2; /* get the dimensions of the target hilite texture */ rgbax = ml; @@ -406,7 +407,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); @@ -422,17 +422,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; - /* 7/16 alpha */ - p->a_icon->texture[0].data.rgba.alpha = (0xff>>1 - 0xff>>4); + 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); } } @@ -469,13 +466,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;