Commit Graph

7122 Commits

Author SHA1 Message Date
Florian Bruhin
28670f8e48 Move config.style into config.config and refactor it 2017-07-04 15:08:03 +02:00
Florian Bruhin
a2f62238f1 Change default binding to leave passthrough mode to Ctrl-V
Also, display the binding in the statusbar
2017-07-04 15:08:03 +02:00
Florian Bruhin
df1685905e Add content.headers and content.cache groups 2017-07-04 15:08:03 +02:00
Florian Bruhin
50602cbf26 Add an url. group to settings 2017-07-04 15:08:03 +02:00
Florian Bruhin
5c08c6c930 Add conditional backend infos to docs 2017-07-04 15:08:03 +02:00
Florian Bruhin
034d727a2c Clean up configdata 2017-07-04 15:08:03 +02:00
Florian Bruhin
25ab3b30c2 Initial doc update with new settings 2017-07-04 15:08:03 +02:00
Florian Bruhin
94ac2ca56c Merge :wq into :quit and add an alias 2017-07-04 15:08:03 +02:00
Florian Bruhin
065f82f485 Fix endless recursion while validating aliases 2017-07-04 15:08:03 +02:00
Florian Bruhin
ac78039171 Use aliases for :w and :q 2017-07-04 15:08:03 +02:00
Florian Bruhin
ac64ea287a Rename tabs.new_position/_explicit to .related/.unrelated 2017-07-04 15:08:03 +02:00
Florian Bruhin
441b3a4df4 Allow missing fixed_keys for configtypes.Dict
We just fill them up with a None value for the value type, so we can e.g. only
specify a subset of modes for bindings and the rest is {}.
2017-07-04 15:08:03 +02:00
Florian Bruhin
9d8b76e497 Simplify _none_value for List/Dict configtypes
We don't need to check for fixed_keys/required_keys in get_obj (only get_py),
and we don't need to care about mutability in get_py.
2017-07-04 15:08:03 +02:00
Florian Bruhin
da0a2b8578 Handle {} and [] with none_ok for configtypes.Dict/List 2017-07-04 15:08:03 +02:00
Florian Bruhin
2ba637891a Add required_keys for configtypes.Dict 2017-07-04 15:08:03 +02:00
Florian Bruhin
bc526cf0ce Remove some FIXMEs 2017-07-04 15:08:03 +02:00
Florian Bruhin
7ee222af88 Return [] for none-values for configtypes.List 2017-07-04 15:08:03 +02:00
Florian Bruhin
c141c33b32 Clean up start_pages setting
The value is now of type FuzzyUrl, and the setting is renamed to start_pages.
2017-07-04 15:08:03 +02:00
Florian Bruhin
9cbacf3264 Use {} for none-dicts and fix keybindings 2017-07-04 15:08:03 +02:00
Florian Bruhin
0115285a84 Initial update for better bindings management 2017-07-04 15:08:03 +02:00
Florian Bruhin
127db2fe42 Be a bit more relaxed about values for Perc
We now allow float/int for objects, and strings without a trailing % sign.
2017-07-04 15:08:03 +02:00
Florian Bruhin
cbf6e4287f Rename fonts.tabbar to fonts.tabs 2017-07-04 15:08:03 +02:00
Florian Bruhin
e7ba56cb2c Read YAML config after config.val is ready
This means we can (at least somewhat) validate aliases in configtypes.Command.
2017-07-04 15:08:03 +02:00
Florian Bruhin
0ed0a6db57 Clean up code 2017-07-04 15:08:03 +02:00
Florian Bruhin
67cb6a9802 Implement initial reading from YAML 2017-07-04 15:08:03 +02:00
Florian Bruhin
70f6d0e305 Add qutebrowser.config.configfiles 2017-07-04 15:08:03 +02:00
Florian Bruhin
78434a330c Remove old stub FIXMEs 2017-07-04 15:08:03 +02:00
Florian Bruhin
fda4fd4888 Rename NewConfigManager.set to set_obj 2017-07-04 15:08:03 +02:00
Florian Bruhin
ad0a961a5f Add an lru_cache for configdata.is_valid_prefix()
This gets called a lot, and caused some :bind calls to take ~3s.

Stats after starting with a bit of :bind:
CacheInfo(hits=25917, misses=139, maxsize=256, currsize=139)
2017-07-04 15:08:03 +02:00
Florian Bruhin
45e7e35233 Detect mutated values in new config
This will allow config.py to get a value and then mutate it, and we can also
make things easier for :bind and :unbind.
2017-07-04 15:08:03 +02:00
Florian Bruhin
2577b2c5e3 Validate configtypes.Command correctly 2017-07-04 15:08:03 +02:00
Florian Bruhin
23d30d4fc0 Fix remaining :bind/:unbind issues 2017-07-04 15:08:03 +02:00
Florian Bruhin
f434f955c2 Improve exception handling for :bind/:unbind 2017-07-04 15:08:02 +02:00
Florian Bruhin
ba1bc29a97 Initial :bind/:unbind implementation 2017-07-04 15:08:02 +02:00
Florian Bruhin
290d27a064 Add a cmdexc.Error 2017-07-04 15:08:02 +02:00
Florian Bruhin
a6c629899e Split CommandRunner into runner/parser 2017-07-04 15:08:02 +02:00
Florian Bruhin
d4cbd4ace4 Fix getting the scrollbar option 2017-07-04 15:08:02 +02:00
Florian Bruhin
ed5bea6e3f Call int() for zoom level messages 2017-07-04 15:08:02 +02:00
Florian Bruhin
3c2d568a2e Add an ID for qute://settings inputs 2017-07-04 15:08:02 +02:00
Florian Bruhin
d7f1ebedbf Fix toggling options 2017-07-04 15:08:02 +02:00
Florian Bruhin
44e4816cbb Use get_opt in NewConfigManager.set 2017-07-04 15:08:02 +02:00
Florian Bruhin
5081e4f201 Fix NewConfigManager.get_str 2017-07-04 15:08:02 +02:00
Florian Bruhin
5e4675b34a Fix ignore_case handling 2017-07-04 15:08:02 +02:00
Florian Bruhin
340a62869d Fix javascript.prompt default 2017-07-04 15:08:02 +02:00
Florian Bruhin
ceca99a99c Fix :help with new config 2017-07-04 15:08:02 +02:00
Florian Bruhin
e752f87876 Add Shift-Delete mapping for :completion-item-del
This seems to be what Chromium and Firefox use for the same purpose.
2017-07-04 15:08:02 +02:00
Florian Bruhin
75798bebb0 Normalize bindings correctly when checking key_mappings 2017-07-04 15:08:02 +02:00
Florian Bruhin
383968d948 Add a Key config type
Make sure any key we get from the config is normalized).
2017-07-04 15:08:02 +02:00
Florian Bruhin
e894ad4ab0 Improve :set --temp docs 2017-07-04 15:08:02 +02:00
Florian Bruhin
6aafaca329 Fix invalid default_page replacement 2017-07-04 15:08:02 +02:00
Florian Bruhin
ae6cc543ed Fix shared.feature_permission 2017-07-04 15:08:02 +02:00
Florian Bruhin
089e1ee91b Rewrite various references to old settings 2017-07-04 15:08:02 +02:00
Florian Bruhin
88fb5bbd82 tests: Fix various issues with new config 2017-07-04 15:08:02 +02:00
Florian Bruhin
198040b2e2 Fix setting descriptions 2017-07-04 15:08:02 +02:00
Florian Bruhin
f27978e268 Rename input.insert_mode.auto_focused to _load 2017-07-04 15:08:02 +02:00
Florian Bruhin
3470e9bf5d Fix invocation with -s 2017-07-04 15:08:02 +02:00
Florian Bruhin
471755d370 Fix old config access in hints 2017-07-04 15:08:02 +02:00
Florian Bruhin
3aa7f771c1 Fix dirbrowser.html for stricter jinja env 2017-07-04 15:08:02 +02:00
Florian Bruhin
d0904a9f67 Adjust test settings 2017-07-04 15:08:02 +02:00
Florian Bruhin
c2a2845ee7 Remove the tabs.movable setting 2017-07-04 15:08:02 +02:00
Florian Bruhin
85bee4a7d2 Rename completion background settings to .odd/.even 2017-07-04 15:08:02 +02:00
Florian Bruhin
bc8176ff21 Remove most legacy config code 2017-07-04 15:08:02 +02:00
Florian Bruhin
785de9fb99 Add dump_userconfig 2017-07-04 15:08:02 +02:00
Florian Bruhin
b5eac744b5 Remove old caching code
Not deleting debug_cache_stats as we'll soon re-add stuff there.
2017-07-04 15:08:02 +02:00
Florian Bruhin
46d0fee11b Bring back :set 2017-07-04 15:08:02 +02:00
Florian Bruhin
30f1970850 Fix key-config usage 2017-07-04 15:08:02 +02:00
Florian Bruhin
aa75262fe4 Fix keyhintwidget 2017-07-04 15:08:02 +02:00
Florian Bruhin
22f096088b Fix alias handling 2017-07-04 15:08:02 +02:00
Florian Bruhin
f5d2c48bbb Fix new keyconfig issues 2017-07-04 15:08:02 +02:00
Florian Bruhin
056edcfed3 More keyconfig work 2017-07-04 15:08:02 +02:00
Florian Bruhin
67afc06d79 Initial work on new keyconfig 2017-07-04 15:08:02 +02:00
Florian Bruhin
e4278a69ac Re-activate aliases 2017-07-04 15:08:02 +02:00
Florian Bruhin
82102279bc Get rid of configdata.SECTION_DESC 2017-07-04 15:08:02 +02:00
Florian Bruhin
624c6777ff Reorder configdata.yml 2017-07-04 15:08:02 +02:00
Florian Bruhin
94b200835a Hack in setting a value to NewConfigManager 2017-07-04 15:08:02 +02:00
Florian Bruhin
dc74a55b84 Fix remaining configtypes issues 2017-07-04 15:08:02 +02:00
Florian Bruhin
72d4421ac8 Make ShellCommand a List subclass
Also, let's not require a list in Command (which is used for aliases).
2017-07-04 15:08:02 +02:00
Florian Bruhin
ecba175b16 Test and fix configtypes to_str. 2017-07-04 15:08:02 +02:00
Florian Bruhin
4c2f65819b Try to fix qute://settings 2017-07-04 15:08:02 +02:00
Florian Bruhin
5414744439 Clean up NewConfigManager 2017-07-04 15:08:02 +02:00
Florian Bruhin
d69c6d0c66 Reorganize how configtypes store their data
Now the "object" kind of value (like in YAML) is stored internally, and that's
the canonical value. The methods changed their meaning slightly, see the
docstring in configtypes.py for details.
2017-07-04 15:08:02 +02:00
Florian Bruhin
1cbb4ece4b Force configtype.Dict keys to be strings 2017-07-04 15:08:02 +02:00
Florian Bruhin
41655e7852 Fix handling of none_ok in List/Dict
We now always return None (and '' as string) when the user configured an empty
list or dict.
2017-07-04 15:08:01 +02:00
Florian Bruhin
8ea3d92697 Initial implementation of to_str for configtypes 2017-07-04 15:08:01 +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
18eb133811 configdata: Make sure default values are valid 2017-07-04 15:08:01 +02:00
Florian Bruhin
0857a45b0a configtypes: parse regex flags properly 2017-07-04 15:08:01 +02:00
Florian Bruhin
a7c3bb0d55 Initial qute://settings upgrade 2017-07-04 15:08:01 +02:00
Florian Bruhin
3a6bcb3dd0 Remove icon from base.html 2017-07-04 15:08:01 +02:00
Florian Bruhin
36a5614c61 Add "FIXME" 2017-07-04 15:08:01 +02:00
Florian Bruhin
a1ed81f790 Patch out setting completion
Let's bring it back with the completion refactoring
2017-07-04 15:08:01 +02:00
Florian Bruhin
6733e92b50 Handle files correctly in utils.yaml_dump 2017-07-04 15:08:01 +02:00
Florian Bruhin
001312ca82 Disallow Booleans for configtypes.Int.from_py 2017-07-04 14:42:56 +02:00
Florian Bruhin
dfee857466 Make utils.yaml_dump return str 2017-07-04 14:42:56 +02:00
Florian Bruhin
ffd1a91467 Fix Directory conftype 2017-07-04 14:42:56 +02:00
Florian Bruhin
61ba92ae18 configtypes: Separate str/py basic validation
This also ensures the behavior for none_ok is consistent.
2017-07-04 14:42:56 +02:00
Florian Bruhin
51a29468be configtypes: Use YAML for loading List/Dict from a string
This allows for a more lightweight syntax (like "{a: b}").
2017-07-04 14:42:56 +02:00
Florian Bruhin
41565fcfd4 configtypes: Use from_py for List/Dict values from a string 2017-07-04 14:42:56 +02:00
Florian Bruhin
7ddce62cd6 Refactor most of remaining config.get() calls 2017-07-04 14:42:56 +02:00
Florian Bruhin
51474724e5 Refactor objreg.get('config') calls 2017-07-04 14:42:56 +02:00
Florian Bruhin
cc0e66fe7b More config fixes 2017-07-04 14:42:56 +02:00
Florian Bruhin
6a451b37d7 re-raise NoOptionError 2017-07-04 14:42:56 +02:00
Florian Bruhin
52f15c84a6 Get rid of config sections 2017-07-04 14:42:56 +02:00
Florian Bruhin
7e7fbf106b Fix lint and old config options 2017-07-04 14:42:56 +02:00
Florian Bruhin
ce7597b3f6 Fix various configtypes issues found while writing tests 2017-07-04 14:42:56 +02:00
Florian Bruhin
d751539a25 Add __eq__ and __repr__ for PACFetcher
This makes it possible to use it in comparisons during tests easily.
2017-07-04 14:42:56 +02:00
Florian Bruhin
3cee9cdcd7 Fix JS logging 2017-07-04 14:42:56 +02:00
Florian Bruhin
45ce7efc71 Adjust feature permissions 2017-07-04 14:42:56 +02:00
Jakub Klinkovský
7eacea1057 Preserve fullscreen when exiting video fullscreen
Fixes #2778
2017-07-04 14:12:21 +02:00
Ryan Roden-Corrent
1e1335aa5e Make various SQL code review changes.
- Fix outdated comments
- Use mock specs when possible
- More precise error message check in test_import_txt_invalid.
- Fix copyright message
- Tweak missing pyqt error message
- Dead code: remove group_by and where from sqlcategory.
  With the new separate completion table, these are no longer used.
- Move test_history out of webkit/. History is no longer purely webkit
  related, it could be webengine.
2017-07-03 09:45:08 -04:00
Ryan Roden-Corrent
25c79bec67 Check correct SQL driver in earlyinit. 2017-07-03 08:15:06 -04:00
Ryan Roden-Corrent
a34df34208 Fix various test/flake8/pylint errors. 2017-07-03 08:12:47 -04:00
Ryan Roden-Corrent
f2dbff92f4 Check for PyQt.QtSql and sqlite in earlyinit.
Show a graphical error box with install instructions if PyQt.QtSql is
not found, rather than failing with CLI errors. Also show an error box
if the sqlite driver is not available.
2017-07-03 07:57:55 -04: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
e828f5b812 Fix most config changed handlers 2017-07-02 22:17:33 +02:00
Florian Bruhin
c25022f549 Fix LimitLineParser 2017-07-02 22:17:33 +02:00
Florian Bruhin
1022b7ea32 Make jinja templating more strict
This ensures we actually know when an AttributeError happens.

It also changes most external code to use the correct environment, rather than
simply creating a jinja2.Template, which wouldn't use the more tightened
environment.
2017-07-02 22:17:33 +02:00
Florian Bruhin
4b4acc5f5a Minor config fixes 2017-07-02 22:17:33 +02:00
Florian Bruhin
c8c9536beb Fix completion stuff 2017-07-02 22:17:33 +02:00
Florian Bruhin
8c1b5f0581 Fix up background_tabs, favicon_show and some custom config magic 2017-07-02 22:17:33 +02:00
Florian Bruhin
1f508d9d8f Fix config getters 2017-07-02 22:17:33 +02:00
Florian Bruhin
b9aa5d0e4e Fix valid_values initing from configdata 2017-07-02 22:17:33 +02:00
Florian Bruhin
fcc0b3e8c0 Fix tab indicator width 2017-07-02 22:17:33 +02:00
Florian Bruhin
269e9d69e0 Improve typechecking message 2017-07-02 22:17:33 +02:00
Florian Bruhin
500ad8b00f Use strings for Perc configtypes 2017-07-02 22:17:33 +02:00
Florian Bruhin
e6275ab561 Fix startpage 2017-07-02 22:17:33 +02:00
Florian Bruhin
298553d48d Fix QssColor 2017-07-02 22:17:33 +02:00
Florian Bruhin
61fe40f4a1 Initial stylesheet refactoring for new config 2017-07-02 22:17:33 +02:00
Florian Bruhin
e2b0fdf8aa Fix VerticalPosition and NewTabPosition
Make them string so they have to_py() defined.
2017-07-02 22:17:33 +02:00
Florian Bruhin
a3d4822b9f Fix up adblock settings 2017-07-02 22:17:33 +02:00
Florian Bruhin
26bf588fad Fix _validate_valid_values 2017-07-02 22:17:33 +02:00
Florian Bruhin
231b7303f5 Use null for empty config values. 2017-07-02 22:17:33 +02:00
Florian Bruhin
af134eb861 Refactor websettings for new config 2017-07-02 22:17:33 +02:00
Florian Bruhin
129ee33ffb Refactor former network section 2017-07-02 22:17:33 +02:00
Florian Bruhin
f1d81d86aa Fix configtypes _basic_validation 2017-07-02 22:17:33 +02:00
Florian Bruhin
aa6f229e6b Add utils.yaml_{load,dump} 2017-07-02 22:17:33 +02:00
Florian Bruhin
1a6511c7a8 Refactor most stuff using config.val.ui 2017-07-02 22:17:33 +02:00
Florian Bruhin
1ed8df8903 Fix various typos/bugs 2017-07-02 22:17:33 +02:00
Florian Bruhin
3e3685b68b Initial configexc refactoring 2017-07-02 22:17:33 +02:00
Florian Bruhin
5ab2c89a37 Adjust config.change_filter 2017-07-02 22:17:33 +02:00
Florian Bruhin
b5110b07f0 Fix newconfig init 2017-07-02 22:17:33 +02:00
Florian Bruhin
3009e5eebe Fix configtypes mistakes 2017-07-02 22:17:33 +02:00
Florian Bruhin
8de0445661 Move UserAgent to configdata 2017-07-02 22:17:33 +02:00
Florian Bruhin
616aad84d8 More configtypes refactoring 2017-07-02 22:17:33 +02:00
Florian Bruhin
5ec47da127 Get rid of configtypes.AutoSearch and IgnoreCase 2017-07-02 22:17:33 +02:00
Florian Bruhin
921d02e4d3 First portion of configtypes refactoring 2017-07-02 22:17:33 +02:00
Florian Bruhin
7e52eb7b0e Initial work on new configdata 2017-07-02 22:17:33 +02:00
Florian Bruhin
c2e75bf2fd Initial conversion to new config syntax 2017-07-02 22:17:33 +02:00
Florian Bruhin
938946c48b configdata: Add check for shadowing keys 2017-07-02 22:17:33 +02:00
Florian Bruhin
8b9b750f8f configdata: Rename some options for consistency 2017-07-02 22:17:33 +02:00
Florian Bruhin
52f6ea2525 Initial parsing 2017-07-02 22:17:33 +02:00
Florian Bruhin
f965805099 First setting renames 2017-07-02 22:17:33 +02:00
Florian Bruhin
836395cdb1 Add configdata.yml 2017-07-02 22:17:33 +02:00
Florian Bruhin
00c8d8da34 Initial stubbing out of a new config 2017-07-02 22:17:33 +02:00
Florian Bruhin
2f26490536 Remove FIXME 2017-07-02 14:03:38 +02:00
Jay Kamat
2fbadc46d2 Remove error when count is invalid to :tab-pin 2017-06-30 09:57:39 -07:00
Florian Bruhin
9cedaa60bc Check for PyQt5.QtQml in earlyinit 2017-06-30 14:56:02 +02:00
Florian Bruhin
e4a054d34e Stop marking QtWebEngine as experimental 2017-06-30 10:42:33 +02:00
Jay Kamat
596dee69d6
Clean up pin_tab
Also add a test case for :pin-tab with an invalid count
2017-06-29 20:04:02 -07:00
Ryan Roden-Corrent
c1f5e77fc6 Implement "Current" completion for bind.
When binding a key, the first row will be the current binding if the key
is already bound. This should make it easier for users to tell when they
are binding a key that is already bound, and what it is bound to.
2017-06-29 21:44:44 -04:00
Ryan Roden-Corrent
1e489325c4 Assert if index is invalid in delete_cur_item.
CompletionView already checks the index, so an error here shouldn't
happen.
2017-06-29 20:58:15 -04:00
Ryan Roden-Corrent
fd07c571e5 Store pattern in completion view, not model.
The pattern property is used for highlighting. It is purely
display-related, so it should be in the view rather than the model.
2017-06-29 20:56:39 -04:00
Ryan Roden-Corrent
c007f592b3 Use more intuitive argument order in sql.delete. 2017-06-29 20:43:42 -04:00
Florian Bruhin
d132b6ed71 Fix :scroll-page with --bottom-navigate on QtWebEngine
There were two issues here:

- The comparison was backwards, causing scroller.at_bottom() to always return
  true.
- When zoomed in, jsret['px']['y'] can be a float, which means we can be
  slightly off when checking the difference - math.ceil() fixes that.
2017-06-29 22:39:48 +02:00
Ryan Roden-Corrent
9c0c174534 Use builtin SortFilter regex functionality.
With the new completion API, we no longer need a custom filterAcceptsRow
function. This was necessary to handle the tree structure of the model,
but now we use a separate QSortFilterProxyModel for each category, so
the data it filters is flat. We can simplify the code by using the
builtin setFilterRegExp.

This changes the behavior a little, as now all list categories filter on
all columns. This should be beneficial if anything. For example, help
topics are now filtered on description in addition to name.

This also seems to slightly speed up filtering, according to the url
model benchmark.

Before:

----------------------------------------------- benchmark: 1 tests ----------------------------------------------
Name (time in s)                     Min     Max    Mean  StdDev  Median     IQR  Outliers(*)  Rounds  Iterations
-----------------------------------------------------------------------------------------------------------------
test_url_completion_benchmark     1.2806  1.3817  1.3195  0.0390  1.3068  0.0487          1;0       5           1
-----------------------------------------------------------------------------------------------------------------

After:

----------------------------------------------- benchmark: 1 tests ----------------------------------------------
Name (time in s)                     Min     Max    Mean  StdDev  Median     IQR  Outliers(*)  Rounds  Iterations
-----------------------------------------------------------------------------------------------------------------
test_url_completion_benchmark     1.1183  1.1508  1.1281  0.0132  1.1241  0.0142          1;0       5           1
-----------------------------------------------------------------------------------------------------------------
2017-06-29 12:44:02 -04:00
Jay Kamat
302961a86a
Refactor set_tab_pinned to take a tab widget.
See #2759
2017-06-28 22:22:33 -07:00
Florian Bruhin
f136f78802 Fix :undo documentation
See #2759
2017-06-28 22:41:08 +02:00
Jay Kamat
4d1dbe11e8
Prompt when closing a pinned tab via the mouse
Closes #2761
2017-06-27 19:03:13 -07:00
Ryan Roden-Corrent
6ac940fa32 Fix pylint/coverage errors.
Ensure 100% coverage for sqlcategory and history, and fix some linter
errors
2017-06-27 12:33:51 -04:00
Ryan Roden-Corrent
f06880c6e2 Fix history completion delete function.
In order to update SqlQueryModel's rowCount after re-running the query,
we must call setQuery again.
2017-06-27 08:42:10 -04:00
Iordanis Grigoriou
5e2be8a44a Fix PEP-8 issue 2017-06-27 08:25:59 +02:00
Iordanis Grigoriou
8a5b48d374 Add suggested_fn argument to get_request 2017-06-26 23:21:32 +02:00
Florian Bruhin
5ec94f96fd Allow a trailing % for :zoom 2017-06-26 21:51:35 +02:00
Florian Bruhin
92d5f6c41d Ignore _remove_tab for crashed deleted tabs 2017-06-26 20:50:17 +02:00
Florian Bruhin
24caaea54d Handle OSError in SessionManager.delete 2017-06-26 19:52:07 +02:00
Florian Bruhin
130be2aedc Handle OSError when trying to delete autosave session 2017-06-26 19:47:54 +02:00
Ryan Roden-Corrent
46161c3af0 Refactor delete_cur_item.
Taking the completion widget as an argument was overly complex.
The process now looks like:

1. CompletionView gets deletion request
2. CompletionView passes selected index to CompletionModel
3. CompletionModel passes the row data to the owning category
4. The category runs its custom completion function.

This also fixes a bug. With the switch to the hybrid (list/sql)
completion model, the view was no longer updating when items were
deleted. This fixes that by ensuring the correct signals are emitted.

The SQL model must be refreshed by running the query. We could try using
a SqlTableModel so we can call removeRows instead.

The test for deleting a url fails because qmodeltester claims the length
of the query model is still 3.
2017-06-26 08:57:36 -04:00
Iordanis Grigoriou
a24d7f6686 Use page title for filename with :download 2017-06-26 12:25:03 +02:00
Marius
df6b8b7ff5 Update tabwidget.py 2017-06-21 09:03:15 +02:00
Ryan Roden-Corrent
6080830a8b Fix outdated docstring and pylint error. 2017-06-20 22:25:09 -04:00
Ryan Roden-Corrent
b722cc1dec Pass invalid index to [can]FetchMore.
For QSqlQueryModel, the argument should always be an invalid index:
http://doc.qt.io/qt-5/qsqlquerymodel.html#canFetchMore

For a QStandardItemModel, it doesn't matter. Either way, passing the
top-level parent index was wrong.
2017-06-20 22:11:53 -04:00
Ryan Roden-Corrent
63cb88a0f4 Use _cat_from_index in completionmodel.data.
Keep all the category lookup inside _cat_from_idx for easier refactoring
if the organization ever changes.
2017-06-20 22:08:23 -04:00
Ryan Roden-Corrent
0f585eda4f Bring history.py back to 100% coverage.
The code of debug_dump_history was tweaked to handle a possible
OSException that can be thrown by open, which I noticed while trying to
test it.
2017-06-20 21:41:43 -04:00
Marius
f3a2b84033 remove space 2017-06-20 23:58:23 +02:00
Marius
dfedddf0bd Wrap scroll button workaround in try/except
for older pyqt5 versions (5.2.1)
2017-06-20 23:55:11 +02:00
Marius
6e166d139a Fix alignment of scroll buttons in tab bar 2017-06-20 21:18:13 +02:00
Florian Bruhin
096b0a7a37 Remove unused import 2017-06-20 15:03:42 +02:00
Florian Bruhin
750ef834dc Make PyOpenGL a required dependency
Looks like the "black screen" issue isn't the only thing going wrong, some
people even report segfaults since the vendor check was added.
2017-06-20 13:05:53 +02:00
Florian Bruhin
cf3c7266aa Make show_error keyword-only 2017-06-20 12:45:36 +02:00
Florian Bruhin
06d4a24bd1 Merge branch 'master' of https://github.com/iordanisg/qutebrowser 2017-06-20 12:45:21 +02:00
Florian Bruhin
038dcff4ba Ignore common URL issues while importing history
See #2646.

This ignores the "corrupted" Apple-lookalike URLs, comments and data: URLs.
2017-06-20 12:19:14 +02:00
Florian Bruhin
f838eb1bdc Use named formatting for queries in sql.py 2017-06-20 12:11:41 +02:00
Florian Bruhin
da875755d1 Add spaces after commas in SQL queries 2017-06-20 12:06:17 +02:00
Florian Bruhin
c1776bbf9d Add error message when query failed to prepare 2017-06-20 12:05:40 +02:00
Florian Bruhin
29ce1b3811 Add column order in SqlTable._insert_query
_insert_query gets called with a query and dict of values such as:

  {'val': 1, 'lucky': False, 'name': 'one'}

Via bindValues(), we only assign a placeholder in the query string to a value,
so we get a query with bindings like:

  INSERT INTO Foo values(:lucky,:val,:name)
  {':name': 'one', ':val': 1, ':lucky': False}

So what we're executing is something like:

  INSERT INTO Foo values(false,1,"one")

However, if the column order in the database doesn't happen to be the order
we're passing the values in, we get the wrong values in the wrong columns.

Instead, we now do:

  INSERT INTO Foo (lucky, val, name) values(false,1,"one")

Which inserts the values in the order we intended.

With Python 3.6, this just happened to work before because we always passed the
keyword arguments in the table column order, and in 3.6 dicts
(and thus **kwargs) happen to be ordered:
https://mail.python.org/pipermail/python-dev/2016-September/146327.html
2017-06-20 12:03:43 +02:00
Iordanis Grigoriou
f0ff02fcb2 Avoid throwing exception when no last focused tab exists 2017-06-19 15:48:17 +02:00
Florian Bruhin
7062f9e060 Update qt5-webkit-ng docs for Archlinux 2017-06-19 13:44:41 +02:00
Florian Bruhin
9f94f28181 Use :memory: for an in-memory database
Using an empty string for the same purpose only started working in some
recent-ish Qt/sqlite/? version, so using --version failed on Ubuntu Trusty.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
051d2665f3 Fix signal type error in CompletionView.
On Travis CI we are sometimes seeing:

```
CompletionView.selection_changed[str].emit():
argument 1 has unexpected type 'int'
```

Cast the data to a string before emitting it just to be safe.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
891a6bcf14 Fix flake8 errors 2017-06-19 07:44:11 -04:00