diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 705bc75ae..afd599775 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -30,7 +30,7 @@ from PyQt4.phonon import Phonon from openlp.core.lib import Receiver, str_to_bool -class DisplayLabel(QtGui.QWidget): +class DisplayWidget(QtGui.QWidget): """ Customised version of QTableWidget which can respond to keyboard events. @@ -40,7 +40,7 @@ class DisplayLabel(QtGui.QWidget): log.info(u'MainDisplay loaded') def __init__(self, parent=None, name=None): - QQtGui.QWidget.__init__(self, parent) + QtGui.QWidget.__init__(self, parent) self.parent = parent def keyPressEvent(self, event): @@ -65,7 +65,7 @@ class DisplayLabel(QtGui.QWidget): else: event.ignore() -class MainDisplay(DisplayLabel): +class MainDisplay(DisplayWidget): """ This is the form that is used to display things on the projector. """ @@ -84,7 +84,7 @@ class MainDisplay(DisplayLabel): The list of screens. """ log.debug(u'Initilisation started') - QtGui.QWidget.__init__(self, None) + DisplayWidget.__init__(self, None) self.parent = parent self.setWindowTitle(u'OpenLP Display') self.screens = screens @@ -136,7 +136,8 @@ class MainDisplay(DisplayLabel): Sets up the screen on a particular screen. @param (integer) screen This is the screen number. """ - log.debug(u'Setup %s for %s ' %(self.screens, screenNumber) ) + log.debug(u'Setup %s for %s ' %(self.screens, screenNumber)) + self.setVisible(False) screen = self.screens[screenNumber] if screen[u'number'] != screenNumber: # We will most probably never actually hit this bit, but just in @@ -147,26 +148,19 @@ class MainDisplay(DisplayLabel): screen = scrn break self.setGeometry(screen[u'size']) - if not screen[u'primary']: - self.showFullScreen() - self.primary = False - else: - self.setVisible(False) - self.primary = True #Build a custom splash screen - if str_to_bool(self.parent.generalConfig.get_config(u'show splash', u'True')): - self.InitialFrame = QtGui.QImage( - screen[u'size'].width(), screen[u'size'].height(), - QtGui.QImage.Format_ARGB32_Premultiplied) - splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png') - painter_image = QtGui.QPainter() - painter_image.begin(self.InitialFrame) - painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white) - painter_image.drawImage( - (screen[u'size'].width() - splash_image.width()) / 2, - (screen[u'size'].height() - splash_image.height()) / 2, - splash_image) - self.frameView(self.InitialFrame) + self.InitialFrame = QtGui.QImage( + screen[u'size'].width(), screen[u'size'].height(), + QtGui.QImage.Format_ARGB32_Premultiplied) + splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png') + painter_image = QtGui.QPainter() + painter_image.begin(self.InitialFrame) + painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white) + painter_image.drawImage( + (screen[u'size'].width() - splash_image.width()) / 2, + (screen[u'size'].height() - splash_image.height()) / 2, + splash_image) + self.frameView(self.InitialFrame) #Build a Black screen painter = QtGui.QPainter() self.blankFrame = QtGui.QImage( @@ -174,6 +168,13 @@ class MainDisplay(DisplayLabel): QtGui.QImage.Format_ARGB32_Premultiplied) painter.begin(self.blankFrame) painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black) + # To display or not to display? + if not screen[u'primary']: + self.showFullScreen() + self.primary = False + else: + self.setVisible(False) + self.primary = True def resetDisplay(self): if self.primary: diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index abb5062da..6e24cbdb9 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -544,7 +544,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): monitor number does not exist. """ screen_number = int(self.generalConfig.get_config(u'Monitor', 0)) - monitor_exists = False for screen in self.screenList: if screen[u'number'] == screen_number: @@ -560,7 +559,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.showMaximized() screen_number = self.getMonitorNumber() self.mainDisplay.setup(screen_number) - self.setFocus() + if self.mainDisplay.isVisible(): + self.mainDisplay.setFocus() + self.activateWindow() if str_to_bool(self.generalConfig.get_config(u'Auto Open', False)): self.ServiceManagerContents.onLoadService(True) if str_to_bool(self.generalConfig.get_config(u'Screen Blank', False)) \ @@ -601,6 +602,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): if updated_display != self.RenderManager.current_display: self.RenderManager.update_display(updated_display) self.mainDisplay.setup(updated_display) + self.activateWindow() def closeEvent(self, event): """