Skip to content

WIP: Draft: Docking System refactor [GSoC]

Valentin Ionita requested to merge vanntile/inkscape:docking-system-copy into master

This MR is related to the dialog system refactor GSoC project (application).

Last GSoC commit is marked by this comment. Except rebases, nothing much should change since then.

A document describing the logic and code organisation of the main classes written can be found here. A TODO list covering known issues, bugs, potential features and avenues for future code improvements is also available.

The evolution of the functionality has been done with the UX team, the main discussion happening in this issue.

Following is a list of features implemented:

  • DialogBase superclass for all dialogs
  • DialogContainer dialog factory
  • dockable dialogs inside Inkscape windows
  • floating dialogs inside DialogWindows
  • "multiplexing" dialogs by using DialogNotebooks to switch between dialogs sharing the same concrete screen space
  • "parallelization" of dialogs vertically or horizontally by using nested DialogMultipaned widgets
  • floating dialogs track the state of the last active Inkscape window
  • dragging and dropping dialogs into regions called DropZones owned by DialogMultipaned widgets
  • making dialogs floating by dragging tabs onto the canvas or outside the window
  • automatic resizing (i.e. size allocation) of DialogMultipaned children
  • manual resizing of DialogMultipaned children by dragging handles marked with a "three dots" icon
  • completely hiding dialogs by resizing them to 0 on an axis
  • DialogNotebook tabs with shortcuts on hover
  • automatic removal of dialog names/labels in tabs if needed
  • possibility of hiding dialog tab labels completely
  • dialog tabs right click menu with options for closing the dialog, moving to a floating window or closing the notebook
  • dialog tabs middle click (triple click on touchpads) closing a dialog
  • floating dialogs resize to their natural size initially
  • dialog configurations are saved when closing Inkscape, including any floating dialog configurations, and loaded when a new window is opened in the next session
  • preventing multiple dialogs of the same type in the same DialogContainer
  • scrolling inside DialogNotebook if the dialogs don't have enough space
Edited by Valentin Ionita

Merge request reports