[Uml-devel] KDE/kdesdk/umbrello/umbrello

Sharan Rao sharanrao at gmail.com
Wed Aug 1 20:44:13 UTC 2007


SVN commit 695319 by sharan:

Prevent crash on attempt to align an empty diagram


 M  +47 -10    umlview.cpp  


--- trunk/KDE/kdesdk/umbrello/umbrello/umlview.cpp #695318:695319
@@ -3573,6 +3573,9 @@
 void UMLView::alignLeft() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
+
     int smallestX = getSmallestX(widgetList);
 
     UMLWidget* widget;
@@ -3588,6 +3591,8 @@
 void UMLView::alignRight() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
     int biggestX = getBiggestX(widgetList);
 
     UMLWidget* widget;
@@ -3603,6 +3608,9 @@
 void UMLView::alignTop() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
+
     int smallestY = getSmallestY(widgetList);
 
     UMLWidget* widget;
@@ -3618,6 +3626,8 @@
 void UMLView::alignBottom() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
     int biggestY = getBiggestY(widgetList);
 
     UMLWidget* widget;
@@ -3633,11 +3643,14 @@
 void UMLView::alignVerticalMiddle() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
+
     int smallestX = getSmallestX(widgetList);
     int biggestX = getBiggestX(widgetList);
     int middle = int((biggestX - smallestX) / 2) + smallestX;
 
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
     UMLWidgetListIt it(widgetList);
 
     it.toFirst();
@@ -3650,11 +3663,14 @@
 void UMLView::alignHorizontalMiddle() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
+
     int smallestY = getSmallestY(widgetList);
     int biggestY = getBiggestY(widgetList);
     int middle = int((biggestY - smallestY) / 2) + smallestY;
 
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
     UMLWidgetListIt it(widgetList);
 
     it.toFirst();
@@ -3667,6 +3683,9 @@
 void UMLView::alignVerticalDistribute() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
+
     int smallestY = getSmallestY(widgetList);
     int biggestY = getBiggestY(widgetList);
     int heightsSum = getHeightsSum(widgetList);
@@ -3674,11 +3693,14 @@
 
     sortWidgetList(widgetList, hasWidgetSmallerY);
 
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
     UMLWidgetListIt it(widgetList);
 
     it = UMLWidgetListIt(widgetList);
 
+    if ( it.isEmpty() )
+        return;
+
     UMLWidget* widgetPrev = it.toFirst();
     ++it;
     while ((widget = it.current()) != 0) {
@@ -3691,6 +3713,9 @@
 void UMLView::alignHorizontalDistribute() {
     UMLWidgetList widgetList;
     getSelectedWidgets( widgetList );
+    if ( widgetList.isEmpty() )
+        return;
+
     int smallestX = getSmallestX(widgetList);
     int biggestX = getBiggestX(widgetList);
     int widthsSum = getWidthsSum(widgetList);
@@ -3698,11 +3723,14 @@
 
     sortWidgetList(widgetList, hasWidgetSmallerX);
 
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
     UMLWidgetListIt it(widgetList);
 
     it = UMLWidgetListIt(widgetList);
 
+    if ( it.isEmpty() )
+        return;
+
     UMLWidget* widgetPrev = it.toFirst();
     ++it;
     while ((widget = it.current()) != 0) {
@@ -3723,7 +3751,7 @@
 
 int UMLView::getSmallestX(const UMLWidgetList &widgetList) {
     UMLWidgetListIt it(widgetList);
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
 
     int smallestX = it.toFirst()->getX();
     ++it;
@@ -3739,8 +3767,11 @@
 
 int UMLView::getSmallestY(const UMLWidgetList &widgetList) {
     UMLWidgetListIt it(widgetList);
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
 
+    if ( it.isEmpty() )
+        return -1;
+
     int smallestY = it.toFirst()->getY();
     ++it;
 
@@ -3755,8 +3786,11 @@
 
 int UMLView::getBiggestX(const UMLWidgetList &widgetList) {
     UMLWidgetListIt it(widgetList);
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
 
+    if ( it.isEmpty() )
+        return -1;
+
     int biggestX = it.toFirst()->getX();
     biggestX += it.current()->getWidth();
     ++it;
@@ -3772,8 +3806,11 @@
 
 int UMLView::getBiggestY(const UMLWidgetList &widgetList) {
     UMLWidgetListIt it(widgetList);
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
 
+    if ( it.isEmpty() )
+        return -1;
+
     int biggestY = it.toFirst()->getY();
     biggestY += it.current()->getHeight();
     ++it;
@@ -3788,7 +3825,7 @@
 }
 
 int UMLView::getHeightsSum(const UMLWidgetList &widgetList) {
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
     UMLWidgetListIt it(widgetList);
 
     int heightsSum = 0;
@@ -3803,7 +3840,7 @@
 }
 
 int UMLView::getWidthsSum(const UMLWidgetList &widgetList) {
-    UMLWidget* widget;
+    UMLWidget* widget = NULL;
     UMLWidgetListIt it(widgetList);
 
     int widthsSum = 0;




More information about the umbrello-devel mailing list