XSetWindowAttributes attrib;
ObPopup *self = g_new0(ObPopup, 1);
XSetWindowAttributes attrib;
ObPopup *self = g_new0(ObPopup, 1);
self->gravity = NorthWestGravity;
self->x = self->y = self->textw = self->h = 0;
self->a_bg = RrAppearanceCopy(ob_rr_theme->osd_hilite_bg);
self->gravity = NorthWestGravity;
self->x = self->y = self->textw = self->h = 0;
self->a_bg = RrAppearanceCopy(ob_rr_theme->osd_hilite_bg);
- self->bg = XCreateWindow(obt_display, RootWindow(obt_display, ob_screen),
+ self->bg = XCreateWindow(obt_display, obt_root(ob_screen),
0, 0, 1, 1, 0, RrDepth(ob_rr_inst),
InputOutput, RrVisual(ob_rr_inst),
CWOverrideRedirect, &attrib);
0, 0, 1, 1, 0, RrDepth(ob_rr_inst),
InputOutput, RrVisual(ob_rr_inst),
CWOverrideRedirect, &attrib);
- stacking_add(INTERNALWINDOW_AS_WINDOW(self));
- window_add(&self->bg, INTERNALWINDOW_AS_WINDOW(self));
+ stacking_add(INTERNAL_AS_WINDOW(self));
+ window_add(&self->bg, INTERNAL_AS_WINDOW(self));
XDestroyWindow(obt_display, self->bg);
XDestroyWindow(obt_display, self->text);
RrAppearanceFree(self->a_bg);
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;
gint textx, texty, textw, texth;
gint iconx, icony, iconw, iconh;
Rect *area, mon;
/* 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
*/
/* 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
*/
RrMargins(self->a_bg, &l, &t, &r, &b);
else
l = t = r = b = 0;
RrMargins(self->a_bg, &l, &t, &r, &b);
else
l = t = r = b = 0;
iconw = texth * self->iconwm;
iconh = texth * self->iconhm;
textx += iconw + ob_rr_theme->paddingx;
iconw = texth * self->iconwm;
iconh = texth * self->iconhm;
textx += iconw + ob_rr_theme->paddingx;
x=MAX(MIN(x, area->x+area->width-w),area->x);
y=MAX(MIN(y, area->y+area->height-h),area->y);
x=MAX(MIN(x, area->x+area->width-w),area->x);
y=MAX(MIN(y, area->y+area->height-h),area->y);
if (m == screen_num_monitors) {
RECT_SET(mon, x, y, w, h);
m = screen_find_monitor(&mon);
if (m == screen_num_monitors) {
RECT_SET(mon, x, y, w, h);
m = screen_find_monitor(&mon);
x=MAX(MIN(x, area->x+area->width-w),area->x);
y=MAX(MIN(y, area->y+area->height-h),area->y);
x=MAX(MIN(x, area->x+area->width-w),area->x);
y=MAX(MIN(y, area->y+area->height-h),area->y);
/* 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
*/
/* 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
*/
RrPaint(self->a_bg, self->bg, w, h);
if (textw) {
RrPaint(self->a_bg, self->bg, w, h);
if (textw) {
RrPaint(self->a_text, self->text, textw, texth);
}
RrPaint(self->a_text, self->text, textw, texth);
}
self->draw_icon(iconx, icony, iconw, iconh, self->draw_icon_data);
/* do the actual showing */
self->draw_icon(iconx, icony, iconw, iconh, self->draw_icon_data);
/* do the actual showing */
- self->a_icon->texture[0].type = RR_TEXTURE_RGBA;
- self->a_icon->texture[0].data.rgba.width = icon->width;
- self->a_icon->texture[0].data.rgba.height = icon->height;
- self->a_icon->texture[0].data.rgba.alpha = 0xff;
- self->a_icon->texture[0].data.rgba.data = icon->data;
- } else
+ RrAppearanceClearTextures(self->a_icon);
+ self->a_icon->texture[0].type = RR_TEXTURE_IMAGE;
+ self->a_icon->texture[0].data.image.alpha = 0xff;
+ self->a_icon->texture[0].data.image.image = icon;
+ } else {
+ RrAppearanceClearTextures(self->a_icon);