Refactoring Inkscape Signals
The Inkscape application has a snarl of signalling problems which must be carefully thought about and untangled.
-
Remove InkscapeApplication and Desktop blanket signals -
Review each ui/dialog for use of signals (refactor desktop and document to dialog-base
)-
Reviwed and have no signals in use: about, calligraphic-profile-rename, color-item, debug, dialog-base, dialog-container, dialog-manager, dialog-multipaned, dialog-notebook, dialog-window, filedialog, font-substitution, guides, inkscape-preferences, input, knot-properties, livepatheffect-add, lpe-fillet-chamfer-properties, lpe-powerstroke-properties, memory, messages -
transformation
-> Uses selection changed and modified to modify Matrix inputs (when changing in place checkbox) -
align-and-distribute
-> Remove signal_selection_changed, it's used to clear a GeomRect and is super weird. Signal for tool switching is ok. -
attrdialog
- Uses NodeEventVector to watch specific elements (see xml-tree for where signals come from) -
clonetiler
- selectionChanged used to enable buttons, no changes needed. But investigate external change signal, no idea what it does. -
document-properties
-> NodeEventVector watches EVERY document object, perhaps this should useconnectResourcesChanged
to watch for grids. Grids widgets need to be tweaked on change, not recreated. This needs to most refactoring. -
export
-> uses ::update to call modified, this is very bad. update shouldn't be used like this, it's for updating widget spacing, not updating data. -
fill-and-stroke
style/stroke/fill-widget
-> Looks ok, but could do with a performance review to make sure. The style flag should be stopping many modifications from triggering it. -
filer-effects-dialog
-> selectionModified used to call selectionChanged so it needs to be rethought. -
find
-> General ::update refactoring and getDesktop -
glyphs
-> Might be ok, should be reviewed for performance issues. Uses selectionModified and Changed. -
icon-preview
-> General ::update refactoring. Use of documentModified seems fine as it uses a queue. -
layers
-> has it's own layer_manager and dedicated signals -
livepatheffect-editor
-> ::update refactoring plus Modified calls the same code as Changed, without any filtering. It doesn't check to see if current_lpeitem is the same as the selection, it just re-does the whole filter UI on each mouse move.
-
IGNORED
-
objects
- Because the object's dialog is being replaced, it's not being changed, to make merging easier. This may make the object's dialog stop working for a short time. -
PowerstrokePropertiesDialog
- This is not an Inkscape dialog, it's a Gtk::Dialog, so it's really in the wrong place.