Add parents to a bunch more QMenus

Testing a few of these seem they work even without parents on macOS, but
given that adding parents is easy/harmless, might as well do it. Dont
know exactly what circumstances causes parentless QMenu's to malfunction
on macOS in Qt 5.15
This commit is contained in:
Kovid Goyal 2020-09-27 07:41:54 +05:30
parent a69ff6e8dc
commit 48b107d0f3
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
13 changed files with 21 additions and 21 deletions

View File

@ -305,7 +305,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
action_title_case.triggered.connect(self.title_case)
action_capitalize.triggered.connect(self.capitalize)
m = self.au_context_menu = QMenu()
m = self.au_context_menu = QMenu(self)
idx = self.table.indexAt(point)
id_ = int(self.table.item(idx.row(), 0).data(Qt.UserRole))
sub = self.get_column_name(idx.column())

View File

@ -215,7 +215,7 @@ class SearchBar(QFrame): # {{{
sb.setAutoRaise(True)
sb.setText(_('Sort'))
sb.setIcon(QIcon(I('sort.png')))
sb.setMenu(QMenu())
sb.setMenu(QMenu(sb))
sb.menu().aboutToShow.connect(self.populate_sort_menu)
sb.setVisible(False)
l.addWidget(sb)

View File

@ -167,9 +167,9 @@ class MetadataSingleDialogBase(QDialog):
if ac is not None:
ac.trigger()
return QMenu.mouseReleaseEvent(self, ev)
b.m = m = Menu()
b.m = m = Menu(b)
else:
b.m = m = QMenu()
b.m = m = QMenu(b)
ac = m.addAction(QIcon(I('forward.png')), _('Set author sort from author'))
ac2 = m.addAction(QIcon(I('back.png')), _('Set author from author sort'))
ac3 = m.addAction(QIcon(I('user_profile.png')), _('Manage authors'))
@ -256,7 +256,7 @@ class MetadataSingleDialogBase(QDialog):
b.setIcon(QIcon(I('edit-paste.png')))
b.clicked.connect(self.identifiers.paste_identifier)
b.setPopupMode(b.DelayedPopup)
b.setMenu(QMenu())
b.setMenu(QMenu(b))
self.update_paste_identifiers_menu()
self.publisher = PublisherEdit(self)

View File

@ -827,7 +827,7 @@ class CoversView(QListView): # {{{
def show_context_menu(self, point):
idx = self.currentIndex()
if idx and idx.isValid() and not idx.data(Qt.UserRole):
m = QMenu()
m = QMenu(self)
m.addAction(QIcon(I('view.png')), _('View this cover at full size'), self.show_cover)
m.addAction(QIcon(I('edit-copy.png')), _('Copy this cover to clipboard'), self.copy_cover)
m.exec_(QCursor.pos())

View File

@ -421,7 +421,7 @@ class RuleEditor(QDialog): # {{{
if self.rule_kind != 'color':
self.remove_button = b = bb.addButton(_('&Remove icon'), bb.ActionRole)
b.setIcon(QIcon(I('minus.png')))
b.setMenu(QMenu())
b.setMenu(QMenu(b))
b.setToolTip('<p>' + _('Remove a previously added icon. Note that doing so will cause rules that use it to stop working.'))
self.update_remove_button()

View File

@ -566,7 +566,7 @@ class SavedSearchBoxMixin(object): # {{{
self.save_search_button.setToolTip('<p>' +
_("Save current search under the name shown in the box. "
"Press and hold for a pop-up options menu.") + '</p>')
self.save_search_button.setMenu(QMenu())
self.save_search_button.setMenu(QMenu(self.save_search_button))
self.save_search_button.menu().addAction(
QIcon(I('plus.png')),
_('Create Saved search'),
@ -575,7 +575,7 @@ class SavedSearchBoxMixin(object): # {{{
QIcon(I('trash.png')), _('Delete Saved search'), self.saved_search.delete_current_search)
self.save_search_button.menu().addAction(
QIcon(I('search.png')), _('Manage Saved searches'), partial(self.do_saved_search_edit, None))
self.add_saved_search_button.setMenu(QMenu())
self.add_saved_search_button.setMenu(QMenu(self.add_saved_search_button))
self.add_saved_search_button.menu().aboutToShow.connect(self.populate_add_saved_search_menu)
def populate_add_saved_search_menu(self):

View File

@ -329,7 +329,7 @@ class SearchRestrictionMixin(object):
self.search_based_vl_name = None
self.search_based_vl = None
self.virtual_library_menu = QMenu()
self.virtual_library_menu = QMenu(self.virtual_library)
self.virtual_library.setMenu(self.virtual_library_menu)
self.virtual_library_menu.aboutToShow.connect(self.virtual_library_menu_about_to_show)
@ -342,9 +342,9 @@ class SearchRestrictionMixin(object):
self.search_restriction = ComboBoxWithHelp(self)
self.search_restriction.setVisible(False)
self.clear_vl.setText(_("(all books)"))
self.ar_menu = QMenu(_('Additional restriction'))
self.edit_menu = QMenu(_('Edit Virtual library'))
self.rm_menu = QMenu(_('Remove Virtual library'))
self.ar_menu = QMenu(_('Additional restriction'), self.virtual_library_menu)
self.edit_menu = QMenu(_('Edit Virtual library'), self.virtual_library_menu)
self.rm_menu = QMenu(_('Remove Virtual library'), self.virtual_library_menu)
self.search_restriction_list_built = False
def add_virtual_library(self, db, name, search):

View File

@ -46,7 +46,7 @@ class ResultsView(QTreeView):
plugin = self.model().get_plugin(index)
menu = QMenu()
menu = QMenu(self)
ca = menu.addAction(_('Configure...'), partial(self.configure_plugin, plugin))
if not plugin.is_customizable():
ca.setEnabled(False)

View File

@ -64,7 +64,7 @@ class ResultsView(QTreeView):
result = self.model().get_result(index)
menu = QMenu()
menu = QMenu(self)
da = menu.addAction(_('Download...'), partial(self.download_requested.emit, result))
if not result.downloads:
da.setEnabled(False)

View File

@ -462,7 +462,7 @@ class TagBrowserBar(QWidget): # {{{
' items, etc.'
)))
b.setIcon(QIcon(I('config.png')))
b.m = QMenu()
b.m = QMenu(b)
b.setMenu(b.m)
self.item_search = FindBox(parent)
@ -479,7 +479,7 @@ class TagBrowserBar(QWidget): # {{{
'categories using syntax similar to search. For example, '
'tags:foo will find foo in any tag, but not in authors etc. Entering '
'*foo will collapse all categories then showing only those categories '
'with items containing the text "foo"') + '</p')
'with items containing the text "foo"') + '</p>')
ac = QAction(parent)
parent.addAction(ac)
parent.keyboard.register_shortcut('tag browser find box',

View File

@ -91,7 +91,7 @@ class Check(QSplitter):
self.items.clear()
def context_menu(self, pos):
m = QMenu()
m = QMenu(self)
if self.items.count() > 0:
m.addAction(QIcon(I('edit-copy.png')), _('Copy list of errors to clipboard'), self.copy_to_clipboard)
if list(m.actions()):

View File

@ -268,7 +268,7 @@ class Editor(QMainWindow):
b.addSeparator()
self.action_filters = ac = b.addAction(QIcon(I('filter.png')), _('Image filters'))
b.widgetForAction(ac).setPopupMode(QToolButton.InstantPopup)
self.filters_menu = m = QMenu()
self.filters_menu = m = QMenu(self)
ac.setMenu(m)
m.addAction(_('Auto-trim image'), self.canvas.autotrim_image)
m.addAction(_('Sharpen image'), self.sharpen_image)

View File

@ -865,7 +865,7 @@ class WordsView(QTableView):
w = self.model().word_for_row(self.currentIndex().row())
if w is not None:
a = m.addAction(_('Change %s to') % w[0])
cm = QMenu()
cm = QMenu(self)
a.setMenu(cm)
cm.addAction(_('Specify replacement manually'), partial(self.change_to.emit, w, None))
cm.addSeparator()
@ -874,7 +874,7 @@ class WordsView(QTableView):
m.addAction(_('Ignore/un-ignore all selected words'), self.ignore_all)
a = m.addAction(_('Add/remove all selected words'))
am = QMenu()
am = QMenu(self)
a.setMenu(am)
for dic in sorted(dictionaries.active_user_dictionaries, key=lambda x:sort_key(x.name)):
am.addAction(dic.name, partial(self.add_all.emit, dic.name))