forked from openlp/openlp
Disable the search box while a search is being performed and re-enable it after search is done or the Stop button is pressed. This way it behaves like the Search button and prevents the user from submitting multiple searches while another is ongoing (this is what caused the segfault).
bzr-revno: 2646 Fixes: https://launchpad.net/bugs/1570228
This commit is contained in:
commit
c3e27b44f0
@ -299,6 +299,7 @@ class SongSelectForm(QtWidgets.QDialog, Ui_SongSelectDialog):
|
|||||||
# Set up UI components
|
# Set up UI components
|
||||||
self.view_button.setEnabled(False)
|
self.view_button.setEnabled(False)
|
||||||
self.search_button.setEnabled(False)
|
self.search_button.setEnabled(False)
|
||||||
|
self.search_combobox.setEnabled(False)
|
||||||
self.search_progress_bar.setMinimum(0)
|
self.search_progress_bar.setMinimum(0)
|
||||||
self.search_progress_bar.setMaximum(0)
|
self.search_progress_bar.setMaximum(0)
|
||||||
self.search_progress_bar.setValue(0)
|
self.search_progress_bar.setValue(0)
|
||||||
@ -354,6 +355,7 @@ class SongSelectForm(QtWidgets.QDialog, Ui_SongSelectDialog):
|
|||||||
self.application.process_events()
|
self.application.process_events()
|
||||||
self.set_progress_visible(False)
|
self.set_progress_visible(False)
|
||||||
self.search_button.setEnabled(True)
|
self.search_button.setEnabled(True)
|
||||||
|
self.search_combobox.setEnabled(True)
|
||||||
self.application.process_events()
|
self.application.process_events()
|
||||||
|
|
||||||
def on_search_results_widget_selection_changed(self):
|
def on_search_results_widget_selection_changed(self):
|
||||||
|
@ -716,8 +716,43 @@ class TestSongSelectForm(TestCase, TestMixin):
|
|||||||
# WHEN: The stop button is clicked
|
# WHEN: The stop button is clicked
|
||||||
ssform.on_stop_button_clicked()
|
ssform.on_stop_button_clicked()
|
||||||
|
|
||||||
# THEN: The view button should be enabled
|
# THEN: The view button, search box and search button should be enabled
|
||||||
mocked_song_select_importer.stop.assert_called_with()
|
mocked_song_select_importer.stop.assert_called_with()
|
||||||
|
self.assertTrue(ssform.search_button.isEnabled())
|
||||||
|
self.assertTrue(ssform.search_combobox.isEnabled())
|
||||||
|
|
||||||
|
@patch('openlp.plugins.songs.forms.songselectform.Settings')
|
||||||
|
@patch('openlp.plugins.songs.forms.songselectform.QtCore.QThread')
|
||||||
|
@patch('openlp.plugins.songs.forms.songselectform.SearchWorker')
|
||||||
|
def on_search_button_clicked_test(self, MockedSearchWorker, MockedQtThread, MockedSettings):
|
||||||
|
"""
|
||||||
|
Test that search fields are disabled when search button is clicked.
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked SongSelect form
|
||||||
|
ssform = SongSelectForm(None, MagicMock(), MagicMock())
|
||||||
|
ssform.initialise()
|
||||||
|
|
||||||
|
# WHEN: The search button is clicked
|
||||||
|
ssform.on_search_button_clicked()
|
||||||
|
|
||||||
|
# THEN: The search box and search button should be disabled
|
||||||
|
self.assertFalse(ssform.search_button.isEnabled())
|
||||||
|
self.assertFalse(ssform.search_combobox.isEnabled())
|
||||||
|
|
||||||
|
def on_search_finished_test(self):
|
||||||
|
"""
|
||||||
|
Test that search fields are enabled when search is finished.
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked SongSelect form
|
||||||
|
ssform = SongSelectForm(None, MagicMock(), MagicMock())
|
||||||
|
ssform.initialise()
|
||||||
|
|
||||||
|
# WHEN: The search is finished
|
||||||
|
ssform.on_search_finished()
|
||||||
|
|
||||||
|
# THEN: The search box and search button should be enabled
|
||||||
|
self.assertTrue(ssform.search_button.isEnabled())
|
||||||
|
self.assertTrue(ssform.search_combobox.isEnabled())
|
||||||
|
|
||||||
|
|
||||||
class TestSongSelectFileImport(SongImportTestHelper):
|
class TestSongSelectFileImport(SongImportTestHelper):
|
||||||
|
Loading…
Reference in New Issue
Block a user