Compare commits

...

9 Commits

Author SHA1 Message Date
Florian Bruhin
8486efa940 Release v1.1.2 2018-03-01 09:02:53 +01:00
Florian Bruhin
ea22ad9f49 Upgrade to PyQt 5.10.1
(cherry picked from commit 889b03169a)
2018-03-01 09:01:11 +01:00
Florian Bruhin
90229208c0 Update changelog from master 2018-02-28 16:18:16 +01:00
Florian Bruhin
d298818b85 Don't load the URL immediately on :undo
On some pages like Qt's Gerrit, Indiegogo or Telegram Web, this caused a crash
with QtWebEngine and Qt 5.10.1 in
QtWebEngineCore::WebContentsAdapter::webContents().

I'm not sure what causes the crash exactly, but I'm guessing it's some kind of
race condition between loading the URL initially and deserializing the history,
which both ends up loading the URL.

Since restoring the history means we end up on the given URL anyways, let's just
not open the URL beforehand, which seems to fix this.

Fixes #3619.

(cherry picked from commit d44ff5ba01)
2018-02-28 16:11:14 +01:00
Florian Bruhin
d134e0b1d0 Fix typing.Union checks with Python 3.7
(cherry picked from commit 63766c1711)
2018-02-28 16:07:20 +01:00
Florian Bruhin
4e8abaa2d1 Release v1.1.1 2018-01-20 19:21:20 +01:00
Florian Bruhin
9d83bfe5cd Update changelog for v1.1.1 2018-01-20 19:21:08 +01:00
Florian Bruhin
501e4dba9c Fix crash when getting signals for closed tabs
Fixes #3498

(cherry picked from commit 748de85ba2)
2018-01-20 18:54:53 +01:00
Florian Bruhin
de147b5a93 Fix Makefile and make sure it's tested
Fixes #3492

(cherry picked from commit d06f07af80)
2018-01-15 22:42:53 +01:00
10 changed files with 49 additions and 12 deletions

View File

@@ -15,6 +15,30 @@ breaking changes (such as renamed commands) can happen in minor releases.
// `Fixed` for any bug fixes.
// `Security` to invite users to upgrade in case of vulnerabilities.
v1.1.2
------
Changed
~~~~~~~
- Windows/macOS releases now bundle Qt 5.10.1 which includes security fixes from
Chromium up to version 64.0.3282.140.
Fixed
~~~~~
- QtWebEngine: Crash with Qt 5.10.1 when using :undo on some tabs.
- Compatibility with Python 3.7
v1.1.1
------
Fixed
~~~~~
- The Makefile now actually works.
- Fixed crashes with Qt 5.10 when closing a tab before it finished loading.
v1.1.0
------
@@ -1094,7 +1118,7 @@ Added
- New `:fake-key` command to send a fake keypress to a website or to
qutebrowser.
- New `--mhtml` argument for `:download` to download a page including all
ressources as MHTML file.
resources as MHTML file.
- New option `tabs -> title-alignment` to change the alignment of tab titles.
Changed
@@ -1294,7 +1318,7 @@ Added
- New argument `--no-err-windows` to suppress all error windows.
- New arguments `--top-navigate` and `--bottom-navigate` (`-t`/`-b`) for `:scroll-page` to specify a navigation action (e.g. automatically go to the next page when arriving at the bottom).
- New flag `-d`/`--detach` for `:spawn` to detach the spawned process so it's not closed when qutebrowser is.
- New flag `-v`/`--verbose` for `:spawn` to print informations when the process started/exited successfully.
- New flag `-v`/`--verbose` for `:spawn` to print information when the process started/exited successfully.
- Many new color settings (foreground setting for every background setting).
- New setting `ui -> modal-js-dialog` to use the standard modal dialogs for javascript questions instead of using the statusbar.
- New setting `colors -> webpage.bg` to set the background color to use for websites which don't set one.

View File

@@ -21,5 +21,5 @@ install: doc/qutebrowser.1.html
$(wildcard misc/userscripts/*)
install -Dm755 -t "$(DESTDIR)/usr/share/qutebrowser/scripts/" \
$(filter-out scripts/__init__.py scripts/__pycache__ scripts/dev \
scripts/testbrowser_cpp scripts/asciidoc2html.py scripts/setupcommon.py \
scripts/testbrowser scripts/asciidoc2html.py scripts/setupcommon.py \
scripts/link_pyqt.py,$(wildcard scripts/*))

View File

@@ -1,4 +1,4 @@
# This file is automatically generated by scripts/dev/recompile_requirements.py
PyQt5==5.9.2
sip==4.19.6
PyQt5==5.10.1
sip==4.19.8

View File

@@ -26,7 +26,7 @@ __copyright__ = "Copyright 2014-2017 Florian Bruhin (The Compiler)"
__license__ = "GPL"
__maintainer__ = __author__
__email__ = "mail@qutebrowser.org"
__version_info__ = (1, 1, 0)
__version_info__ = (1, 1, 2)
__version__ = '.'.join(str(e) for e in __version_info__)
__description__ = "A keyboard-driven, vim-like browser based on PyQt5."

View File

@@ -749,6 +749,10 @@ class AbstractTab(QWidget):
@pyqtSlot(bool)
def _on_load_finished(self, ok):
if sip.isdeleted(self._widget):
# https://github.com/qutebrowser/qutebrowser/issues/3498
return
sess_manager = objreg.get('session-manager')
sess_manager.save_autosave()

View File

@@ -597,6 +597,9 @@ class WebEngineTab(browsertab.AbstractTab):
@pyqtSlot()
def _restore_zoom(self):
if sip.isdeleted(self._widget):
# https://github.com/qutebrowser/qutebrowser/issues/3498
return
if self._saved_zoom is None:
return
self.zoom.set_factor(self._saved_zoom)

View File

@@ -394,10 +394,8 @@ class Command:
if isinstance(typ, tuple):
raise TypeError("{}: Legacy tuple type annotation!".format(
self.name))
elif type(typ) is type(typing.Union): # noqa: E721
elif getattr(typ, '__origin__', None) is typing.Union:
# this is... slightly evil, I know
# We also can't use isinstance here because typing.Union doesn't
# support that.
# pylint: disable=no-member,useless-suppression
try:
types = list(typ.__args__)

View File

@@ -373,12 +373,10 @@ class TabbedBrowser(tabwidget.TabWidget):
for entry in reversed(self._undo_stack.pop()):
if use_current_tab:
self.openurl(entry.url, newtab=False)
newtab = self.widget(0)
use_current_tab = False
else:
newtab = self.tabopen(entry.url, background=False,
idx=entry.index)
newtab = self.tabopen(background=False, idx=entry.index)
newtab.history.deserialize(entry.history)
self.set_tab_pinned(newtab, entry.pinned)

View File

@@ -328,6 +328,14 @@ def build_sdist():
return artifacts
def test_makefile():
"""Make sure the Makefile works correctly."""
utils.print_title("Testing makefile")
with tempfile.TemporaryDirectory() as tmpdir:
subprocess.run(['make', '-f', 'misc/Makefile',
'DESTDIR={}'.format(tmpdir), 'install'], check=True)
def read_github_token():
"""Read the GitHub API token from disk."""
token_file = os.path.join(os.path.expanduser('~'), '.gh_token')
@@ -403,6 +411,7 @@ def main():
elif sys.platform == 'darwin':
artifacts = build_mac()
else:
test_makefile()
artifacts = build_sdist()
upload_to_pypi = True

View File

@@ -27,6 +27,7 @@ deps =
pyqt571: PyQt5==5.7.1
pyqt58: PyQt5==5.8.2
pyqt59: PyQt5==5.9.2
pyqt510: PyQt5==5.10.1
commands =
{envpython} scripts/link_pyqt.py --tox {envdir}
{envpython} -bb -m pytest {posargs:tests}