Add configurable confirmation when closing
This commit is contained in:
parent
8f12df6553
commit
61d4821065
1
TODO
1
TODO
@ -46,7 +46,6 @@ New big features
|
|||||||
Improvements / minor features
|
Improvements / minor features
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
- configurable warning when closing window with multiple tabs open
|
|
||||||
- Reimplement tabbar to paint it by ourselves to look like dwb
|
- Reimplement tabbar to paint it by ourselves to look like dwb
|
||||||
- Save cookies in Netscape format so it can be used by wget.
|
- Save cookies in Netscape format so it can be used by wget.
|
||||||
http://www.cookiecentral.com/faq/#3.5
|
http://www.cookiecentral.com/faq/#3.5
|
||||||
|
@ -564,7 +564,6 @@ class QuteBrowser(QApplication):
|
|||||||
raise Exception("Forced crash")
|
raise Exception("Forced crash")
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
@cmdutils.register(instance='', name=['quit', 'q'], nargs=0)
|
|
||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
"""Try to shutdown everything cleanly.
|
"""Try to shutdown everything cleanly.
|
||||||
|
|
||||||
|
@ -831,3 +831,13 @@ class WindowOpenBehaviour(String):
|
|||||||
valid_values = ValidValues(('same-tab', "Open new window in same tab."),
|
valid_values = ValidValues(('same-tab', "Open new window in same tab."),
|
||||||
('new-tab', "Open new window in new tab (note: "
|
('new-tab', "Open new window in new tab (note: "
|
||||||
"history will be cleared)."))
|
"history will be cleared)."))
|
||||||
|
|
||||||
|
|
||||||
|
class ConfirmQuit(String):
|
||||||
|
|
||||||
|
"""Whether to display a confirmation when the window is closed."""
|
||||||
|
|
||||||
|
valid_values = ValidValues(('always', "Always show a confirmation."),
|
||||||
|
('multiple-tabs', "Show a confirmation if "
|
||||||
|
"multiple tabs are opened."),
|
||||||
|
('never', "Never show a confirmation."))
|
||||||
|
@ -218,6 +218,10 @@ DATA = OrderedDict([
|
|||||||
('detach-inspector',
|
('detach-inspector',
|
||||||
SettingValue(types.Bool(), 'false'),
|
SettingValue(types.Bool(), 'false'),
|
||||||
"Whether to show the webinspector as own window."),
|
"Whether to show the webinspector as own window."),
|
||||||
|
|
||||||
|
('confirm-quit',
|
||||||
|
SettingValue(types.ConfirmQuit(), 'never'),
|
||||||
|
"Whether to confirm quitting the application."),
|
||||||
)),
|
)),
|
||||||
|
|
||||||
('network', sect.KeyValue(
|
('network', sect.KeyValue(
|
||||||
|
@ -27,9 +27,11 @@ from PyQt5.QtWebKitWidgets import QWebInspector
|
|||||||
import qutebrowser.commands.utils as cmdutils
|
import qutebrowser.commands.utils as cmdutils
|
||||||
import qutebrowser.config.config as config
|
import qutebrowser.config.config as config
|
||||||
import qutebrowser.utils.misc as utils
|
import qutebrowser.utils.misc as utils
|
||||||
|
import qutebrowser.utils.message as message
|
||||||
from qutebrowser.widgets.statusbar.bar import StatusBar
|
from qutebrowser.widgets.statusbar.bar import StatusBar
|
||||||
from qutebrowser.widgets._tabbedbrowser import TabbedBrowser
|
from qutebrowser.widgets._tabbedbrowser import TabbedBrowser
|
||||||
from qutebrowser.widgets._completion import CompletionView
|
from qutebrowser.widgets._completion import CompletionView
|
||||||
|
from qutebrowser.utils.usertypes import PromptMode
|
||||||
|
|
||||||
|
|
||||||
class MainWindow(QWidget):
|
class MainWindow(QWidget):
|
||||||
@ -150,6 +152,11 @@ class MainWindow(QWidget):
|
|||||||
self.inspector.hide()
|
self.inspector.hide()
|
||||||
self.inspector.show()
|
self.inspector.show()
|
||||||
|
|
||||||
|
@cmdutils.register(instance='mainwindow', name=['quit', 'q'], nargs=0)
|
||||||
|
def close(self):
|
||||||
|
"""Extend close() so we can register it as a command."""
|
||||||
|
super().close()
|
||||||
|
|
||||||
def resizeEvent(self, e):
|
def resizeEvent(self, e):
|
||||||
"""Extend resizewindow's resizeEvent to adjust completion.
|
"""Extend resizewindow's resizeEvent to adjust completion.
|
||||||
|
|
||||||
@ -158,3 +165,21 @@ class MainWindow(QWidget):
|
|||||||
"""
|
"""
|
||||||
super().resizeEvent(e)
|
super().resizeEvent(e)
|
||||||
self.resize_completion()
|
self.resize_completion()
|
||||||
|
|
||||||
|
def closeEvent(self, e):
|
||||||
|
"""Override closeEvent to display a confirmation if needed."""
|
||||||
|
confirm_quit = config.get('ui', 'confirm-quit')
|
||||||
|
count = self.tabs.count()
|
||||||
|
if confirm_quit == 'never':
|
||||||
|
e.accept()
|
||||||
|
elif confirm_quit == 'multiple-tabs' and count <= 1:
|
||||||
|
e.accept()
|
||||||
|
else:
|
||||||
|
text = "Close {} {}?".format(
|
||||||
|
count, "tab" if count == 1 else "tabs")
|
||||||
|
confirmed = message.modular_question(text, PromptMode.yesno,
|
||||||
|
default=True)
|
||||||
|
if confirmed:
|
||||||
|
e.accept()
|
||||||
|
else:
|
||||||
|
e.ignore()
|
||||||
|
Loading…
Reference in New Issue
Block a user