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_())