[CentOS] CentOS7/Mate Qt bugs/features?

Fri Jun 15 16:50:00 UTC 2018
James Pearson <james-p at moving-picture.com>

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