Skip to content

Refactoring Inkscape Signals

Martin Owens requested to merge doctormo/inkscape:signals-refactoring into master

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 use connectResourcesChanged 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.
Edited by Martin Owens

Merge request reports