Use weakref for tabs in QShortCut lambdas
Unfortunately we have no way to directly destroy or remove the
lambdas embedded in the QShortcut objects, so this is the
only solution to avoid leaking references. As the QShortcut
objects have the window as parent, they are destroyed with the
window so dangling refs to the destroyed window can't happen.
This and 91349d109e
fix #1549.
This commit is contained in:
parent
91349d109e
commit
50755d7db3
|
@ -20,6 +20,7 @@ import sys, time, threading
|
||||||
import os.path, json, traceback
|
import os.path, json, traceback
|
||||||
import shutil
|
import shutil
|
||||||
import socket
|
import socket
|
||||||
|
import weakref
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import csv
|
import csv
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
@ -144,14 +145,15 @@ class ElectrumWindow(QMainWindow, PrintError):
|
||||||
self.setWindowIcon(QIcon(":icons/electrum.png"))
|
self.setWindowIcon(QIcon(":icons/electrum.png"))
|
||||||
self.init_menubar()
|
self.init_menubar()
|
||||||
|
|
||||||
|
wrtabs = weakref.proxy(tabs)
|
||||||
QShortcut(QKeySequence("Ctrl+W"), self, self.close)
|
QShortcut(QKeySequence("Ctrl+W"), self, self.close)
|
||||||
QShortcut(QKeySequence("Ctrl+Q"), self, self.close)
|
QShortcut(QKeySequence("Ctrl+Q"), self, self.close)
|
||||||
QShortcut(QKeySequence("Ctrl+R"), self, self.update_wallet)
|
QShortcut(QKeySequence("Ctrl+R"), self, self.update_wallet)
|
||||||
QShortcut(QKeySequence("Ctrl+PgUp"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() - 1 )%tabs.count() ))
|
QShortcut(QKeySequence("Ctrl+PgUp"), self, lambda: wrtabs.setCurrentIndex((wrtabs.currentIndex() - 1)%wrtabs.count()))
|
||||||
QShortcut(QKeySequence("Ctrl+PgDown"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() + 1 )%tabs.count() ))
|
QShortcut(QKeySequence("Ctrl+PgDown"), self, lambda: wrtabs.setCurrentIndex((wrtabs.currentIndex() + 1)%wrtabs.count()))
|
||||||
|
|
||||||
for i in range(tabs.count()):
|
for i in range(wrtabs.count()):
|
||||||
QShortcut(QKeySequence("Alt+" + str(i + 1)), self, lambda i=i: tabs.setCurrentIndex(i))
|
QShortcut(QKeySequence("Alt+" + str(i + 1)), self, lambda i=i: wrtabs.setCurrentIndex(i))
|
||||||
|
|
||||||
self.connect(self, QtCore.SIGNAL('payment_request_ok'), self.payment_request_ok)
|
self.connect(self, QtCore.SIGNAL('payment_request_ok'), self.payment_request_ok)
|
||||||
self.connect(self, QtCore.SIGNAL('payment_request_error'), self.payment_request_error)
|
self.connect(self, QtCore.SIGNAL('payment_request_error'), self.payment_request_error)
|
||||||
|
|
Loading…
Reference in New Issue