Florian Bruhin
5fe91c30cc
Fix :click-element with an ID containing non-alphanumeric characters
...
See #3201
2017-12-12 11:33:59 +01:00
Artur Shaikhullin
a8d79fedf3
Fix fetching selection
2017-12-07 17:45:05 +06:00
Artur Shaikhullin
890e26b2b5
Additional fixes
2017-12-06 13:58:23 +06:00
Artur Shaikhullin
e7a66d92a8
Selection implentation
2017-11-22 19:56:05 +06:00
Florian Bruhin
e003b11670
Fix overflow handling for QtWebKit scrolling
...
If we do "m * val / 100", the value gets bigger, so we need to check for an
overflow afterwards.
2017-10-15 22:30:17 +02:00
Bryan Gilbert
be3727a599
Improved zoom level management and enforcement
2017-10-06 20:30:06 -04:00
Florian Bruhin
ef1c83862b
Use utils.is_* for platform checks everywhere
2017-09-20 11:10:24 +02:00
Florian Bruhin
852baaa8c3
Drop support for Qt < 5.7.1
...
See #2742
2017-09-18 23:01:17 +02:00
Ryan Roden-Corrent
d2d55531e6
Remove double-registration of proxy factory.
...
Due to a bad merge, proxy.init() was called twice.
2017-08-27 22:27:34 -04:00
Ryan Roden-Corrent
5ea420b49b
Fix startup crashes after config merge.
...
Get qutebrowser to the point where it can at least start
- Declare _messages earlier in MessageView.__init__ so it is set before
the config trigger tries to access it.
- Remove unused configmodel completion functions
- Move bind completion to configmodel to avoid a circular import with
the config module
- Fix some config accesses (forgot to use .val)
- Fix old Completion.CompletionKind references
2017-08-09 07:28:22 -04:00
Ryan Roden-Corrent
71b71dbc58
Merge remote-tracking branch 'upstream/master' into HEAD
2017-08-06 18:13:49 -04:00
Iordanis Grigoriou
6ab49fdf1d
Move back/forward logic to AbstractHistory, fix method names
2017-07-10 15:43:35 +02:00
Iordanis Grigoriou
c6ed4fe4f9
Skip intermediate pages with :back/:forward and a count
2017-07-10 00:28:47 +02:00
Florian Bruhin
cff61fa0bc
Fix pylint
...
This also reverts commit 8df0b063be
.
2017-07-04 15:34:10 +02:00
Florian Bruhin
ffc29ee043
Make qute://settings work with QtWebEngine and new config
...
Fixes #2332
2017-07-04 15:08:01 +02:00
Florian Bruhin
629038632c
Add proxy support for QtWebEngine and Qt 5.7.1
...
This used to give us crashes in libproxy:
https://github.com/libproxy/libproxy/issues/45
https://bugreports.qt.io/browse/QTBUG-56852
However, trying again with Qt 5.7.1 on Debian and from PyPI, this doesn't happen
anymore, so it was probably something with how Archlinux handled things.
See #2082 , #2775 .
Reverts fd29528e4f
2017-07-03 10:29:28 +02:00
Florian Bruhin
5ec47da127
Get rid of configtypes.AutoSearch and IgnoreCase
2017-07-02 22:17:33 +02:00
Florian Bruhin
086139110d
Merge branch 'new-private-browsing'
2017-05-16 06:32:15 +02:00
Florian Bruhin
920dde4a68
Don't set an URL for :view-source tabs
...
Otherwise the page URL gets added to the history again with QtWebKit.
2017-05-15 09:03:45 +02:00
Florian Bruhin
1c50377c0a
Initial work on new private browsing
2017-05-10 07:00:21 +02:00
Florian Bruhin
b91d4ee9c2
Clean up :debug-webaction
2017-05-09 22:02:30 +02:00
Florian Bruhin
822623f2ed
Finally update copyrights...
2017-05-09 21:37:03 +02:00
Florian Bruhin
905032924a
Remove search_displayed initialization in subclasses
...
We set this in BrowserTab anyways, and the value in WebKitTab was wrong.
2017-05-09 17:58:28 +02:00
Florian Bruhin
4b5e528d05
Add AbstractTab.key_press
2017-05-09 17:56:07 +02:00
Jay Kamat
a3d41c0467
Refactor search method of AbstractBrowserTab into a field
2017-05-09 00:24:13 -07:00
Jay Kamat
d1aac9e9e9
Add docstrings to key_press methods
2017-05-08 23:43:21 -07:00
Jay Kamat
5bdd291d28
Refactor key_press into _repeated_key_press
...
Also split off generic key pressing ability from WebKitScroller to WebKitTab
2017-05-08 23:11:50 -07:00
Jay Kamat
c9953b9f0d
Add support for follow_selected via fake-clicks
2017-05-08 22:31:29 -07:00
Florian Bruhin
d62ebdb926
Make most of search BDD tests work with QtWebEngine
2017-04-27 21:02:26 +02:00
Florian Bruhin
4d65abfcc6
Check if widget is deleted in _on_webkit_icon_changed
2017-03-22 06:32:09 +01:00
Florian Bruhin
a4f04db848
Cap scroll count to 5000
...
Fixes #1694
2017-02-11 22:26:37 +01:00
Florian Bruhin
3f1433dcf7
Merge branch 'webengine-mhtml'
2017-02-07 22:24:25 +01:00
Florian Bruhin
7aa0e900d7
Add mhtml support for QtWebEngine
2017-02-07 22:13:33 +01:00
Florian Bruhin
bae1f41599
Set user-agent for QtWebKit downloads
...
See #513
2017-02-07 22:00:03 +01:00
Florian Bruhin
98e6ccf548
Add fullscreen support for QtWebEngine
2017-02-06 16:22:58 +01:00
Florian Bruhin
c8913cbdc4
Fix QtWebEngine PDF printing
2017-02-06 12:49:02 +01:00
Florian Bruhin
2f4c185da0
Implement printing with QtWebEngine
2017-02-06 09:51:11 +01:00
Florian Bruhin
de50f30b9b
Replace all GitHub links
2017-02-05 00:13:11 +01:00
Florian Bruhin
fd29528e4f
Add proxy support for QtWebEngine with Qt >= 5.8
...
See #666
Fixes #2082
2017-02-04 21:39:22 +01:00
Florian Bruhin
ba2f4fb1b9
Use event_target to filter out mouse events
...
Fixes #2262
2017-02-01 13:08:11 +01:00
Florian Bruhin
6c1b7dcca1
Move proxy/pac out of QtWebKit folder
2016-12-22 13:54:11 +01:00
Florian Bruhin
caf1950868
Set the default zoom initially with QtWebEngine
...
This solves a part of #1993 , however when the user navigates to a
different page, the zoom is reset.
2016-12-06 20:28:18 +01:00
Florian Bruhin
97d23144f7
Add an API to get the QNAM of a tab
2016-11-22 11:23:45 +01:00
Florian Bruhin
5de07246be
Handle clicks via createWindow with QtWebEngine
...
Before, we used the same logic for QtWebKit and QtWebEngine, where we
simply set an attribute on the tab on a mousePressEvent and then handled
opening links in acceptNavigationRequest.
However, this caused random links to pop up in new tabs (probably to
things being much more async?) on QtWebEngine, so we now handle those
cases in createWindow and only use override_target from the tab there.
Fixes #2102 .
2016-11-14 06:52:33 +01:00
Florian Bruhin
51a0c2a32c
Remove unused imports
2016-10-31 07:27:30 +01:00
Florian Bruhin
f6aefabf40
Initialize QtWebKit-specific stuff with QtWebKit only
...
Maybe this fixes issues we had with QtWebEngine segfaults in proxy.py on
Travis?
Note we can't move cookies/cache/network stuff yet as we still need that
for e.g. adblock downloads with QtWebEngine.
2016-10-30 23:07:19 +01:00
Florian Bruhin
428637746a
Merge branch 'insert-text-js' of https://github.com/paretje/qutebrowser into paretje-insert-text-js
2016-10-30 19:51:25 +01:00
Kevin Velghe
0caee94994
Remove has_js
2016-10-30 18:54:34 +01:00
Florian Bruhin
f4022a86fd
Improve line breaking
2016-10-30 18:49:41 +01:00
Kevin Velghe
e83b99b0e1
Run javascript on document element
...
This enables `:jseval` for users who disable javascript on webpages.
2016-10-30 11:39:10 +01:00
Florian Bruhin
8a35ebac7b
Use a separate JS world for :jseval
2016-09-12 18:27:51 +02:00
Florian Bruhin
a16c5a6a25
Add a world argument to tab.run_js_async
2016-09-12 15:59:03 +02:00
Florian Bruhin
fff777404b
Use QApplication.postEvent again
...
We had some funny segfaults reported during scrolling (i.e. with
QApplication.sendEvent), and some code already had to use postpone=True
so there was no segfault...
So now we're back to postEvent again, and eliminated the main reason for
segfaults with it, which was re-using (and -posting) events which had
already been posted.
At least during tests this seems to run stable, let's hope it helps for
the people having crashes as well.
2016-09-11 19:37:09 +02:00
Florian Bruhin
02bd42cbed
Implement adblocking for QtWebEngine
2016-09-07 17:27:21 +02:00
Florian Bruhin
3e1583bb1c
Make WebKitElement._is_visible private
...
It makes a lot of sense for this to be in webkitelem.py, but it should
not be public API as it's only used internally and can't be implemented
here with QtWebEngine.
2016-09-07 11:58:39 +02:00
Florian Bruhin
78d64f4791
Get rid of webkitelem.focus_elem
2016-09-07 11:24:28 +02:00
Florian Bruhin
ee5a972069
Move auto-insert-mode handling to browsertab
...
This means auto-insert-mode now works correctly with QtWebEngine.
2016-09-07 10:24:27 +02:00
Florian Bruhin
5f58ebebbf
Remove needs_js for @cmdutils.register
...
This gets rid of a QtWebKit import in commands.py, and also makes those
checks work later when we have per-domain settings.
2016-09-05 18:11:01 +02:00
Florian Bruhin
fe11e25430
Ignore mouse events going to non-main widgets
...
When we hide the context menu on QtWebEngine, we get a mouse event
relative to the QMenu in the filter, which means tab.elements.at_pos
will get called with a negative position (and thus assert) or at least a
wrong position.
2016-08-19 18:38:07 +02:00
Florian Bruhin
a846a5b89f
Move send_event to AbstractTab
...
This means subclasses only need to implement _event_target.
2016-08-19 10:12:57 +02:00
Florian Bruhin
0557fea79e
Use QApplication.sendEvent instead of postEvent
...
From the QApplication.postEvent docs:
http://doc.qt.io/qt-5/qcoreapplication.html#postEvent
The event must be allocated on the heap since the post event queue
will take ownership of the event and delete it once it has been
posted. It is not safe to access the event after it has been posted.
We can't reliably guarantee that from Python, so we need to use
sendEvent instead.
2016-08-18 21:36:43 +02:00
Florian Bruhin
dfed2f9c9c
WebEngine: Don't save title if generated from URL
2016-08-18 18:05:48 +02:00
Florian Bruhin
0cef4ac2db
Add a :click-element command
2016-08-18 15:30:04 +02:00
Florian Bruhin
63c66945a4
Add webelem.click() and webelem.hover()
2016-08-18 14:32:19 +02:00
Florian Bruhin
5ac9fe9c32
Add tab.elem.find_id
2016-08-18 14:08:34 +02:00
Florian Bruhin
2c6fe35398
Fix blank lines
2016-08-18 14:03:27 +02:00
Florian Bruhin
a0add7b66c
Get rid of tab.run_js_blocking
...
We had some trouble with it, and it's not actually needed.
2016-08-18 14:02:59 +02:00
Florian Bruhin
d3084dd690
Add a separate tab.elements object
2016-08-18 14:01:27 +02:00
Florian Bruhin
1b3d693a5e
Add post_event to tab API
2016-08-18 12:40:21 +02:00
Florian Bruhin
1138d068e6
Move insert-mode-on-click to tab API / mouse.py
...
This also implements the feature for QtWebEngine.
2016-08-16 16:22:18 +02:00
Florian Bruhin
9195e6a3a7
Fix :follow-selected --tab
2016-08-11 17:50:19 +02:00
Florian Bruhin
3bffb71b55
QtWebEngine: Implement mouse opentarget handling
...
This moves various stuff around and out of QtWebKit code:
- open_target and hint_target are now in TabData, not on the WebPage
- As much as possible got extracted from WebPage.acceptNavigationRequest
to AbstractTab._on_link_clicked, with a new link_clicked signal added
to WebPage. However, we need to decide whether to handle the request
in this tab or not inside acceptNavigationRequest, so we have some
code duplicated there and in WebEnginePage.acceptNavigationRequest.
- _mousepress_opentarget (i.e., setting the open_target) is now handled
in MouseEventFilter, not in WebView.
2016-08-11 16:09:59 +02:00
Florian Bruhin
64afc562b6
Install MouseEventFilter on new WebEngine children
...
For some reason, when e.g. visiting duckduckgo and then heise.de,
QtWebEngine suddenly gets a new QOpenGLWidget as focusProxy.
We install an extra eventFilter observing the ChildAdded event and
re-adding the MouseEventFilter when that happens.
2016-08-10 19:44:06 +02:00
Florian Bruhin
f908d29a5f
Move mouse handling to an EventFilter
2016-08-10 16:44:40 +02:00
Florian Bruhin
77531d09df
Move history triggering out of WebView
2016-08-10 13:14:38 +02:00
Florian Bruhin
eed3460317
Add tab.url(requested=True) to get original URL
2016-08-10 13:14:07 +02:00
Florian Bruhin
9a17591fb7
Start getting :open-editor to work with WebEngine
...
It doesn't actually work yet (as it claims the field is not editable),
but at least does not crash when the backend limitation for the command
is removed.
2016-08-08 16:24:34 +02:00
Florian Bruhin
dfbadaf7c2
Split WebElementWrapper into abstract/webkit parts
2016-08-08 13:04:53 +02:00
Florian Bruhin
d8521f43ee
Change tab.find_all_elements() to be async
2016-08-05 12:37:25 +02:00
Florian Bruhin
1213b91b66
Fix ALL the contentsSizeChanged connections!
2016-07-28 15:29:56 +02:00
Florian Bruhin
21c1dec59a
Actually handle contents_size_changed correctly
2016-07-28 14:56:42 +02:00
Florian Bruhin
631109e5eb
Fix raising of WebTabError
2016-07-28 12:36:09 +02:00
Florian Bruhin
540c62c232
Add only_visible to find_all_elements
2016-07-28 12:36:09 +02:00
Florian Bruhin
193c755637
Refactor WebElement API, part 2
...
Now we don't get a crash, but not any hints either...
2016-07-28 12:35:59 +02:00
Florian Bruhin
c5a91004f5
Add contents_size_changed to tab API
2016-07-28 12:35:56 +02:00
Florian Bruhin
3ccb691e9f
tab API: Rename scroll to scroller
...
The scroll attribute did overwrite QWidget.scroll which is unfortunate.
2016-07-26 13:19:07 +02:00
Florian Bruhin
878fa26247
Use real slots for QtWebKit signals
...
Otherwise we can get this when immediately quitting:
Traceback (most recent call last):
File ".../qutebrowser/browser/webkit/webkittab.py", line 580, in <lambda>
not self._widget.page().error_occurred))
RuntimeError: wrapped C/C++ object of type WebView has been deleted
2016-07-26 12:55:40 +02:00
Florian Bruhin
76eab7617b
Remove @pyqtSlot for functions and non-QObjects
...
Fixes #1669
2016-07-23 11:42:50 +02:00
Florian Bruhin
5b1cca92ab
Add run_js_blocking to tab API
2016-07-13 13:47:30 +02:00
Florian Bruhin
b78b89f04f
QtWebEngine: Implement :scroll-perc via JS
2016-07-13 10:55:04 +02:00
Florian Bruhin
40455b2692
Always set FindWrapsAroundDocument in WebKitSearch
...
We accidentally set it to never wrap with the wrap-search option
removal, but we want to *always* wrap.
2016-07-12 17:28:59 +02:00
Florian Bruhin
64b32ec87d
Remove general -> wrap-search
2016-07-12 16:47:57 +02:00
Florian Bruhin
f0da508c21
Move searching out of WebView subclass
...
This also makes it work for QtWebEngine.
It also seems to fix #1050 though I'm not 100% sure why.
2016-07-12 16:29:50 +02:00
Florian Bruhin
cd4eff364a
Add printing to tab API
...
This fixes printing for QtWebKit, and hopefully will make printing to
PDF work with QtWebEngine with Qt >= 5.7
2016-07-12 12:54:11 +02:00
Florian Bruhin
8b67d68d4a
Move qtutils.ensure_valid in WebView.openurl
2016-07-11 16:32:24 +02:00
Florian Bruhin
914f9db8ca
Actually connect _on_url_changed slot
2016-07-11 16:05:09 +02:00
Florian Bruhin
5d6eedcd49
Move URL/title handling to AbstractTab
2016-07-11 14:36:57 +02:00
Florian Bruhin
a470bfc3f3
Get rid of url_text_changed signal
...
Instead we simply use url_changed which (similar to Qt's urlChanged)
simply has a QUrl argument.
2016-07-11 14:28:51 +02:00
Florian Bruhin
5cbd540e15
Get rid of WebView.cur_url attribute
...
The only thing which differs from url() is that it got set immediately
after openurl() was called, which might or might not have improved
something.
Let's see if things still work the same without it.
2016-07-11 14:20:46 +02:00
Florian Bruhin
e9d606a782
Move load_status / SSL errors to AbstractTab
2016-07-11 12:09:41 +02:00