[Uml-devel] [Bug 146925] End Activity Symbol gets invalid when line thickness is increased

Oliver Kellogg okellogg at users.sourceforge.net
Mon Jun 18 17:47:56 UTC 2007


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=146925         
okellogg users sourceforge net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From okellogg users sourceforge net  2007-06-18 19:47 -------
SVN commit 677222 by okellogg:

draw(): Do not UMLWidget::setPen(p) because that uses the WidgetBase::m_LineWidth.
This is the actual fix for the bug at hand. But while at it, I made further fixes:
UMLWidget::m_bResizable: Set true unconditionally.
constrain(): New. Override virtual method of UMLWidget for better resize behavior.
Activity_Type, Fork_DEPRECATED: Remove.

BUG:146925


 M  +1 -0      ChangeLog  
 M  +37 -12    umbrello/activitywidget.cpp  
 M  +6 -2      umbrello/activitywidget.h  


--- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #677221:677222
 @ -3,6 +3,7  @
 * Bugs/wishes from http://bugs.kde.org:
 * Wrong pascal code generation (146676)
 * Crash when linking to undefined xmi.id (146748)
+* End Activity Symbol gets invalid when line thickness is increased (146925)
 
 Version 1.5.71
 
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/activitywidget.cpp #677221:677222
 @ -62,12 +62,12  @
         UMLWidget::setPen(p);
         break;
     case Initial :
-        UMLWidget::setPen(p);
+        p.setPen( QPen(m_LineColour, 1) );
         p.setBrush( WidgetBase::getLineColor() );
         p.drawEllipse( offsetX, offsetY, w, h );
         break;
     case End :
-        UMLWidget::setPen(p);
+        p.setPen( QPen(m_LineColour, 1) );
         p.setBrush( WidgetBase::getLineColor() );
         p.drawEllipse( offsetX, offsetY, w, h );
         p.setBrush( Qt::white );
 @ -88,16 +88,45  @
             p.drawPolyline( array );
         }
         break;
-    case Fork_DEPRECATED :  // to be removed
-        p.fillRect( offsetX, offsetY, width(), height(), QBrush( Qt::darkYellow ));
-        break;
     }
     if(m_bSelected)
         drawSelected(&p, offsetX, offsetY);
 }
 
+void ActivityWidget::constrain(int& width, int& height) {
+    if (m_ActivityType == Normal) {
+        QSize minSize = calculateSize();
+        if (width < minSize.width())
+            width = minSize.width();
+        if (height < minSize.height())
+            height = minSize.height();
+        return;
+    }
+    if (width > height)
+        width = height;
+    else if (height > width)
+        height = width;
+    if (m_ActivityType == Branch) {
+        if (width < 20) {
+            width = 20;
+            height = 20;
+        } else if (width > 50) {
+            width = 50;
+            height = 50;
+        }
+    } else {
+        if (width < 15) {
+            width = 15;
+            height = 15;
+        } else if (width > 30) {
+            width = 30;
+            height = 30;
+        }
+    }
+}
+
 QSize ActivityWidget::calculateSize() {
-    int width = 10, height = 10;
+    int width, height;
     if ( m_ActivityType == Normal ) {
         const QFontMetrics &fm = getFontMetrics(FT_NORMAL);
         const int fontHeight  = fm.lineSpacing();
 @ -107,7 +136,7  @
         height = height > ACTIVITY_HEIGHT ? height : ACTIVITY_HEIGHT;
         width += ACTIVITY_MARGIN * 2;
         height += ACTIVITY_MARGIN * 2;
-    } else if ( m_ActivityType == Branch ) {
+    } else {
         width = height = 20;
     }
     return QSize(width, height);
 @ -119,7 +148,7  @
 
 void ActivityWidget::setActivityType( ActivityType activityType ) {
     m_ActivityType = activityType;
-    UMLWidget::m_bResizable = (m_ActivityType == Normal);
+    UMLWidget::m_bResizable = true;
 }
 
 void ActivityWidget::slotMenuSelection(int sel) {
 @ -174,10 +203,6  @
     case WorkToolBar::tbb_Branch:
         resultType = Branch;
         break;
-    case WorkToolBar::tbb_Fork:
-        kError() << "ActivityWidget::isActivity returns Fork_DEPRECATED" << endl;
-        resultType = Fork_DEPRECATED;
-        break;
     default:
         status = false;
         break;
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/activitywidget.h #677221:677222
 @ -40,8 +40,7  @
         Initial = 0,
         Normal,
         End,
-        Branch,
-        Fork_DEPRECATED  // use ForkJoinWidget instead
+        Branch
     };
 
     /**
 @ -65,6 +64,11  @
     void draw(QPainter & p, int offsetX, int offsetY);
 
     /**
+     * Overrides Method from UMLWidget.
+     */
+    void constrain(int& width, int& height);
+
+    /**
      * Returns the type of activity.
      */
     ActivityType getActivityType() const;




More information about the umbrello-devel mailing list