Commit Graph

21621 Commits

Author SHA1 Message Date
wmayer
03af87337a [skip ci] code cleanup 2020-06-14 16:24:14 +02:00
wmayer
b9e79be0a7 Sketcher: [skip ci] add security checks before accessing pointer 2020-06-14 16:23:16 +02:00
Abdullah Tahiri
a0dcc8caf0 TaskDlgEditSketch: Remove unnecessary recompute
===============================================

On Undo/Redo there should not be an unconditional recompute.

The need for this recompute is probably related to the fact that PropertyConstraintList
has invalid geometry keys.
2020-06-14 14:44:28 +02:00
Abdullah Tahiri
ee9eb741b4 Sketcher: ViewProviderSketch delay updateData on undo/redo transactions
=======================================================================

On App:Document::undo, applchn is called on every transactional object (e.g. properties) affected, which
calls Paste on the property.

Each of the properties of SketchObject cause a call to SketchObject::OnChanged, and App::DocumentObject::OnChanged, the latter
calling onChangeProperty, which signals the viewprovider from Gui::Document::slotChangedObject via ViewProviderSketch::updateData.

This causes that the ViewProvider is updated when Constraints and Geometry indexes are not matching.

The solution proposed has three parts:
1. First, at ViewProvider::updateData update is prevented while undo/redo transaction is performed by checking isPerformingTransaction()
2. Second, the onUndoRedoFinished() mechanism of SketchObject causes the call of updateData when it solves the sketch (and sets the solved geometry)
3. Third, Gui::Document::signalUndoDocument and Gui::Document::signalRedoDocument (via the slots in ViewProviderSketch) are
used to perform the recompute of the ViewProvider when the undo/redo transaction is finished if needed.
2020-06-14 14:44:28 +02:00
Abdullah Tahiri
b08aa0d0e9 Sketcher: onUndoRedoFinished implementation and request
=======================================================

The sketchobject is now left in a known status after undo/redo transaction
2020-06-14 14:44:28 +02:00
Abdullah Tahiri
94fda2ec89 Document/DocumentObject: onUndoRedoFinished()
=============================================

New mechanism for on-demand signaling of undo/redo transaction finalisation.

The mechanism consists of:
1) A status bit that is set, when an object should receive this signaling (e.g. because changes during transaction have been inhibited)
2) The new function to be called by the Document undo/redo actions when the transaction is over (for those objects having the status bit set).

Note 1: The undo/redo signals are now outside the undoing FlagToggler, this means that:
1) a call to isPerformingTransaction will return false.
2) a recompute the slot of such a signal will not be inhibited.

Note 2: The undo/redo signals are called once the documentobjects that requested to be notified after the trasaction is over have been notified.
The consequence is that the viewprovider can rely on the documentobject having a correct status.

I think that the behaviour of Note and Note 2 is the wanted behaviour of this signals, I cannot rule out that other parts of FC rely on the old
implementation.
2020-06-14 14:44:28 +02:00
donovaly
1fa5d3759c [TD] use KeyboardTracking for section view dialog
use the keyboardTracking feature as we now also do for the detail view dialog
2020-06-14 06:47:37 -04:00
donovaly
e55d522970 [TD] remove hatch property DirProjection
as discussed in https://forum.freecadweb.org/viewtopic.php?f=35&t=47536&p=408075#p407904
the property DirProjection can go.
2020-06-13 20:45:31 -04:00
donovaly
ade9a9b34d DlgPrefsTechDrawGeneral.ui: get rid of explicit font family
this is unnecessary since Qt will automatically use the available font. It only raises questions since one see in the commit diffs that depending on who modified the dialog, his system default font will appear. (like in the initial commit of this PR)
2020-06-13 20:44:57 -04:00
donovaly
99d5adbc5e [TD] some wording fixes
- I had a look at Crowdin and saw that the translators don't know what to do with the uppercase letter words. And in fact we can use "normal" terms
- I also fixed a typo (missing 'd') to be consistent
2020-06-13 20:44:57 -04:00
donovaly
b3a6b22308 code simplification 2020-06-13 09:46:20 -04:00
donovaly
da4be69493 [TD] fix hatch color issue
as discussed: https://forum.freecadweb.org/viewtopic.php?f=35&t=47536&p=407916#p407916
there are 2 types of SVG declarations possible
2020-06-13 09:46:20 -04:00
wmayer
dc05aeef4a Gui: [skip ci] add missing include to precompiled header 2020-06-13 12:22:47 +02:00
wmayer
2799f553a1 Py2: fix Python 2 build failure 2020-06-12 17:51:33 +02:00
wmayer
47b862bbd9 boost 1.73.0: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated 2020-06-12 17:51:33 +02:00
wmayer
2571b8591c cast between incompatible function types from 'PyObject* (*)(PyObject*, PyObject*, PyObject*)' {aka '_object* (*)(_object*, _object*, _object*)'} to 'PyCFunction' {aka '_object* (*)(_object*, _object*)'} [-Wcast-function-type] 2020-06-12 17:51:33 +02:00
wmayer
29fb43110b replace use of deprecated function ftime with gettimeofday 2020-06-12 17:51:33 +02:00
wmayer
8b5e05d1dc Fix -Wdeprecated-copy 2020-06-12 17:51:33 +02:00
wmayer
a455927d4a Qt5: Replace deprecated functions of QString:
'QString& QString::vsprintf(const char*, __va_list_tag*)' is deprecated: Use vasprintf(), arg() or QTextStream instead [-Wdeprecated-declarations]
'QString& QString::sprintf(const char*, ...)' is deprecated: Use asprintf(), arg() or QTextStream instead [-Wdeprecated-declarations]
2020-06-12 17:51:33 +02:00
wmayer
aefd5e2358 Qt5: 'void Q[Plain]TextEdit::setTabStopWidth(int)' is deprecated [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
98b1116424 Qt5: QDialog extension/orientation is deprecated [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
e00ff1d78d Qt5: 'void QFileDialog::setNameFilterDetailsVisible(bool)' is deprecated: Use setOption(HideNameFilterDetails, not enabled) instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
2641746808 Qt5: 'void QFileDialog::setConfirmOverwrite(bool)' is deprecated: Use setOption(DontConfirmOverwrite, not enabled) instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
d456b1021e Qt5: 'QVariant qVariantFromValue(const T&)' is deprecated: Use QVariant::fromValue() instead. [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
cff0638672 Qt5: QDesktopWidget is deprecated use QScreen [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
ed8a5f2ba7 Qt5: 'QModelIndex QModelIndex::child(int, int) const' is deprecated: Use QAbstractItemModel::index [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
c8dae9eb85 Qt5: 'void QTime::start()' / 'int QTime::elapsed() const' / 'int QTime::restart()' are deprecated: Use QElapsedTimer instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
8dbe26a95f Qt5: 'int QFontMetrics::width' is deprecated since Qt 5.11: Use QFontMetrics::horizontalAdvance [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
0f60598964 boost: remove broken define that causes a warning: ISO C++11 requires whitespace after the macro name 2020-06-12 17:51:33 +02:00
wmayer
730154a684 boost 1.73.0: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated 2020-06-12 17:51:33 +02:00
wmayer
88fd77b31d Porting Py3.8/Py3.9:
Since Py3.3: 'Py_ssize_t PyUnicode_GetSize(PyObject*)' is deprecated [-Wdeprecated-declarations]
Since Py3.9: 'PyObject* PyEval_CallObjectWithKeywords(PyObject*, PyObject*, PyObject*)' is deprecated [-Wdeprecated-declarations]
Since Py3.9: 'void PyEval_InitThreads()' is deprecated [-Wdeprecated-declarations]
2020-06-12 17:51:33 +02:00
wmayer
867adbe1b5 Py3.8: [skip ci] missing initializer for member '_typeobject::tp_vectorcall' [-Wmissing-field-initializers] 2020-06-12 17:51:33 +02:00
wmayer
c319cf169d Py3.8: [skip ci] missing initializer for member '_typeobject::tp_vectorcall' [-Wmissing-field-initializers] 2020-06-12 17:51:33 +02:00
wmayer
40dc3ccedd Qt5: 'QString QFileInfo::readLink() const' is deprecated: Use QFileInfo::symLinkTarget() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
14aa5a602b Qt5: 'static QPixmap QPixmap::grabWidget(QObject*, const QRect&)' is deprecated: Use QWidget::grab() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
9ed9d30338 Qt5: 'static bool QPixmapCache::find(const QString&, QPixmap&)' is deprecated: Use bool find(const QString &, QPixmap *) instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
0c1fd45f0d Qt5: 'int QImage::byteCount() const' is deprecated since Qt 5.10: Use sizeInBytes [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
3437bce123 Qt5: 'static void QCoreApplication::flush()' is deprecated since Qt 5.9 [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
52b9d66004 Qt5: 'void QTreeWidgetItem::setTextColor(int, const QColor&)' is deprecated: Use QTreeWidgetItem::setForeground() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
1af7a5646f Qt5: 'Qt::DropAction QDrag::start(Qt::DropActions)' is deprecated: Use QDrag::exec() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
623bf3eec0 Qt5: 'void QListWidget::setItemSelected(const QListWidgetItem*, bool)' is deprecated: Use QListWidgetItem::setSelected() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
891a435c55 Qt5: 'static QString Gui::TaskView::TaskWatcherCommands::trUtf8(const char*, const char*, int)' is deprecated [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
ca327b6f25 Qt5: 'bool QTreeWidget::isItemSelected(const QTreeWidgetItem*) const' is deprecated: Use QTreeWidgetItem::isSelected() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
59f38319a3 Qt5: 'bool QTreeWidget::isItemExpanded(const QTreeWidgetItem*) const' is deprecated: Use QTreeWidgetItem::isExpanded() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
a9ae47a8be Qt5: 'void QTreeWidget::setItemExpanded(const QTreeWidgetItem*, bool)' is deprecated: Use QTreeWidgetItem::setExpanded() instead [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
7b72dcb062 Qt5: 'QString::null' is deprecated: use QString() [-Wdeprecated-declarations] 2020-06-12 17:51:33 +02:00
wmayer
ac7da8b39f clang/gcc/cmake: [skip ci] suppress deprecated-copy warnings for OpenInventor class SbMatrix 2020-06-12 14:49:18 +02:00
Yorik van Havre
fa219743d0 Arch: Better support for App::Parts in Arch Windows 2020-06-12 14:22:39 +02:00
donovaly
7bba15a2c9 [TD] make all hatch patters plain SVG
- everything that is part of the drawing should be plain SVG (strictly following the SVG specification) to assure that every SVG program can handle it (e.g. Internet browsers).
The hatch patterns however contained old stuff like traces of Sodipodi that might be a problem in the future.
2020-06-12 08:13:10 -04:00
donovaly
e889a49bbb [TD] add dialog for hatches
as discussed in the forum, the hatch feature misses a dialog. So here it is. The code is more or less just the one of the existing GeomHatch dialog
2020-06-12 08:12:37 -04:00