Bug 112293

Summary: clicking on an object in a box selects the box instead of the object
Product: [Applications] umbrello Reporter: Alan Ezust <alan.ezust>
Component: generalAssignee: Umbrello Development Group <umbrello-devel>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Debian testing   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Alan Ezust 2005-09-09 07:55:52 UTC
Version:           3.4.89 (using KDE KDE 3.4.2)
Installed from:    Debian testing/unstable Packages
OS:                Linux

In general, boxes are transparent, but it is often desirable to select/move the items contained inside the box. Currently, when a box is drawn around a bunch of items, and you try to select an object inside the box, the box is always selected instead. The box should only be selected if the clicked area does not coincide with a contained object.
Comment 1 Oliver Kellogg 2005-09-09 08:17:46 UTC
SVN commit 458849 by okellogg:

BUG:112293 - fixEPS(): Supply integer values at the %%BoundingBox.


 M  +1 -1      ChangeLog  
 M  +6 -4      umbrello/umlview.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #458848:458849
@@ -11,7 +11,7 @@
 * Bugs fixed / wishes implemented (see http://bugs.kde.org)
  57588  58809  66461  67719  72016  79433  87252  88117  97162 105564
 108223 109591 109636 110216 110231 110379 111088 111470 111502 111759
-111768 112017
+111768 112017 112293
 
 Version 1.4.2 (maintenance release)
 
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/umlview.cpp #458848:458849
@@ -1388,13 +1388,15 @@
         if (epsfile.open(IO_WriteOnly | IO_Truncate)) {
             // read information
             QRegExp rx("%%BoundingBox:\\s*(-?[\\d\\.]+)\\s*(-?[\\d\\.]+)\\s*(-?[\\d\\.]+)\\s*(-?[\\d\\.]+)");
-            int pos = rx.search(fileContent);
-            float left = rx.cap(1).toFloat();
-            float top = rx.cap(4).toFloat();
+            const int pos = rx.search(fileContent);
+            const int left = (int)rx.cap(1).toFloat();
+            const int right = left + rect.width();
+            const int top = (int)rx.cap(4).toFloat();
+            const int bottom = top - rect.height();
 
             // modify content
             fileContent.replace(pos,rx.cap(0).length(),
-                                QString("%%BoundingBox: %1 %2 %3 %4").arg(left).arg(top-rect.height()).arg(left+rect.width()).arg(top));
+                                QString("%%BoundingBox: %1 %2 %3 %4").arg(left).arg(bottom).arg(right).arg(top));
 
             ts << fileContent;
             epsfile.close();