Bug 136920 - EDITING: Granularity of start and endpoint for an arrow drawn into a slide
Summary: EDITING: Granularity of start and endpoint for an arrow drawn into a slide
Status: RESOLVED NOTABUG
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Impress (show other bugs)
Version:
(earliest affected)
7.1.0.0.alpha0+
Hardware: All All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard:
Keywords: needsUXEval
Depends on:
Blocks:
 
Reported: 2020-09-21 11:01 UTC by Adalbert Hanßen
Modified: 2020-10-16 09:48 UTC (History)
3 users (show)

See Also:
Crash report or crash signature:


Attachments
The example used in the bug description (55.83 KB, application/vnd.oasis.opendocument.presentation)
2020-10-15 14:44 UTC, Adalbert Hanßen
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Adalbert Hanßen 2020-09-21 11:01:57 UTC
I want to draw an arrow between two specific data points in a time series. The plot is taken as a screenshot from LO Calc and pasted into the Impress document. 
When drawing the start and the endpoints of my arrow, the granularity of the endpoints for the mouse placement is too big. I know that I can use Alt in addition to the cursor movement keys to achieve a placement with pixel granularity: But this operates on both endpoints of my arrow, not just on the last selected one of them, so I can perform a parallel movement of the whole arrow in both directions but I can not define its proper length and direction this way! 

I expect that endpoint adjustments with the arrow keys operate on the arrow head if the selection of the arrow happens close to that or that they operate on the arrow end if the selection of the arrow happens close to that and that it operates on both of them together in a parallel movement if the selection happens close to the middle of the arrow (which is the current behaviour when using the cursor keys on the keyboard.

It must be possible to exactly place the startpoint and the endpoint of an arrow independently.

There seems to be one more bug: Once my arrow is selected and if I edit its properties and change the size of the arrow head, my editing is memorized in Edit Styles for it, but it has no effect on the screen. Happily colour changes are applied immediately (as expected).
Comment 1 Adalbert Hanßen 2020-10-15 14:44:14 UTC
Created attachment 166389 [details]
The example used in the bug description

Today I checked this bug again with the most recent version of LibreOffice Impress, which is currently
Version: 7.1.0.0.alpha0+
Build ID: 231a4e024b85aa0ad06a5632d3f514152babea30
CPU threads: 4; OS: Linux 5.4; UI render: default; VCL: gtk3
Locale: de-DE (de_DE.UTF-8); UI: en-GB
TinderBox: Linux-rpm_deb-x86_64@86-TDF, Branch:master, Time: 2020-10-14_08:06:21
Calc: threaded

The bug is stil present as one would have expected since no discussion took part here. Now I give you an example made from a time series computed from publicly available economic data.

In the slide of the appended graph I want to draw a line or an arrow from the first to the last data point. In order to do so, I have drawn an arrow but both terminal points can only be moved in unison using cursor (=arrow) keys.

1.	The end points can not exactly be placed to where I want them by key movements: Usig this method, they can only placed on coarse grid positions.

2.	Using the cursor keys, both points can only be moved at the same time by the same amount. Therefore only parallel movement is possible with the arrow keys. There is nothing to independently move only a terminal point by cursor keys.

3.	The arrow head does not react on setting it to another size: I want to increase it by Edit Style>End style. (Side finding).

Click on the arrow in the appended graph such that the end points of the arrow from the first to the last data point appear as small grey squares and the mouse pointer becomes an arrow decorated with a small square.

In this mode, moving the mouse while holding the mouse button pressed, the selected end point moves in discrete steps which are definitely much bigger than one pixel at the current zoom factor. On the status line, the steps are indicated as Dx=-0.50, 0.0, 0.50, 1.00, 1.50, .... (N.B.: for consistency, the designations for the components should both be indicated by lower case letters, i.e. dx and dy rather than Dx and dy). What is the unit for the Dx and dy displayed in the status line? If I hold Alt pressed while using cursor keys, the movement per keystroke seems to be one pixel (which is ok, the  movement in the graph depends on the set maginification). That’s perfectly ok, but I need that to manipulate both endpoints independently from each other.

I would propose to let a cursor keystroke actions 

1.	act as presently for consistency (i.e. start in parallel mode),

2.	operate only on the endpoint which has been manipulated last using the mouse (i.e. continue in end point mode) – until another selection is done by the mouse, this change appears natural for any user.

3.	return to paralle mode, if one clicks on the middle of the arrow (or line). This also appears obvious for any user.

Further I would prefer if the single arrow key (i.e. without pressing Alt simultaneously) would first do what currently Alt+arrow key does. In order to speed up for larger movements, the transmission ratio should rise from 1 to let’s say 10 continuously, after repetition has taken place (i.e. to move more than one step per keystroke after say more than five arrow keystrokes after another within one second. In order to make smooth transitions when the speed up starts working, for every 4th arrow keystroke in sequence, a 5th increment should be performed rising the transmission factor from 1 to 1.25. After another time interval (e.g. 0.2 seconds) with continuous keystrokes, the transmission rate should be increased to 1.5, then to 2, 2.5, 3, 4, 5, 6, 7.5, 10. (These speed factors are an approximation of 1.25^n).

One second after the last keystroke of a repetition, the transmission factor should decay at the same rate as it grew, unless any other arrow key is pressed while the decay has not come down to 1.0. 

The basic idea of such a variable transmission factor is already known for many years in the control of a microscope, see for example https://depatisnet.dpma.de/DepatisNet/depatisnet?action=pdf&docid=DE000003330476A1&xxxfull=1 or https://depatisnet.dpma.de/DepatisNet/depatisnet?action=pdf&docid=US000004624537A&xxxfull=1 (after twenty years, this invention has become state of the art and there is no restriction of doing what is revealed there, including transfer of the main idea of this patent to other subjects than the field of art, for which the invention originally was made).
Comment 2 Regina Henschel 2020-10-15 15:41:43 UTC
In Impress snap options are on by default. That affects changes done with the mouse. Disable the options in menu View > Snap Guides.

There a several ways to determine exact position and size of a line:

A) To make arrow keys only affect one point, select the line, then press Ctrl+Tab. Then the first point should slowly blink. Now you can move this point with the arrow keys. Next Ctrl+Tab goes to the next point.

B) Do it numerically by using the Position&Size dialog. Set the Base point for the Position so, that it corresponds to the first point of the line. Enter the coordinates. OK. Again Position&Size dialog. Set the Base point for the Size and the Base point for the Position so that it corresponds to the first point of the line. That makes this point fix while resizing. Then set width and height to get the desired second point of the line. If you want to keep the direction of the line, check "Keep ratio" before entering new values.

C) Set snap points at the desired positions. Enable "Snap to Snap Guides". Now you can drag each point of the line to a snap point where it is caught.

In case you have to work on points of a polyline:
Press F8 to switch into Point edit mode. Now you can click a point with the mouse and drag it to the desired place, or use Ctrl+Tab and arrow keys.

For your special illustration you have in addition these options:

D) Do it in Calc and enter the line directly into the chart.

E) Use a Linear Regression line in Calc, directly in the chart, and set the intersection to the desired start value.

I suggest "Works for me".
Comment 3 Adalbert Hanßen 2020-10-15 19:26:23 UTC
(In reply to Regina Henschel from comment #2)
> In Impress snap options are on by default. That affects changes done with
> the mouse. Disable the options in menu View > Snap Guides.

This really does the trick to get rid off the granularity.

> 
> There a several ways to determine exact position and size of a line:
> 
> A) To make arrow keys only affect one point, select the line, then press
> Ctrl+Tab. Then the first point should slowly blink. Now you can move this
> point with the arrow keys. Next Ctrl+Tab goes to the next point.
> 

This is also a very valuable hint.

> B) Do it numerically by using the Position&Size dialog. Set the Base point
> for the Position so, that it corresponds to the first point of the line.
> Enter the coordinates. OK. Again Position&Size dialog. Set the Base point
> for the Size and the Base point for the Position so that it corresponds to
> the first point of the line. That makes this point fix while resizing. Then
> set width and height to get the desired second point of the line. If you
> want to keep the direction of the line, check "Keep ratio" before entering
> new values.
> 
> C) Set snap points at the desired positions. Enable "Snap to Snap Guides".
> Now you can drag each point of the line to a snap point where it is caught.
> 
> In case you have to work on points of a polyline:
> Press F8 to switch into Point edit mode. Now you can click a point with the
> mouse and drag it to the desired place, or use Ctrl+Tab and arrow keys.
> 
> For your special illustration you have in addition these options:
> 
> D) Do it in Calc and enter the line directly into the chart.

That's another possibility. However one has to place an arbitrary line first somewhere on the spreadsheet part and later move its start and end point to the plot, because one can not start or end a line in the plot. But that's feasible too, although it looks like one is confined to the standard arrow head size.

> 
> E) Use a Linear Regression line in Calc, directly in the chart, and set the
> intersection to the desired start value.
> 
> I suggest "Works for me".

Yes, the main question is solved and no change in the programming is really necessary to make a graph like the one I wanted to produce.

Only my side finding that the arrow head size change is not honoured remains open. Shall I create a new bug report for that?
Comment 4 Heiko Tietze 2020-10-16 09:48:26 UTC
Thanks Regina! And I believe keeping snap on makes sense as most charts in Impress are done as relation between shapes with glue points.