Age | Commit message (Collapse) | Author |
|
[Gammaray][] showed that over time we accumulate QItemSelectionModels.
It turns out that even though they are created by the Qt classes we
inherit from, those classes don't take care of deleting them itself. So
we have to manage their lifecycles ourselves.
For the CompletionView that's easy enough, a new QItemSelectionModels is
always created by `setModel()`. The QAbstractItemView docs say to keep a
reference to the old model, call `setModel()`, then delete the old one.
So that's easy enough.
There is a QHeaderView which is a child of the CompletionView though
(via QTreeView) which is a bit problematic. When we call `QTreeView.setModel()`
that calls `header.setModel()`, which creates a new selection model in
the header, but then it calls `header.setSelectionModel()`. Which
doesn't clean up the short lived selection model created by
`header.setModel()`. And there is no reference to it saved anywhere.
So we have to go hunting for it by looking at child objects. It's a bit
yuck because we have to make several assumptions about the Qt behaviour
that I can't think of many ways to verify. I wish there was some other
way to very that the child items aren't being used, but all the do when
disconnected is call `self.clear()`, which just clears the selection.
Hopefully the fact that `header.selectionModel()` returns a different
one is reassuring enough that the child objects are fine to delete.
I moved everything into a context manager simply to avoid adding the huge
block of text into the calling function. It's still 100% coupled to the
calling function.
TODO:
* more tests?
* raise bug ticket with Qt?
Fixes: #7947
[Gammaray]: https://github.com/KDAB/GammaRay/
|
|
|
|
Override IconProvider for QFileSystemModel to prevent a slowdown in the
download dialog on Linux when browsing to directories with many files.
|
|
|
|
|
|
Is wrong on unstable Archlinux env when Qt is newer than PyQt. But no need for this when we have the API anyways.
|
|
|
|
Fixes #7937
|
|
|
|
I previously changed the assertion to be a subset match, to deal with a qt arg
being added based on the Qt version the tests were being run on. I didn't
notice this fixture that can set setting to avoid that dynamic-ness instead.
|
|
I added all three args to this function in an effort to allow for generic
feature detection, because other places further up in the code where using all
these variables for that. But I didn't look at how the stuff I
was passing in could be used. I can see `special_flags` has essentially already
been consumed. `namespace` is used for all kinds of stuff, there could
theoretically be a pretty simple mapping between the CLI arg and a setting
webengine setting but the only examples of that so for are the special flags
ones and debug flags, which are already generic in their own way. So if we've
gone this long without it we probably don't need it.
|
|
Update dependencies
Doesn't look like anything scary there.
|
|
|
|
|
|
See #7913
|
|
See https://bugreports.qt.io/browse/QTBUG-117489
Closes #7913
|
|
|
|
I would like to be able to disable this workound for new enough chromium
versions (we still need to test that chrome 111 will be fixed, but we
can always bump it up later).
I also wanted to use the declarative mapping `_WEBENGINE_SETTINGS` instead
of adding a new conditional in `_qtwebengine_args`, because that just
seems nicer.
So I changed `_WEBENGINE_SETTINGS` so that the value could also be a
function. The idea is that the function returns on of the other values
based on some feature detection. This also required passing down the
args being used for feature detection in the calling method already.
I feel like that dict is being a bit abused here and if the entries
could be turned into objects with a bit more consistency it might be
nice. But this isn't too bad, right?
Had to change the `test_qt_args` test to be a superset test instead of
exact match because the new `--disable-accelerated-2d-canvas` arg was
showing up in the results based on whatever Qt version you happen to be
running the tests on.
|
|
Ideally we would only enable this if we detected Intel graphics. But
that kind of feature detection is difficult to do cross platform. It's
easy to do with Qt (version.py) ... but it needs a QApplication and we
are trying to figure out what CLI args to pass to Qt, so we can't do
that.
So just disable it for everyone for now.
TODO:
* tests
* change to tri-state option, auto by default and make auto look at the
webengine version and on for Qt6 < 6.7.0
|
|
|
|
|
|
qutebrowser/dependabot/github_actions/docker/login-action-3
build(deps): bump docker/login-action from 2 to 3
|
|
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
qutebrowser/dependabot/github_actions/docker/build-push-action-5
build(deps): bump docker/build-push-action from 4 to 5
|
|
qutebrowser/dependabot/github_actions/docker/setup-buildx-action-3
build(deps): bump docker/setup-buildx-action from 2 to 3
|
|
|
|
|
|
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)
---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
Backported to v3.0.x as simpler fix: b317038a01094136d06d4cb769b7755450b94f61
|
|
|
|
Update dependencies
|
|
qutebrowser/dependabot/github_actions/actions/checkout-4
build(deps): bump actions/checkout from 3 to 4
|
|
|
|
Update dependencies
|
|
See https://github.com/HypothesisWorks/hypothesis/pull/3734
|
|
|
|
|
|
|
|
Fixing timers accumulating duplicate slots
|
|
|
|
|
|
|
|
See https://github.com/HypothesisWorks/hypothesis/issues/3733
Should fix nightly builds (and the next dependency upgrade).
|
|
|
|
Update dependencies
|
|
|
|
Allow navigating from file:// to remote origins via hints.
Previously you would have seen a "Your internet access is blocked"
chrome error page.
|
|
We replace the `(testdata)` placeholder with `testutils.abs_datapath()` in a few end2end
tests. So far we only needed to replace `(testdata)` with an OS path (e.g. in
`tests/end2end/features/spawn.feature`). By introducing `(testdata)` to an end2end test
in `tests/end2end/features/hints.feature`, we required a new use case: replacing
`(testdata)` as part of a valid file:// URI.
```
When I open file://(testdata)/some/file.txt
```
Replacing `(testdata)` in above BDD step with a plain OS path resulted in invalid URIs,
e.g. for the path "C:\\Users" above BDD step results in this invalid URI:
```
When I open file://C:\Users/some/file.txt
```
We deal with this by first isolating the `(testdata)` substitution in a single place.
Having `(testdata)` substitutions in a single place, we simply special-case the substitution
of file:// paths, which will be part of a URI.
Successful substitution for above BDD step looks like the following:
```
When I open file:///C:/Users/some/file.txt
```
|
|
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
|