xpra icon
Bug tracker and wiki

Opened 3 weeks ago

Closed 3 weeks ago

Last modified 3 weeks ago

#2398 closed defect (fixed)

popup window dropshadow is black

Reported by: Irony Owned by: totaamwin32
Priority: minor Milestone: 3.0
Component: client Version: 2.5.x
Keywords: Cc:

Description

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

Change History (6)

comment:1 Changed 3 weeks ago by Antoine Martin

Status: newassigned

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

comment:2 in reply to:  1 Changed 3 weeks ago by 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

comment:3 Changed 3 weeks ago by totaamwin32

Owner: changed from Antoine Martin to totaamwin32
Status: assignednew

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.

comment:4 Changed 3 weeks ago by totaamwin32

Resolution: fixed
Status: newclosed

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

Last edited 3 weeks ago by totaamwin32 (previous) (diff)

comment:5 in reply to:  4 Changed 3 weeks ago by 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!

comment:6 Changed 3 weeks ago by 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.

Note: See TracTickets for help on using tickets.