Xpra: Ticket #2398: popup window dropshadow is black

server: xpra v2.5.3-r23270

client: Xpra 2.5.3 32bit revision 23270

1、Describe some application popup window has shadow, but it's show black. like this app named wps: https://linux.wps.cn

2、Test Wps Use Xpra and Xmanager

Xpra: https://raw.githubusercontent.com/892768447/static/master/black2.png

Xmanager: https://raw.githubusercontent.com/892768447/static/master/xmanager.png

3、some qt code test

testqt.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created on 2019年4月19日
@author: Irony
"""
from PyQt4.QtCore import Qt, QSize, QTimer
from PyQt4.QtGui import QDialog, QVBoxLayout, QWidget,\
    QGraphicsDropShadowEffect, QPushButton, QGridLayout, QSpacerItem,\
    QSizePolicy
__Author__ = "Irony"
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
Stylesheet = """
#Custom_Widget {
    background: white;
    border-radius: 10px;
}
#closeButton {
    min-width: 36px;
    min-height: 36px;
    font-family: "Webdings";
    qproperty-text: "r";
    border-radius: 10px;
}
#closeButton:hover {
    color: white;
    background: red;
}
"""
class Dialog(QDialog):
    def __init__(self, *args, **kwargs):
        super(Dialog, self).__init__(*args, **kwargs)
        self.setObjectName('Custom_Dialog')
        self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground, True)
        self.setStyleSheet(Stylesheet)
        self.initUi()
        # add shadow
        effect = QGraphicsDropShadowEffect(self)
        effect.setBlurRadius(12)
        effect.setOffset(0, 0)
        effect.setColor(Qt.gray)
        self.setGraphicsEffect(effect)
    def initUi(self):
        layout = QVBoxLayout(self)
        # background and border radius
        self.widget = QWidget(self)
        self.widget.setObjectName('Custom_Widget')
        layout.addWidget(self.widget)
        layout = QGridLayout(self.widget)
        layout.addItem(QSpacerItem(
            40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum), 0, 0)
        layout.addWidget(QPushButton(
            'r', self, clicked=self.accept, objectName='closeButton'), 0, 1)
        layout.addItem(QSpacerItem(20, 40, QSizePolicy.Minimum,
                                   QSizePolicy.Expanding), 1, 0)
    def sizeHint(self):
        return QSize(600, 400)
if __name__ == '__main__':
    import sys
    from PyQt4.QtGui import QApplication
    app = QApplication(sys.argv)
    w = Dialog()
    w.exec_()
    QTimer.singleShot(200, app.quit)
    sys.exit(app.exec_())


Qt App: https://raw.githubusercontent.com/892768447/static/master/black1.png



Fri, 30 Aug 2019 07:59:55 GMT - Antoine Martin: status changed

Is this a windows client? Linux? OpenGL enabled? Have you tried disabling it?


Fri, 30 Aug 2019 09:15:21 GMT - Irony:

Replying to Antoine Martin:

Is this a windows client? Linux? OpenGL enabled? Have you tried disabling it?

I test on windows client,default start client, I will try disable opengl then test


Sat, 31 Aug 2019 08:14:51 GMT - totaamwin32: owner, status changed

I can reproduce the problem with win32 clients only. The client does print this warning:

Warning: window 2 changed its transparency attribute
 from False to True, behaviour is undefined

Transparency starts disabled on win32.


Sun, 01 Sep 2019 13:44:24 GMT - totaamwin32: status changed; resolution set

The bug is actually only present with the mswindows clients and is due to the lack of support for transparent windows with the python2 builds (default in 2.5.x). The fix for python3 clients is in r23666. See also #1682, #279

You can find beta mswindows builds with this fix here: https://xpra.org/beta/windows/

BTW, why are you using the 32-bit version? client: Xpra 2.5.3 32bit revision 23270


Sun, 01 Sep 2019 14:32:18 GMT - Irony:

Replying to totaamwin32:

The bug is actually only present with the mswindows clients and is due to the lack of support for transparent windows with the python2 builds (default in 2.5.x). The fix for python3 clients is in r23666. See also #1682, #279

You can find beta mswindows builds with this fix here: https://xpra.org/beta/windows/

BTW, why are you using the 32-bit version? client: Xpra 2.5.3 32bit revision 23270

many times, 32-bit Compatibility is better, and if there are no more memory requirements, 32 bits are generally compiled and used. I think.

Thanks a lot!


Sun, 01 Sep 2019 19:30:35 GMT - Antoine Martin:

many times, 32-bit Compatibility is better, and if there are no more memory requirements, 32 bits are generally compiled and used.

FYI: The 32-bit version of xpra for mswindows will no longer packaged after v3. There are no compatibility issues that I am aware of with 64-bit builds, and 64-bit builds offer security features that just aren't available in 32-bit mode. Then there is also the performance of the media codecs, which are heavily optimized for 64-bit assembly.


Sat, 23 Jan 2021 05:50:14 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/2398