forked from openlp/openlp
Fix restoring to main window when the dock icon is clicked
bzr-revno: 2531
This commit is contained in:
commit
1b52957a6b
@ -250,7 +250,7 @@ class OpenLP(OpenLPMixin, QtGui.QApplication):
|
||||
|
||||
def event(self, event):
|
||||
"""
|
||||
Enables direct file opening on OS X
|
||||
Enables platform specific event handling i.e. direct file opening on OS X
|
||||
|
||||
:param event: The event
|
||||
"""
|
||||
@ -259,8 +259,19 @@ class OpenLP(OpenLPMixin, QtGui.QApplication):
|
||||
log.debug('Got open file event for %s!', file_name)
|
||||
self.args.insert(0, file_name)
|
||||
return True
|
||||
else:
|
||||
return QtGui.QApplication.event(self, event)
|
||||
# Mac OS X should restore app window when user clicked on the OpenLP icon
|
||||
# in the Dock bar. However, OpenLP consists of multiple windows and this
|
||||
# does not work. This workaround fixes that.
|
||||
# The main OpenLP window is restored when it was previously minimized.
|
||||
elif event.type() == QtCore.QEvent.ApplicationActivate:
|
||||
if is_macosx() and hasattr(self, 'main_window'):
|
||||
if self.main_window.isMinimized():
|
||||
# Copied from QWidget.setWindowState() docs on how to restore and activate a minimized window
|
||||
# while preserving its maximized and/or full-screen state.
|
||||
self.main_window.setWindowState(self.main_window.windowState() & ~QtCore.Qt.WindowMinimized |
|
||||
QtCore.Qt.WindowActive)
|
||||
return True
|
||||
return QtGui.QApplication.event(self, event)
|
||||
|
||||
|
||||
def parse_options(args):
|
||||
|
@ -66,6 +66,22 @@ class TestInit(TestCase, TestMixin):
|
||||
mocked_file_method.assert_called_once_with()
|
||||
self.assertEqual(self.openlp.args[0], file_path, "The path should be in args.")
|
||||
|
||||
def application_activate_event_test(self):
|
||||
"""
|
||||
Test that clicking on the dock icon on Mac OS X restores the main window if it is minimized
|
||||
"""
|
||||
# GIVEN:
|
||||
with patch('openlp.core.is_macosx') as mocked_is_macosx:
|
||||
mocked_is_macosx.return_value = True
|
||||
event = QtCore.QEvent(QtCore.QEvent.ApplicationActivate)
|
||||
|
||||
# WHEN:
|
||||
result = self.openlp.event(event)
|
||||
|
||||
# THEN:
|
||||
self.assertTrue(result, "The method should have returned True.")
|
||||
self.assertFalse(self.openlp.main_window.isMinimized())
|
||||
|
||||
def backup_on_upgrade_first_install_test(self):
|
||||
"""
|
||||
Test that we don't try to backup on a new install
|
||||
|
Loading…
Reference in New Issue
Block a user