View Issue Details

IDProjectCategoryView StatusLast Update
0017364ScribusCanvaspublic2025-01-13 21:00
Reporternitramr Assigned Tonitramr  
PrioritynormalSeverityfeatureReproducibilityN/A
Status assignedResolutionopen 
PlatformDesktop PCOSUbuntuOS Version24.10 64-bit
Product Version1.7 milestone 
Target Version1.7 milestone 
Summary0017364: Improved Node Editing
DescriptionImportant requirements
- Editing should be possible using keyboard shortcuts and/or the tools in the node editing palette
- Nodes and node handles can be selected and edited without switching the mode in node editing palette

Behavior:

Nodes
1. Nodes can be selected with a mouse click
- Multiple selection with the Shift key pressed + mouse click or the selection frame
- Selected nodes can be deselected again with holding the Shift key + mouse click
2. The node handles can be changed:
- Symmetrical handles: Alt key + mouse click sets the handles to the node center (corner node)
- Asymmetrical handles: Alt key + mouse click makes both handles symmetrical
- No handles: Alt key + mouse drag pulls the two handles out symmetrically

Node handles
3. Shift key + mouse drag snaps a handle in 15° increments (with symmetrical handles this also applies to the opposite handle)
4. Alt key and mouse drag to a node handle unlink the handles (different length, different angle)
5. Dragging the mouse moves the node handle
- Symmetrical handles: The opposite one moves in a mirror image (same length, same angle)
- Asymmetrical handles: Only the active handle changes length and angle
- Asymmetrical handles: If the active handle has the same angle as the opposite handle when dragging with the mouse, the active handle "snaps" into place and both handles are "equal in angle" when the mouse is released
- Asymmetrical handles: If the active handle has the same length as the opposite handle when dragging with the mouse, the active handle "snaps" into place and both handles are "equal in length" when the mouse is released
- Equal in length and equal in angle also work in combination

Modifiers
Alt key: Modifier for handle length and angle
Shift key: Selection and grid
TagsNo tags attached.
PatchNo

Relationships

related to 0016547 new Update Layout for Node Editor 2 
related to 0009099 new A better Path tool 
related to 0000889 acknowledged inverse bezier tool handling 
related to 0013990 new Node Editor lacks keyboard shortcuts 
related to 0013991 new Node Editor lacks good multiple-node-selection functionality 
related to 0013989 new Node Editor lacks some constraint functions 
related to 0011676 new symmetrical control points doesn't support length deviation 
related to 0017128 new moving shape nodes with the arrow keys does not always work 
related to 0007753 new Shape editing: delete several nodes 
related to 0011976 new Editing shapes (nodes) needs an interface with values 
related to 0009100 new Paths simplification 
related to 0017369 new add to the content palette the actions from the "image" and "preview" section" in the context menu 
child of 0017365 assignednitramr Create a context aware toolbar 

Activities

utnik

2025-01-05 22:07

updater   ~0051877

if you're going to work on the node editing tool, i think it would be good to differentiate between three types of nodes instead of just two: 'sharp nodes', 'smooth nodes' and 'symmetrical nodes'.

nitramr

2025-01-05 22:16

developer   ~0051878

Yes, I'm working on it. What do you mean by smooth nodes?

The new implementation will support
- sharp nodes: no handles
- symmetrical nodes: same angle, same length
- asymmetrical nodes: same angle, different length

utnik

2025-01-06 07:14

updater   ~0051879

ok. my 'smooth nodes' are your asymmetrical ones.
i just missed something – in this case it's rather a group of the sharp nodes. in your description you have nodes with:
- symmetrical handles
- asymmetrical handles
- no handles
but where are the sharp nodes with 'independent handles'?

nitramr

2025-01-06 07:24

developer   ~0051880

Oh, good point. I updated this point here:
"4. Alt key and mouse drag to a node handle unlink the handles (different length, different angle)"

I think we would need new tools in the node editor or somewhere else, where you can do the same actions as you can do with keyboard shortcuts.

utnik

2025-01-06 08:31

updater   ~0051881

inkscape shows four buttons in the toolbar to transform selected nodes.
from left to right the selected nodes change to:
- sharp nodes (if a node was already sharp, a click will remove its handles)
- smooth nodes
- symmetrical nodes
- auto-smooth nodes (auto-smooth handles adapt their handles to keep a fair curve when one of the neighbouring nodes or the auto-smooth one itself gets moved.)

scribus could show those buttons in the node editor. (i never use the last one – don't know if we need it…)

nitramr

2025-01-06 14:20

developer   ~0051882

Auto smooth could be more complicated. At least, we should support the first 3 options.
- Sharp/Corner nodes
- smooth/asymmetric nodes
- symmetric nodes

In addition, I would like to replace the node edit palette with a new tool properties toolbar/window. Other tools like parametric shapes could be included there too. See proposal from an old mockup:

ale

2025-01-06 17:21

manager   ~0051883

It looks like you're creating a toolbar...

i'm fine with it.
But I'd prefer not to have one more and more toolbar to add at the top of my window.
Can we have it content aware?

Which toolbar can be already made content aware?
Which other toolbars might come in the future that fit in the schema?

The view tools? (would be the default one...)

Otherwise, I think that I'd prefer to have it as a palette...
Clippy-letter-2.PNG (14,941 bytes)   
Clippy-letter-2.PNG (14,941 bytes)   

nitramr

2025-01-06 18:01

developer   ~0051884

>> It looks like you're creating a toolbar...
Maybe :D

>> Can we have it content aware?
Yes of course. In my mind, it is like in Inkscape when you select a tool. There is just one toolbar/window that changes the content based on the selected tool.

>> But I'd prefer not to have one more and more toolbar to add at the top of my window.
I totally agree. There is no intention on my side to clutter the UI more and more. I would go a step further and suggest removing things. I don't know if anyone really needs all the actions in the current standard toolbars. Even if you only need one action, you have to dock the entire toolbar.

I suggest having only 2 "toolbars".
1. Customizable toolbar: User can customize this toolbar with favorite actions. It replaces the existing ones.
2. Tool properties: This is a toolbar/dock that shows context specific tool settings and properties. Debatable whether you can move and dock it manually or not.

Actually, there is a third one, the Canvas tools toolbar, docked on the left side.

nitramr

2025-01-06 18:09

developer   ~0051885

A user can customize the toolbar as you see in the screenshot. There is only one set of predefined blocks that you can add or remove. For "future toolbars" we can simply add new blocks to this set.
customize_toolbar.png (1,057,269 bytes)

ale

2025-01-06 18:12

manager   ~0051886

nice plan!

i think that the sub menu of the shape "canvas" tool is also a candidate...

... and the calligraphic line...

nitramr

2025-01-06 18:25

developer   ~0051887

>> i think that the sub menu of the shape "canvas" tool is also a candidate...
Good point, I think the list will get longer. We can also show a color preview from the color picker tool there, or the measure values from the measurement tool, etc.

However, I think that changing the toolbar should be a different task due to its own complexity. For this task, I think it is better to simply change the buttons in the current palette.

nitramr

2025-01-11 13:45

developer   ~0051906

Quick status update. This is the new palette for editing nodes.

I merged "Move Node" and "Move Node Control Handle" into one button. Since you don't need to toggle this anymore.

There are 3 buttons for the control handle modes (symmetric, asymmetric and independent). All 3 buttons behave like radio buttons, only one mode can be enabled or none. If no mode is enabled (as you see in the screenshot) then there is an automatic detection of the mode. For example, if angle and length of both control handles are the same, it behaves like symmetric mode. Same angle, but different length behaves like asymmetric. Different angle and different length behaves like independent.

There is currently no separate "Sharp Edge" button. For that, I implemented a snapping feature. If you move the control handle close enough to the node, it automatically merges with that point.

At the moment, most of the functionality is implemented, and I'm working on small fixes and improvements.
I think I need to make a screencast to show the full functionality. :D
node_editing_palette.png (5,029 bytes)   
node_editing_palette.png (5,029 bytes)   

ale

2025-01-11 20:57

manager   ~0051907

Some more feedback from my side:

- adding the DEL key for deleting a node?
- Why are the mirror button needed? Are they not the same as the ones in the PP?
- (+) and (-) are hard to distinguish. what about just using + and - without the circle around it?
  or generally making the symbol below a bit bugger (but, maybe, it's just the "wrong" combination of a low res monitor with eyes that are getting older...)
- are you planning to remove the three rows of widgets for rotating and resizing?
  would be fine for me, since, in my eyes, they don't really belong in the node editing (rotating can be done in the PP, scaling, if needed, should be elsewhere)
- for the coordinates, i wonder if the PP could be used... (but then one could not use the PP to move around the whole shape / resize it)

nitramr

2025-01-11 21:14

developer   ~0051908

- adding the DEL key for deleting a node?
> Yes, DEL and Backspace are supported

- Why are the mirror button needed? Are they not the same as the ones in the PP?
> Good point. I don't see any difference to those in PP

- (+) and (-) are hard to distinguish. what about just using + and - without the circle around it?
  or generally making the symbol below a bit bugger (but, maybe, it's just the "wrong" combination of a low res monitor with eyes that are getting older...)
> I will think about it

- are you planning to remove the three rows of widgets for rotating and resizing?
  would be fine for me, since, in my eyes, they don't really belong in the node editing (rotating can be done in the PP, scaling, if needed, should be elsewhere)
> Good question. I think the current implementation is not very useful. Maybe it could be reimplemented to apply changes only to selected nodes?

- for the coordinates, i wonder if the PP could be used... (but then one could not use the PP to move around the whole shape / resize it)
> Yes, I thought of that too. The coordinates also look broken, if you move nodes all the way to the left or up, they are always 0 because the origin of the element is recalculated.
Maybe it is better to use the PP settings instead and show relative coordinates to the page origin or ruler. But to edit nodes you would always have to have the PP open

ale

2025-01-12 09:13

manager   ~0051910

-> rotating

i guess that nobody will have the idea to rotate selected (multiple) nodes, if those buttons were not in the nodes palette...
one could probably do cool things with that, but i'm not sure it's something scribus (as a layout tool) should have.
(... let's first get the basic interaction to work correctly and be comfortable for the user, not try to have feature that inkscape does not have...)

personally, i'm for simply removing all the widgets concerning the scaling and rotation.

-> coordinates

no idea why there is a choice between canvas and page coords. if we want absolute coordinates, we only need the ones relative to the axis origins, the same that we otherwise get for the items. (which is currently not a choice)

for now, i would have a simple choice between relative and absolute coordinates.

-> shearing the path

no idea why we have those buttons here. (and how they got that name...)
imo, one should use "item > transformation" for that. it's available while editing the nodes.
(of course, "item > transformation" should be improved for single shot uses... but that's another topic...)

the solution might be related to the ticket 0017374 i just created.

-> using the PP

if i understood correctly, you're wondering if the content palette should actively be used for editing the nodes.
(personally, while first reviewing your ticket, i did think about using the PP or the CP for it...)
in the long term, i think i prefer to have the context aware toolbar you were proposing.
and in the short term it can stay in the existing dedicated floating dialog.
i would not use the PP (except maybe for the x,y values... but even there, i'd prefer to keep them in the floating dialog for now)

nitramr

2025-01-13 20:46

developer   ~0051913

I recorded a demo video of the current implementation.

Video show node editing only with mouse and Alt + Shift keys.
https://youtu.be/mmhDRVEU7Ic

nitramr

2025-01-13 21:00

developer   ~0051914

>> personally, i'm for simply removing all the widgets concerning the scaling and rotation.
Yes, or since we have them, we can hide them in a menu or make it less prominent.

>> if we want absolute coordinates, we only need the ones relative to the axis origins, the same that we otherwise get for the items. (which is currently not a choice)
At the moment I merged 3 options in a dropdown button (canvas, page, item). Perhaps only ruler and item origin?

>> no idea why we have those buttons here. (and how they got that name...)
We could but them in the shape section, next to the shape selection

>> if i understood correctly, you're wondering if the content palette should actively be used for editing the nodes.
My comment refers to if we would remove the coordinate inputs from the node editing palette

>> in the long term, i think i prefer to have the context aware toolbar you were proposing.
Yes, it is better to keep the related things together in a toolbar or other kind of window.

Issue History

Date Modified Username Field Change
2025-01-05 21:28 nitramr New Issue
2025-01-05 21:28 nitramr Status new => assigned
2025-01-05 21:28 nitramr Assigned To => nitramr
2025-01-05 21:30 nitramr Relationship added related to 0016547
2025-01-05 21:31 nitramr Relationship added related to 0009099
2025-01-05 21:31 nitramr Relationship added related to 0000889
2025-01-05 21:31 nitramr Relationship added related to 0013990
2025-01-05 21:32 nitramr Relationship added related to 0013991
2025-01-05 21:32 nitramr Relationship added related to 0013989
2025-01-05 21:35 nitramr Relationship added related to 0011676
2025-01-05 21:35 nitramr Relationship added related to 0017128
2025-01-05 21:35 nitramr Relationship added related to 0007753
2025-01-05 21:36 nitramr Relationship added related to 0011976
2025-01-05 21:37 nitramr Relationship added related to 0009100
2025-01-05 22:07 utnik Note Added: 0051877
2025-01-05 22:16 nitramr Note Added: 0051878
2025-01-06 07:14 utnik Note Added: 0051879
2025-01-06 07:21 nitramr Description Updated
2025-01-06 07:24 nitramr Note Added: 0051880
2025-01-06 08:31 utnik Note Added: 0051881
2025-01-06 08:31 utnik File Added: Bildschirmfoto 2025-01-06 um 09.06.39.png
2025-01-06 14:20 nitramr Note Added: 0051882
2025-01-06 14:20 nitramr File Added: Bildschirmfoto 2025-01-06 um 15.14.51.png
2025-01-06 17:21 ale Note Added: 0051883
2025-01-06 17:21 ale File Added: Clippy-letter-2.PNG
2025-01-06 18:01 nitramr Note Added: 0051884
2025-01-06 18:01 nitramr File Added: Bildschirmfoto vom 2025-01-06 18-44-48.png
2025-01-06 18:09 nitramr Note Added: 0051885
2025-01-06 18:09 nitramr File Added: customize_toolbar.png
2025-01-06 18:12 ale Note Added: 0051886
2025-01-06 18:25 nitramr Note Added: 0051887
2025-01-07 18:31 ale Relationship added child of 0017365
2025-01-09 09:25 ale Relationship added related to 0017369
2025-01-11 13:45 nitramr Note Added: 0051906
2025-01-11 13:45 nitramr File Added: node_editing_palette.png
2025-01-11 20:57 ale Note Added: 0051907
2025-01-11 21:14 nitramr Note Added: 0051908
2025-01-12 09:13 ale Note Added: 0051910
2025-01-13 20:46 nitramr Note Added: 0051913
2025-01-13 21:00 nitramr Note Added: 0051914