зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1866669 [Linux/X11] Apply shape mask to parent window (mShell) for non-compositing desktops r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D194868
This commit is contained in:
Родитель
ff8cc581ed
Коммит
b261dd7d56
|
@ -35,7 +35,21 @@ WindowSurfaceX11Image::WindowSurfaceX11Image(Display* aDisplay, Window aWindow,
|
|||
mTransparencyBitmap(nullptr),
|
||||
mTransparencyBitmapWidth(0),
|
||||
mTransparencyBitmapHeight(0),
|
||||
mIsShaped(aIsShaped) {}
|
||||
mIsShaped(aIsShaped),
|
||||
mWindowParent(0) {
|
||||
if (!mIsShaped) {
|
||||
return;
|
||||
}
|
||||
|
||||
Window root, *children = nullptr;
|
||||
unsigned int childrenNum;
|
||||
if (XQueryTree(mDisplay, mWindow, &root, &mWindowParent, &children,
|
||||
&childrenNum)) {
|
||||
if (children) {
|
||||
XFree((char*)children);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WindowSurfaceX11Image::~WindowSurfaceX11Image() {
|
||||
if (mTransparencyBitmap) {
|
||||
|
@ -206,6 +220,10 @@ void WindowSurfaceX11Image::ApplyTransparencyBitmap() {
|
|||
mTransparencyBitmapHeight);
|
||||
XShapeCombineMask(xDisplay, xDrawable, ShapeBounding, 0, 0, maskPixmap,
|
||||
ShapeSet);
|
||||
if (mWindowParent) {
|
||||
XShapeCombineMask(mDisplay, mWindowParent, ShapeBounding, 0, 0,
|
||||
maskPixmap, ShapeSet);
|
||||
}
|
||||
XFreePixmap(xDisplay, maskPixmap);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ class WindowSurfaceX11Image : public WindowSurfaceX11 {
|
|||
int32_t mTransparencyBitmapWidth;
|
||||
int32_t mTransparencyBitmapHeight;
|
||||
bool mIsShaped;
|
||||
Window mWindowParent;
|
||||
};
|
||||
|
||||
} // namespace widget
|
||||
|
|
Загрузка…
Ссылка в новой задаче