View Issue Details

IDProjectCategoryView StatusLast Update
0016950ScribusUser Interfacepublic2023-09-11 20:34
Reporterale Assigned Tonitramr  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.7.0.svn 
Fixed in Version1.7.0.svn 
Summary0016950: basepoint rotation widget is not reset when unselecting the current frame
Description- rotate a frame
- the new base point widget gets also rotated
- deselect the shape
- the base point widget is deactivated but still rotated

... it just looks a bit strange. i would prefer to have it set back to the default 9 base points widget
(this is also valid when deselecting a line)
TagsNo tags attached.
PatchNo

Activities

nitramr

2023-06-03 20:44

developer   ~0050207

fix attached
basepoint_fix.patch (4,170 bytes)   
Index: scribus/canvasmode_rotate.cpp
===================================================================
--- scribus/canvasmode_rotate.cpp	(Revision 25488)
+++ scribus/canvasmode_rotate.cpp	(Arbeitskopie)
@@ -499,60 +499,57 @@
 		m_oldRotCenter = m_rotCenter = m_view->RCenter;
 		m_doc->m_Selection->getVisualGroupRect(&gx, &gy, &gw, &gh);
 		m_rotMode   = m_doc->rotationMode();
-
-		switch(m_rotMode){
-		case AnchorPoint::TopLeft:
+
+		switch(m_rotMode){
+		case AnchorPoint::TopLeft:
 			m_rotCenter = FPoint(gx, gy);
-			break;
-		case AnchorPoint::Top:
-			m_rotCenter = FPoint(gx + gw / 2.0, gy);
-			break;
-		case AnchorPoint::TopRight:
+			break;
+		case AnchorPoint::Top:
+			m_rotCenter = FPoint(gx + gw / 2.0, gy);
+			break;
+		case AnchorPoint::TopRight:
 			m_rotCenter = FPoint(gx + gw, gy);
-			break;
-		case AnchorPoint::Left:
-			m_rotCenter = FPoint(gx, gy + gh / 2.0);
-			break;
-		case AnchorPoint::Right:
-			m_rotCenter = FPoint(gx + gw, gy + gh / 2.0);
-			break;
-		case AnchorPoint::BottomLeft:
+			break;
+		case AnchorPoint::Left:
+			m_rotCenter = FPoint(gx, gy + gh / 2.0);
+			break;
+		case AnchorPoint::Right:
+			m_rotCenter = FPoint(gx + gw, gy + gh / 2.0);
+			break;
+		case AnchorPoint::BottomLeft:
 			m_rotCenter = FPoint(gx, gy + gh);
-			break;
-		case AnchorPoint::Bottom:
-			m_rotCenter = FPoint(gx + gw / 2.0, gy + gh);
-			break;
-		case AnchorPoint::BottomRight:
+			break;
+		case AnchorPoint::Bottom:
+			m_rotCenter = FPoint(gx + gw / 2.0, gy + gh);
+			break;
+		case AnchorPoint::BottomRight:
 			m_rotCenter = FPoint(gx + gw, gy + gh);
-			break;
-		case AnchorPoint::Center:
-		default:
-			m_rotCenter = FPoint(gx + gw / 2.0, gy + gh / 2.0);
-			break;
-		}
-
+			break;
+		case AnchorPoint::Center:
+		default:
+			m_rotCenter = FPoint(gx + gw / 2.0, gy + gh / 2.0);
+			break;
+		}
+
 	}
 }
 
 void CanvasMode_Rotate::keyReleaseEvent(QKeyEvent *e)
 {
-	if (e->key() == Qt::Key_Up)
-	{
-		auto id = m_view->m_ScMW->propertiesPalette->xyzPal->basePointWidget->selectedAnchor();
-		//id = id > 0 ? id - 1 : 4;
-		m_view->m_ScMW->propertiesPalette->xyzPal->basePointWidget->setSelectedAnchor(id);
-		m_doc->setRotationMode(id);
-		return;
-	}
-	if (e->key() == Qt::Key_Down)
-	{
-		auto id = m_view->m_ScMW->propertiesPalette->xyzPal->basePointWidget->selectedAnchor();
-		//id = (id + 1) % 5;
-		m_view->m_ScMW->propertiesPalette->xyzPal->basePointWidget->setSelectedAnchor(id);
-		m_doc->setRotationMode(id);
-		return;
-	}
+	if(e->key() == Qt::Key_Up || e->key() == Qt::Key_Down)
+		{
+			int id = m_view->m_ScMW->propertiesPalette->xyzPal->basePointWidget->selectedAnchor();
 
+			if (e->key() == Qt::Key_Up)		id = id > 1 ? id - 1 : 9;
+			if (e->key() == Qt::Key_Down)	id = id < 9 ? id + 1 : 1;
+
+			AnchorPoint ap = static_cast<AnchorPoint>(id);
+			m_view->m_ScMW->propertiesPalette->xyzPal->basePointWidget->setSelectedAnchor(ap);
+			m_doc->setRotationMode(ap);
+			return;
+
+		}
+
 	double increment = 0.0;
 	if (e->key() == Qt::Key_Left)
 		increment = 1.0;
Index: scribus/scribusstructs.h
===================================================================
--- scribus/scribusstructs.h	(Revision 25488)
+++ scribus/scribusstructs.h	(Arbeitskopie)
@@ -483,8 +483,8 @@
 	Center = 5,
 	Right = 6,
 	BottomLeft = 7,
-	Bottom = 9,
-	BottomRight = 10
+	Bottom = 8,
+	BottomRight = 9
 };
 
 #endif
Index: scribus/ui/propertiespalette_xyz.cpp
===================================================================
--- scribus/ui/propertiespalette_xyz.cpp	(Revision 25488)
+++ scribus/ui/propertiespalette_xyz.cpp	(Arbeitskopie)
@@ -187,6 +187,7 @@
 	widthSpin->showValue(0);
 	heightSpin->showValue(0);
 	rotationSpin->showValue(0);
+	basePointWidget->setAngle(0);
 	setEnabled(false);
 }
 
@@ -447,6 +448,7 @@
 		widthSpin->showValue(gw);
 		heightSpin->showValue(gh);
 		rotationSpin->showValue(0);
+		basePointWidget->setAngle(0);
 
 		xposSpin->setEnabled(true);
 		yposSpin->setEnabled(true);
@@ -516,6 +518,7 @@
 			widthSpin->showValue(0);
 			heightSpin->showValue(0);
 			rotationSpin->showValue(0);
+			basePointWidget->setAngle(0);
 			levelLabel->setText("  ");
 			setEnabled(false);
 			break;
basepoint_fix.patch (4,170 bytes)   

jghali

2023-06-03 22:29

administrator   ~0050208

Thanks. I applied only the parts of the patch related to this issue.

Issue History

Date Modified Username Field Change
2023-05-29 19:26 ale New Issue
2023-05-29 19:26 ale Status new => assigned
2023-05-29 19:26 ale Assigned To => nitramr
2023-05-29 19:28 ale Summary basepoint rotation is not reset when unselecting the current frame => basepoint rotation widget is not reset when unselecting the current frame
2023-06-03 20:44 nitramr Note Added: 0050207
2023-06-03 20:44 nitramr File Added: basepoint_fix.patch
2023-06-03 22:29 jghali Status assigned => resolved
2023-06-03 22:29 jghali Resolution open => fixed
2023-06-03 22:29 jghali Fixed in Version => 1.7.0.svn
2023-06-03 22:29 jghali Note Added: 0050208
2023-09-11 20:34 cbradney Status resolved => closed