View Issue Details

IDProjectCategoryView StatusLast Update
0017087ScribusUser Interfacepublic2023-12-24 10:00
Reporternitramr Assigned Tojghali  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
PlatformDesktop PCOSUbuntuOS Version23.10 64-bit
Product Version1.6.0.svn 
Target Version1.6 milestoneFixed in Version1.6.0.svn 
Summary0017087: Spiral Edit Dialog doesn't allow angle greater than 360°
DescriptionScrSpinBox has a limitation for value changes with mouse wheel if the unit is in degree. A max value of 360 ° make sense but in this case the angle can be greater than 360 °

The attached patch file changes the max angle of 360 to the maximum value of the spinbox.
Steps To Reproduce1. Create a new document
2. Add a spiral on page
3. double-click on spiral item to edit the values
4. change "end angle" with mouse wheel
BUG=> value changes directly to value of "start angle"

Input changes with keyboard are working as expected.
TagsNo tags attached.
PatchYes

Activities

nitramr

2023-12-20 15:11

developer  

spinboxfix_2023-12-20_01.patch (511 bytes)   
Index: scribus/ui/scrspinbox.cpp
===================================================================
--- scribus/ui/scrspinbox.cpp	(Revision 25886)
+++ scribus/ui/scrspinbox.cpp	(Arbeitskopie)
@@ -83,10 +83,10 @@
 	{
 		double angle = this->value();
 		angle += steps * singleStep();
-		while (angle < 0.0)
-			angle += 360.0;
-		while (angle > 360)
-			angle -= 360.0;
+		while (angle < minimum())
+			angle += maximum();
+		while (angle > maximum())
+			angle -= maximum();
 		setValue(angle);
 		return;
 	}

jghali

2023-12-20 22:25

administrator   ~0050663

I do not agree on the math here, I think that should be:
while (angle < minimum())
    angle += 360;
while (angle > maximum())
    angle -= 360;

nitramr

2023-12-20 22:39

developer   ~0050665

If the maximum is greater than 360 it will not work. In case of a spiral the maximum angle is 36000.

When you reach 36001 it will adjust the angle to 35641 instead of 0.

jghali

2023-12-21 22:50

administrator   ~0050680

While going back from 360 to 0 makes sense for item rotations, I don't think it does for spiral angles, so I maintain what I wrote.

Also with your proposal, the math in your patch is also wrong if minimum() is < 0, it should be:
while (angle < minimum())
    angle += maximum() - minimum();
while (angle > maximum())
    angle -= maximum() - minimum();

ale

2023-12-22 07:22

manager   ~0050681

does scribus really need a spiral tool?

- on my monitor, exactly one tool does not fit in the toolbar... the barcode one. if there was no spiral tool everything would fit (ok, that's not really an argument...)
- if i try to move the central node of the spiral after a couple of seconds of sensitive moving around, the spiral just disappears, no way to get it back.
- if i try to move the external node, i can do 3/4 of a tour and then it moves back and forth and i can't get any further change.
- if i try to change the end angle in the pop up dialog, i manage to "break" the spiral after the second value change. no way to get back to a visible spiral.
- if i close the dialog and try to undo, the dialog pops up again and i don't feel like it undoes anything. in any case i don't get back to the initial correct spiral.
- all this make it almost impossible to edit a spiral and one thought comes up: when did i last use a spiral in scribus? (or anywhere else?). when did i read a question about the spiral tool in the forums (or in the mailing list or in irc? never! has anybody ever filled a bug about the spiral tool?)

my suggestion is to simply remove the spiral tool and if, possibly, replace it by a python script that creates a spiral with a bezier curve (that will be a nice exercise for understanding how beziers work!)

cbradney

2023-12-22 07:26

administrator   ~0050682

We're not going to remove the spiral tool.

ale

2023-12-22 09:00

manager   ~0050683

Last edited: 2023-12-22 11:36

well, if scribus has the workforce for fixing it, i'm ok with keeping it...

but i think it's not a good idea to keep a tool that does not work and nobody uses.

personally, i'd prefer the devs to focus on other things, rather on fixing this, that's why i'm suggesting to remove it.

PeterBenedek

2023-12-23 07:45

developer   ~0050689

I completely agree with ale.

cbradney

2023-12-23 09:43

administrator   ~0050690

We need to maintain compatibility with older docs, and imported docs/SVGs etc. The tool needs fixing, not removing.
Considering it might be used less, we can deprioritise major fixes over other things.

jghali

2023-12-23 22:29

administrator   ~0050691

Last edited: 2023-12-24 01:29

In the end I think we should just clamp the angle between minimum() and maximum() in the spiral case, so the code would be:

double angleRange = maximum() - minimum();
if (angleRange == 360.0)
{
    while (angle < minimum())
        angle += 360.0;
    while (angle > maximum())
        angle -= 360.0;
}
else
    angle = std::max(minimum(), std::min(angle, maximum()));

Issue History

Date Modified Username Field Change
2023-12-20 15:11 nitramr New Issue
2023-12-20 15:11 nitramr File Added: spinboxfix_2023-12-20_01.patch
2023-12-20 22:25 jghali Note Added: 0050663
2023-12-20 22:39 nitramr Note Added: 0050665
2023-12-21 22:50 jghali Note Added: 0050680
2023-12-22 07:22 ale Note Added: 0050681
2023-12-22 07:26 cbradney Note Added: 0050682
2023-12-22 09:00 ale Note Added: 0050683
2023-12-22 11:36 ale Note Edited: 0050683
2023-12-23 07:45 PeterBenedek Note Added: 0050689
2023-12-23 09:43 cbradney Note Added: 0050690
2023-12-23 22:29 jghali Note Added: 0050691
2023-12-23 22:51 jghali Summary [PATCH] Spiral Edit Dialog doesn't allow angle greater than 360° => Spiral Edit Dialog doesn't allow angle greater than 360°
2023-12-23 22:51 jghali Assigned To => jghali
2023-12-23 22:51 jghali Status new => resolved
2023-12-23 22:51 jghali Resolution open => fixed
2023-12-23 22:51 jghali Fixed in Version => 1.6.0.svn
2023-12-24 01:29 jghali Note Edited: 0050691
2023-12-24 10:00 cbradney Status resolved => closed