#include "stacking.h"
#include "event.h"
#include "screen.h"
-#include "render/render.h"
-#include "render/theme.h"
+#include "obrender/render.h"
+#include "obrender/theme.h"
ObPopup *popup_new(void)
{
self->obwin.type = OB_WINDOW_CLASS_INTERNAL;
self->gravity = NorthWestGravity;
self->x = self->y = self->textw = self->h = 0;
- self->a_bg = RrAppearanceCopy(ob_rr_theme->osd_hilite_bg);
+ self->a_bg = RrAppearanceCopy(ob_rr_theme->osd_bg);
self->a_text = RrAppearanceCopy(ob_rr_theme->osd_hilite_label);
self->iconwm = self->iconhm = 1;
void popup_free(ObPopup *self)
{
if (self) {
+ popup_hide(self); /* make sure it's not showing or is being delayed and
+ will be shown */
XDestroyWindow(obt_display, self->bg);
XDestroyWindow(obt_display, self->text);
RrAppearanceFree(self->a_bg);
gint textx, texty, textw, texth;
gint iconx, icony, iconw, iconh;
Rect *area, mon;
+ gboolean hasicon = self->hasicon;
/* when there is no icon and the text is not parent relative, then
fill the whole dialog with the text appearance, don't use the bg at all
*/
- if (self->hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL)
+ if (hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL)
RrMargins(self->a_bg, &l, &t, &r, &b);
else
l = t = r = b = 0;
iconx = textx = l + ob_rr_theme->paddingx;
emptyx = l + r + ob_rr_theme->paddingx * 2;
- if (self->hasicon) {
+ if (hasicon) {
iconw = texth * self->iconwm;
iconh = texth * self->iconhm;
textx += iconw + ob_rr_theme->paddingx;
/* when there is no icon, then fill the whole dialog with the text
appearance
*/
- if (!self->hasicon)
+ if (!hasicon)
{
textx = texty = 0;
texth += emptyy;
/* when there is no icon and the text is not parent relative, then
fill the whole dialog with the text appearance, don't use the bg at all
*/
- if (self->hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL)
+ if (hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL)
RrPaint(self->a_bg, self->bg, w, h);
if (textw) {
RrPaint(self->a_text, self->text, textw, texth);
}
- if (self->hasicon)
+ if (hasicon)
self->draw_icon(iconx, icony, iconw, iconh, self->draw_icon_data);
/* do the actual showing */
self->desks = 0;
self->wins = g_new(Window, self->desks);
- self->hilight = RrAppearanceCopy(ob_rr_theme->osd_hilite_fg);
- self->unhilight = RrAppearanceCopy(ob_rr_theme->osd_unhilite_fg);
+ self->hilight = RrAppearanceCopy(ob_rr_theme->osd_hilite_bg);
+ self->unhilight = RrAppearanceCopy(ob_rr_theme->osd_unhilite_bg);
self->popup->hasicon = TRUE;
self->popup->draw_icon = pager_popup_draw_icon;