add colorspace fix for window borders with transparency

This commit is contained in:
Iris Lightshard 2022-01-15 12:50:49 -07:00
parent 1d19662c89
commit b584834bfc
Signed by: Iris Lightshard
GPG key ID: 3B7FBC22144E6398

View file

@ -252,7 +252,19 @@ void FbWindow::updateBackground(bool only_if_alpha) {
}
void FbWindow::setBorderColor(const FbTk::Color &border_color) {
XSetWindowBorder(display(), m_window, border_color.pixel());
unsigned long pixel = border_color.pixel();
XWindowAttributes attr;
if (XGetWindowAttributes(display(), m_window, &attr)
&& attr.colormap != DefaultColormap(display(), m_screen_num)) {
XColor color;
color.red = border_color.red() * 0x101;
color.green = border_color.green() * 0x101;
color.blue = border_color.blue() * 0x101;
if (XAllocColor(display(), attr.colormap, &color)){
pixel = color.pixel;
}
}
XSetWindowBorder(display(), m_window, pixel);
m_border_color = border_color.pixel();
}