Commit graph

151 commits

Author SHA1 Message Date
TheJackiMonster 9f6b65aaca Fixed bugs caused by parallel access during multithreading 2020-01-06 11:16:02 -07:00
luz.paz 2fd45dc42c Fix misc. typos
Found via `codespell -q 3 -S *.ts,./libs,./sample-projects -L searchin`
2019-09-19 09:58:24 -06:00
Jan Wester d626d3ba75 Fixed & robustified image tooltips (issue #593)
Last time I touched this code, I went in looking for a specific problem,
and came out with a fix specific to that issue. That fix was not wrong,
yet it hardly covered all the problems present in the code once one took
into account issues like:

- local vs remote resources,
- relative vs absolute paths,
- different operating systems behaving differently, and
- Qt being uniquely buggy on different platforms.

The major part of it was fixed by using QUrl.fromUserInput(), which does
the exact kind of auto-detection for the nature of the resource that we
were in need of.

The rest of the issues were fixed by creating a number of test cases and
fixing problems as they popped up. Testing was done in Windows & Ubunty
against the above-mentioned test cases, which can be found in PR #629.

Regarding ImageTooltip.supportedSchemes

When QUrl.fromUserInput() misidentifies the scheme on Linux, it causes
all resemblance between the original request and the reply.request() in
the finished() signal to be lost, which results in this item getting
stuck in the ImageTooltip processing pipeline.

Limiting the supported schemes to the ones most commonly encountered
('file', 'http', 'https' and the schema-less local paths) is the only
reliable method I have found to work around this particular bug in Qt.
2019-09-10 11:30:35 -06:00
Jan Wester 12390a9aab Fix occasional crashes when (re)moving items
Describing all the rabbitholes that I and kakaroto have gone through
while debugging this one until dawn can frankly not do enough justice to
the crazy amount of rubberducking that went on while trying to fix this.

This bug would be triggered whenever you had a document open in the
editor and then moved an ancestor object downwards (visually) in the tree.
Or when you simply deleted the ancestor. Depending on the exact method
that caused the opened item to be removed from the internal model, the
exact nature of the bug would vary, which means this commit fixes a few
different bits of code that lead to what appears to be the same bug.

In order of appearance, the bugs that ruined our sleep were:

1) The editor widget was trying to handle the removed item at too late a
stage.

2) The editor widget tried to fix its view after a move by searching for
the new item with the same ID, but in the case of moving an object down
it came across its own old item, ruining the attempt.

3) The editor widget did not properly account for the hierarchical
nature of the model.

Upon fixing these the next day, it was revealed that:

4) The outlineItem.updateWordCount(emit=False) flag is broken. This
function would call setData() in several spots which would still cause
emits to bubble through the system despite emit=False, and we simply got
lucky that it stopped enough of them until now.

This last one was caused by a small mistake in the fixes for the first
three bugs, but it has led to a couple of extra changes to make any
future bug hunts slightly less arduous and frustrating:

a) When calling item.removeChild(c), it now resets the associated parent
and model to mirror item.insertChild(c). This has also led to an extra
check in model.parent() to check for its validity.

b) The outlineItem.updateWordCount(emit=) flag has been removed entirely
and it now emits away with reckless abandon. I have been unable to
reproduce the crashes the code warned about, so I consider this a code
quality fix to prevent mysterious future issues where things sometimes
do not properly update right.

Worthy of note is that the original code clearly showed the intention to
close tabs for items that were removed. Reworking the editor to support
closing a tab is unfortunately way out of scope, so this intention was
left in and the new fix was structured to make it trivial to implement
such a change when the time comes. An existing FIXME regarding unrelated
buggy editor behaviour was left in, too.

Many thanks to Kakaroto for burning the midnight oil with me to get to
the bottom of this. (I learned a lot that night!)

Issues #479, #516 and #559 are fixed by this commit. And maybe some others,
too.
2019-05-19 09:33:19 -06:00
Youness Alaoui 5c33ce54f3 spellcheck: show 'add to dictionary' even if a word has no suggestions 2019-04-30 09:54:31 -06:00
Youness Alaoui d0f02cb2a7 Add a Spellchecker abstraction layer and clean up code
This is in preparation for adding support for additional spellchecking libraries
other than PyEnchant which seems to be unmaintained and does not build in
Windows 64 bit.
2019-04-30 09:54:31 -06:00
Jan Wester 0238ccec7b Fixed #549 and refactored the image tooltip also
Issue #549 was caused because the request and reply object urls are not
guaranteed to be the same. Redirects are the most common cause, but a
malformed URL apparently also qualifies. We now make sure to look at the
original request.

Because the code confused me while I was working on it, I decided to
refactor and document it in order to understand what was going on. I am
glad I did: I found another crashing bug involving the rapid-firing of
tooltip requests, and the processing dict never had its entries removed
either, leading to a (very slow) memory leak over time.

All is good in the world of image tooltips now.
2019-04-23 12:25:39 -06:00
Youness Alaoui 3f217257c4 Fix background of popup menus that was transparent (black)
In the properties view, the context menu on the title line would be black
making its content unreadable. Same in the filter line of the "Set Custom icon"
window on the outline's context menu.
2019-02-27 10:49:05 -07:00
Youness Alaoui 7928ea2796 Fix corkView background image on Windows
Windows path to the image has '\' path separator instead of '/' which makes
the stylesheet fail. Background images don't appear and console gets spammed with :
Could not parse stylesheet of object corkView(0x27248eb6900, name = "corkView")
2019-02-26 13:25:30 -07:00
Youness Alaoui c3c9eef415 Do not default spellcheck to True for new editor views
default spellcheck to the settings value instead. Otherwise any new editor tab
will have spellcheck enabled regardless of setting.

Fixes #474
2019-02-25 12:58:00 -07:00
Youness Alaoui 9b774d327f Fix crash when right clicking a word in editor and enchant is not installed. 2019-02-11 12:35:23 -07:00
Curtis Gedak 7f592bae41 Fix Python 3.6 DeprecationWarning invalid escape sequence messages
Fix by ensuring that regular expressions are constructed using either
raw string literals [1] or double backslashes [2].

[1] https://stackoverflow.com/questions/44325948/pandas-invalid-escape-sequence-after-update
[2] https://github.com/joblib/joblib/pull/526

Note that python only shows the deprecation warnings on initial run [3].

[3] https://bugs.python.org/issue30091

To work around this issue, remove the cached bytecode with:

    find . -name "__pycache__" -exec rm -rf {} \;

Then to prevent compiling to bytecode add the "-B" option to python:

    python3 -B -m pytest -vs
2018-11-16 12:52:56 -07:00
RiderExMachina 41e9467267 Fix crash in Outline mode with multi-item select #355
Closes issue #355 and pull request #385
2018-10-14 11:10:46 -06:00
Windspar 67db180c25 Fixes #217 - segfault when pasting text with focus mode enabled 2018-03-08 11:19:25 -07:00
JackXVII d3afa11ceb Remove _updateIndexFromID from textEditView
It is not used anymore.
2018-03-03 12:53:52 -07:00
JackXVII 3a21ddd137 Use QPersistentModelIndex in textEditView
It is much simpler than catching rowsAboutToBeDeleted signal from model. Also
it fixes #306.
2018-03-03 12:53:52 -07:00
Curtis Gedak 43c077552a Avoid crash on spellcheck by ensuring enchant dictionary exists
See issue #273.
2018-02-12 10:59:14 -07:00
Sebastian Rasmussen dde836e0f4 Fix typos that are visible to end-users. 2018-01-29 10:30:41 -07:00
Sebastian Rasmussen dfe88a9681 Fix typos in code comments, invisible to end-users. 2018-01-29 10:30:41 -07:00
Olivier Keshavjee 19f8938852 Corrects bug in links tooltips 2017-12-15 20:12:51 +01:00
Olivier Keshavjee a6a82d1bba Clickable links: adds tip to tooltip 2017-12-14 15:06:51 +01:00
Olivier Keshavjee cd8ad6cc3a Adds: clickable links, and display images as tooltips (#22, #215) 2017-12-14 14:55:14 +01:00
Olivier Keshavjee e76b9b4a1c Another take on status bar (#262) 2017-12-08 10:20:33 +01:00
Olivier Keshavjee 1764baf292 Fixes a bug introduced when fixing #261 2017-12-06 18:53:42 +01:00
Olivier Keshavjee d521fc0771 Fixes #261: Manuskript response slow with recent addition of focus mode 2017-12-06 18:41:26 +01:00
Olivier Keshavjee 46384b68eb Fixes bugs in focus mode (#259) 2017-12-05 23:45:16 +01:00
Olivier Keshavjee 826d53933f Adds #259: Focus Mode (poke #234) 2017-12-05 23:18:32 +01:00
Olivier Keshavjee 25911876eb Fixes #246: Index card status can spillover 2017-12-04 13:52:58 +01:00
Olivier Keshavjee 9cbd8887c7 Fixes #240: Cannot write a summary on a plot resolution step 2017-12-04 13:27:57 +01:00
Olivier Keshavjee 92e5c351b7 Adds: smart formatting on keypress 2017-11-30 13:21:40 +01:00
Olivier Keshavjee f3156f5bbd Adds formatting support to MDEditView 2017-11-30 13:12:55 +01:00
Olivier Keshavjee 3527f4ad8a Merge branch 'master' into develop 2017-11-30 10:13:25 +01:00
Olivier Keshavjee d32ee37e84 Hopefully last tweaks in context menu (#229) and optimization 2017-11-29 23:16:01 +01:00
Olivier Keshavjee 82c24498bb Tweaks Context menu to mirror Edit menu #229 2017-11-29 10:24:07 +01:00
Olivier Keshavjee c504cb510e Fixes fullScreen scrollbar range 2017-11-28 19:58:23 +01:00
Olivier Keshavjee 2b1465a1f3 Adds #175: Typewriter scrolling 2017-11-28 10:26:43 +01:00
Olivier Keshavjee b97cbdc1c3 Fixes a bug: click in treeview background does not deselect any more 2017-11-27 22:41:44 +01:00
Olivier Keshavjee cb79e504e7 Merge branch 'master' into develop 2017-11-27 21:53:37 +01:00
Olivier Keshavjee c2dcbf56a0 Adds new markdown highlighter and many little tweaks 2017-11-27 21:35:32 +01:00
Olivier Keshavjee 9baea11791 Fixes FullScreenEditor with MDEditView 2017-11-27 21:13:44 +01:00
Olivier Keshavjee 7b29d332c5 Removes textFormat panel (bold, italic, etc. buttons) 2017-11-27 20:58:02 +01:00
Olivier Keshavjee c1ad771642 Subclass textEditView 2017-11-27 15:00:07 +01:00
Olivier Keshavjee d27ce4dec6 Fixes #232: Add markdown support of other tabs 2017-11-25 14:58:15 +01:00
Olivier Keshavjee 7940cdb336 Adds better fullscreen theme color integration 2017-11-25 14:17:49 +01:00
Olivier Keshavjee 59742accfa Moves textedit scrollbar outside the margins 2017-11-24 22:33:12 +01:00
Olivier Keshavjee 52af71757e Adds: better harmonization between Documents menu and context menu #229 2017-11-24 20:50:18 +01:00
Olivier Keshavjee 66f09729b5 Adds duplicate in contexte menu, and fixes a bug in it #229 2017-11-24 18:44:31 +01:00
Olivier Keshavjee 0f49bc7517 Adds #206: Adjusting font size (CTRL+MouseWheelUp/Down) 2017-11-23 18:53:40 +01:00
Olivier Keshavjee c4d4f61702 Fixes highlighter colors, should work in most themes 2017-11-23 18:14:04 +01:00
Olivier Keshavjee 64994cde3a Adds: unit tests and starts refactoring models 2017-11-23 11:03:14 +01:00