App::Link: the big merge

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
user1234
Posts: 188
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Tue Aug 20, 2019 1:14 am

I will it sync tomorrow and make a screencast of that i touch all links objects. I found a software to edit the *.webm. Else it would be too long to attach.
I would send you the files, but it is too large to attach. I also have no cloud or something else (i hate that stuff). But i could send it per mail. If you sent me a e-mail adress per pm (if you trust me), i would send it.

By the way.
When it recompute the assembly, the keybord does not work, the mouse some parts of it. When try to type something or make mouse actions in other windows and when it is finnshed with recomputing, FreeCAD crashes. This is maybe Qt related.

Code: Select all

Err: Program received signal SIGSEGV, Segmentation fault.
Err: #0  /lib/x86_64-linux-gnu/libc.so.6(+0x37840) [0x7fdee3800840]
Err: #1  0x7fdee4b2453b in QWidget::hasFocus() const from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0xb
Err: #2  0x7fdee4d4dd06 in QAbstractItemView::closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x66
Err: #3  0x7fdee7878ed1 in Gui::PropertyEditor::PropertyEditor::closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint) from /home/pc/Programs/FreeCAD/lib/libFreeCADGui.so+0x491
Err: #4  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x3aabf6) [0x7fdee4d48bf6]
Err: #5  0x7fdee41a9906 in QMetaObject::activate(QObject*, int, int, void**) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x766
Err: #6  0x7fdee4d63440 in QAbstractItemDelegate::closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x50
Err: #7  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x3c5991) [0x7fdee4d63991]
Err: #8  0x7fdee41802bb in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x9b
Err: #9  0x7fdee4afd4a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x71
Err: #10  0x7fdee4b04950 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x210
Err: #11  0x7fdee767b878 in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD/lib/libFreeCADGui.so+0x68
Err: #12  0x7fdee41805a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
Err: #13  0x7fdee4b02539 in QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x169
Err: #14  0x7fdee4b3582e in QWidget::setFocus(Qt::FocusReason) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x12e
Err: #15  0x7fdee4b362a8 in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x138
Err: #16  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #17  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #18  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #19  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #20  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #21  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #22  0x7fdee4d4fcf5 in QAbstractItemView::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x45
Err: #23  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #24  0x7fdee4b361ba in QWidget::focusNextPrevChild(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x4a
Err: #25  0x7fdee4b36671 in QWidgetPrivate::hide_helper() from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x141
Err: #26  0x7fdee4b3b308 in QWidget::setVisible(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x3a8
Err: #27  0x7fdee4b3690a in QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x16a
Err: #28  /home/pc/Programs/FreeCAD/lib/libFreeCADGui.so(+0x71397b) [0x7fdee789a97b]
Err: #29  0x7fdee41a9906 in QMetaObject::activate(QObject*, int, int, void**) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x766
Err: #30  0x7fdee4d63440 in QAbstractItemDelegate::closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x50
Err: #31  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x3c62c8) [0x7fdee4d642c8]
Err: #32  0x7fdee41aa182 in QObject::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0xe2
Err: #33  0x7fdee4afd4b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x81
Err: #34  0x7fdee4b04950 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x210
Err: #35  0x7fdee767b878 in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD/lib/libFreeCADGui.so+0x68
Err: #36  0x7fdee41805a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
Err: #37  0x7fdee418359b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x1cb
Err: #38  /lib/x86_64-linux-gnu/libQt5Core.so.5(+0x2bc233) [0x7fdee41d2233]
Err: #39  /lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_dispatch+0x2ae) [0x7fdee0c42f2e]
Err: #40  /lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x4e1c8) [0x7fdee0c431c8]
Err: #41  /lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7fdee0c4325c]
Err: #42  0x7fdee41d1863 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x63
Err: #43  /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5(+0xdd3e1) [0x7fdede6e43e1]
Err: #44  0x7fdee417f27b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x13b
Err: #45  0x7fdee4187262 in QCoreApplication::exec() from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x92
Err: #46  0x7fdee760690e in Gui::Application::runApplication() from /home/pc/Programs/FreeCAD/lib/libFreeCADGui.so+0x149e
Err: #47  /home/pc/Programs/FreeCAD/bin/FreeCAD(main+0x63b) [0x5637ed4d470b]
Err: #48  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7fdee37ed09b]
Err: #49  /home/pc/Programs/FreeCAD/bin/FreeCAD(_start+0x2a) [0x5637ed4d4a7a]
Greetings
user
realthunder
Posts: 1214
Joined: Tue Jan 03, 2017 10:55 am

Re: App::Link: the big merge

Postby realthunder » Tue Aug 20, 2019 1:22 am

user1234 wrote:
Tue Aug 20, 2019 1:14 am
I will it sync tomorrow and make a screencast of that i touch all links objects. I found a software to edit the *.webm. Else it would be too long to attach.
I would send you the files, but it is too large to attach. I also have no cloud or something else (i hate that stuff). But i could send it per mail. If you sent me a e-mail adress per pm (if you trust me), i would send it.
I couldn't pm you. It seems that you have disabled your pm? Can you check your account settings?
Try Assembly3 (latest version 0.10.2) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
user1234
Posts: 188
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Tue Aug 20, 2019 1:29 am

Done!
toralf
Posts: 29
Joined: Fri May 03, 2019 3:54 am

Re: App::Link: the big merge

Postby toralf » Tue Aug 20, 2019 6:40 am

user1234 wrote:
Tue Aug 20, 2019 1:14 am
I found a software to edit the *.webm. Else it would be too long to attach.
just a suggestion to achieve small video files: you could consider Gifcam. I use it quite frequently, the files it creates are tiny in size.
triplus
Posts: 8761
Joined: Mon Dec 12, 2011 4:45 pm

Re: App::Link: the big merge

Postby triplus » Tue Aug 20, 2019 1:12 pm

bernd wrote:
Sun Aug 18, 2019 2:17 pm
finally it is merged :D Compiles and runs on my Debian Buster, unit tests run fine. :D

I have no problems so far. But I have used FC only for an hour. Ahh and I did not do something related to this Link. I even do not know what it is about :oops:
Image
user1234
Posts: 188
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Tue Aug 20, 2019 7:01 pm

Hello!
realthunder wrote:
So i sync the branch and recompile it git commit 4d29cff33d58b9650c7da0b962bdb41f86a44e0 . Now FreeCAD crashes everytime when i do something other while waiting of recompute.

Code: Select all

Program received signal SIGSEGV, Segmentation fault.
#0  /lib/x86_64-linux-gnu/libc.so.6(+0x37840) [0x7fcc20a3b840]
#1  0x7fcc21d5f53b in QWidget::hasFocus() const from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0xb
#2  0x7fcc21f88d06 in QAbstractItemView::closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x66
#3  0x7fcc26086feb in Gui::PropertyEditor::PropertyEditor::closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x241
#4  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x3aabf6) [0x7fcc21f83bf6]
#5  0x7fcc213e4906 in QMetaObject::activate(QObject*, int, int, void**) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x766
#6  0x7fcc21f9e440 in QAbstractItemDelegate::closeEditor(QWidget*, QAbstractItemDelegate::EndEditHint) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x50
#7  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x3c62c8) [0x7fcc21f9f2c8]
#8  0x7fcc213e5182 in QObject::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0xe2
#9  0x7fcc21d384b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x81
#10  0x7fcc21d3f950 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x210
#11  0x7fcc25d81339 in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xff
#12  0x7fcc213bb5a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
#13  0x7fcc213be59b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x1cb
#14  /lib/x86_64-linux-gnu/libQt5Core.so.5(+0x2bc233) [0x7fcc2140d233]
#15  /lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_dispatch+0x2ae) [0x7fcc1de7df2e]
#16  /lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x4e1c8) [0x7fcc1de7e1c8]
#17  /lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7fcc1de7e25c]
#18  0x7fcc2140c863 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x63
#19  /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5(+0xdd3e1) [0x7fcc1b8fd3e1]
#20  0x7fcc213ba27b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x13b
#21  0x7fcc213c2262 in QCoreApplication::exec() from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x92
#22  0x7fcc25c6e9fb in Gui::Application::runApplication() from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x228f
#23  ./FreeCAD(main+0xae7) [0x561a804690d6]
#24  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7fcc20a2809b]
#25  ./FreeCAD(_start+0x2a) [0x561a804684ba]
I found a new an other new behavior. But this was also in the master branch yesterday.
Normally i was in the assembly, i right clicked the part, which i wanted to link (in an other file), make a simple link, and then the inks was in the assembly. Now (i do not know the reason why) the part, which i want to assemble gets the focus and the link is in the file of the part. But this issue is absolute minor.
Screencast:
_behavior_link_in_assembly.webm
(351.76 KiB) Downloaded 19 times

About the retouches, here is a screencast. It also catches the faulty array behavior. Then i do two times undo (then it is as in original state) and then one undone undo, then is is ok.
Screencast:
_time_property_change.webm
(925.56 KiB) Downloaded 24 times

I hope with the CAD model you can do anything. fyi: this is a 2.2kW SK30 spindle, if you want to rebuilt it. But it is not finished yet ..... .

All done with:

Code: Select all

OS: Debian GNU/Linux 10 (buster) (X-Cinnamon/lightdm-xsession)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.Unknown
Build type: DebWithRelInfo
Python version: 3.7.3
Qt version: 5.11.3
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)
with LinkMerge Branch git commit 4d29cff33d58b9650c7da0b962bdb41f86a44e0

Greetings
user
user1234
Posts: 188
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Tue Aug 20, 2019 8:18 pm

Here is a screencast about the refreshing error on a real model. Here i am pressing the springs in the right tension from the the model i edited (the original model has pressing zero). But the links do not refreshing the model except the prehighlighting in the tree. When i close FreeCAD and reopen the model, than all is right.
Screencast:
_refresh_error.webm
(95.07 KiB) Downloaded 34 times

Greetings
user
realthunder
Posts: 1214
Joined: Tue Jan 03, 2017 10:55 am

Re: App::Link: the big merge

Postby realthunder » Thu Aug 22, 2019 11:01 am

user1234 wrote:
Tue Aug 20, 2019 7:01 pm
So i sync the branch and recompile it git commit 4d29cff33d58b9650c7da0b962bdb41f86a44e0 . Now FreeCAD crashes everytime when i do something other while waiting of recompute.
Please sync my LinkMerge branch and try again. I've fixed recompute crash problem. The recompute touch problem you've experienced is caused by two bugs in Datum and TechDraw objects which I've fixed also. Anything showing red in the report view indicates something is wrong and should not be overlooked.

There is one suggestion. The current TechDraw workbench seems to have many problems, causing slow down in document loading and recomputing. I'll propose some fix later when I have time. But even with the fix, I would suggest you to move the drawing out of the assembly. It will greatly speed up things, especially so If your workflow has any distinctive phases, say working on assembly exclusively for some time, then working on drawings some more, and so on.

When you put the drawing inside a part container, everytime the part is updated (e.g. moved), it has too recompute all its children first, including the drawings. TechDraw update takes time, lots of time if comparing to mere placement updates in links and parts. It would be better if you put drawing in its own document, and use link to bring in any necessary parts. This way, when you modify your main assembly, and hit that recompute button, the drawing document won't get updated, because the assembly does not depend on the drawings. It is the other way round, and it should be.
Try Assembly3 (latest version 0.10.2) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
user1234
Posts: 188
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Thu Aug 22, 2019 7:58 pm

Hello!
realthunder wrote:
Thu Aug 22, 2019 11:01 am
Please sync my LinkMerge branch and try again. I've fixed recompute crash problem.
Done. I worked with that approximate 1.5 hour and made some tests. I did extreme mouseclicking and typing in other windows while recomputing --> no chrash. So i think that is solved. But while recomputing, the keyboard and mouse also do not work properly. But this is not only in link containing file, this is in general. But i do not know if this was before. Also when you open an assembly (link containing file), it recomputes all. But i think this is TechDraw related. But it touches not the file.

Also when you make a link from a part in an assembly, this is now fast as hell. Also when you place a link part with placement, it does not recompute the original file. That is fine. I think this issue you have also solved.

I think that is worth to make a pull request on the master, because this speeds up many things.

realthunder wrote:
Thu Aug 22, 2019 11:01 am
The current TechDraw workbench seems to have many problems, causing slow down in document loading and recomputing.
I saw that. When i load a part file with a drawing inside (but do not click on the drawing), it does not recompute 3D part, but the drawing. But the file is not touched. Once i click on the drawing, the file is touched. This make no sense, but i think that was never link related. I can make a screencast about that, if you want (but i think you know the behavior).

realthunder wrote:
Thu Aug 22, 2019 11:01 am
When you put the drawing inside a part container, everytime the part is updated (e.g. moved), it has too recompute all its children first, including the drawings. TechDraw update takes time, lots of time if comparing to mere placement updates in links and parts. It would be better if you put drawing in its own document, and use link to bring in any necessary parts. This way, when you modify your main assembly, and hit that recompute button, the drawing document won't get updated, because the assembly does not depend on the drawings. It is the other way round, and it should be.
I thought the same.

Code: Select all


Assembly  <---Link from Part---  Part  ---Link from Part--->  Drawing

_workflow.png
_workflow.png (144.88 KiB) Viewed 482 times
test.tar.gz
(46.58 KiB) Downloaded 17 times
This have defintly pros and cons. To make more overview i think it should be possible to make something like an assembly file or a drawing file with different file extensions.

By the way, one suggestion. For examle my assembly (spindle) is now ready and i want to assembly this in a parent assembly. Now FreeCAD has part containers, i think with link, we need assembly containers with these links. I do not know how the core developers think about that.

All in one this all working fine.

realthunder wrote:
Thu Aug 22, 2019 11:01 am
Anything showing red in the report view indicates something is wrong and should not be overlooked.
Yes, i think you are referring about the radius in the drawing. Because of the selection bug, i was not able to delete it. But you solved this and now i was able to delete it. Now this is ok. Other red warnings or tracebacks i only report when the are reproducible. For example i got now this three in a row,

Code: Select all

Traceback (most recent call last):
  File "<string>", line 2, in <module>
<class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: 'NoneType' object has no attribute 'setActiveObject'
Traceback (most recent call last):
  File "<string>", line 2, in <module>
<class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: 'NoneType' object has no attribute 'setActiveObject'
Traceback (most recent call last):
  File "<string>", line 2, in <module>
<class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: 'NoneType' object has no attribute 'setActiveObject'
or this,

Code: Select all

['Fillet053', 'Chamfer078']
[]
[]
[]
but have no idea how i get them. Also there are more small bug for example in the expressions. But there are minor, because expressions are working. And all bugfixing, what you do perfectly, should be done step by step.


Also the testfile above still have the update issue. When you open it and you change something in the sketch, the updates does no work correct. But i think that is only a graphical issue.
_update_issue.webm
(280.78 KiB) Downloaded 15 times

All done with:

Code: Select all

OS: Debian GNU/Linux 10 (buster) (X-Cinnamon/lightdm-xsession)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.Unknown
Build type: DebWithRelInfo
Python version: 3.7.3
Qt version: 5.11.3
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)
git commit 5280f89f9aa46eac0b6956bc3b3485700d3c7582 in your Link merge branch.
https://github.com/realthunder/FreeCAD/tree/LinkMerge


Thank you for your hard work.

Greetings
user
realthunder
Posts: 1214
Joined: Tue Jan 03, 2017 10:55 am

Re: App::Link: the big merge

Postby realthunder » Fri Aug 23, 2019 8:48 am

user1234 wrote:
Thu Aug 22, 2019 7:58 pm
But while recomputing, the keyboard and mouse also do not work properly. But this is not only in link containing file, this is in general. But i do not know if this was before.
Well, before the merge, recompute will freeze the application until all is finished. What I have changed now is to show a progress bar while recomputing, and the user can abort it, by pressing the 'ESC' key. Other key or mouse press are ignored. The abortion is not very responsive, due to the nature of recomputing. It only checks for abortion after finish recomputing one object, so is GUI update. In other words, the application can still freeze if some object takes a long time to recompute.

Oh, I just remember that you mentioned trouble creating external link because of the view switching. One way is to select the source object in its document first, switch to the target document by clicking the tab under the 3D view, then click make link button. I have exposed the link button to the global toolbar for convenience, as shown in the picture below. BTW, the auto view switching function can be disabled entirely. Just unselect the 'Sync view' option, also shown below.
Screenshot from 2019-08-23 11-09-20.png
Screenshot from 2019-08-23 11-09-20.png (36.81 KiB) Viewed 416 times

By the way, one suggestion. For examle my assembly (spindle) is now ready and i want to assembly this in a parent assembly. Now FreeCAD has part containers, i think with link, we need assembly containers with these links. I do not know how the core developers think about that.
I will be changing the behavior of the part container soon, including this auto link behavior.

<class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
Unhandled Base::Exception caught in GUIApplication::notify.
Did this happen when you edit some datum? If so it should have been fixed. Please sync my branch.

Also the testfile above still have the update issue. When you open it and you change something in the sketch, the updates does no work correct. But i think that is only a graphical issue.
_update_issue.webm
It's fixed, please sync my branch.
Try Assembly3 (latest version 0.10.2) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal