We have recently migrated from CentOS6/Gnome to CentOS7/Mate - and have noticed 'glitches' with some Qt applications that appears to be linked to the 'org.mate.Marco.general' 'compositing-manager' setting - and wondered how we 'fix' the issue ...
Below is a PyQT4 python script that shows the issues:
1. With 'compositing-manager' set to 'true' (I believe the default setting):
gsettings set org.mate.Marco.general compositing-manager true
Running the script and the window background is transparent - which is fine
However, if the pull down menu is selected and the 'Toggle' button pressed, the menu stays on the screen - and stays put even if the window is moved
2. With 'compositing-manager' set to 'false' :
gsettings set org.mate.Marco.general compositing-manager false
Running the script and the window background is no longer transparent - which is not good, but the pull down menu issue is fine ...
We're using Nvidia cards with the Nvidia drivers - but I can also reproduce the issue on a Vmware player instance
It would be good to know if anyone else can reproduce this with Mate ?
Using CentOS7/Gnome3 works as expected (transparent background and pull down menu is fine)
Anyone have any idea what the problem(s) might be and how to fix it/them ?
Thanks
James Pearson
Python script:
#!/usr/bin/python # # gsettings set org.mate.Marco.general compositing-manager true # # gsettings set org.mate.Marco.general compositing-manager false
from PyQt4.QtGui import * from PyQt4 import QtCore import sys
class MyWidget(QFrame): def __init__(self, parent=None): super(MyWidget, self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.state = 1
self.combo = QComboBox() for a in ['A','B','C']: self.combo.addItem(a) self.btn = QPushButton("Toggle") self.btnClose = QPushButton("Close") self.btnClose.clicked.connect(self.close) layout = QVBoxLayout() layout.addWidget(self.combo) layout.addWidget(self.btn) layout.addWidget(self.btnClose) layout.setContentsMargins(50,50,50,50) self.setLayout(layout)
self.btn.clicked.connect(self.updateComboState)
def updateComboState(self): self.state = (self.state%2)+1 self.combo.setProperty("state", self.state) self.combo.style().unpolish(self.combo) self.combo.style().polish(self.combo) self.update()
ss = """ *[state="1"] { background: rgb(50,50,100); }
*[state="2"] { background: rgb(50,100,50); } """
if __name__ == "__main__": qapp = QApplication(sys.argv) myApp = MyWidget() myApp.setStyleSheet(ss) myApp.show() sys.exit(qapp.exec_())