| Anonymous | Login | Signup for a new account | 09-06-2010 06:01 UTC |
| Main | My View | View Issues | Change Log | Docs |
| Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||||
| ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
| 0007469 | [Squeak] Morphic | major | always | 03-03-10 06:24 | 04-18-10 21:51 | ||||
| Reporter | rpboland | View Status | public | ||||||
| Assigned To | laza | ||||||||
| Priority | normal | Resolution | unable to reproduce | ||||||
| Status | closed | Product Version | 3.10.2 | ||||||
| Summary | 0007469: GUI drawn with widgets outside of main window | ||||||||
| Description |
I think this bug is between minor and major. You judge. I have a problem with the GUI for my project. I have been rewriting the GUI to use ProportionalLayout so that the layout can be scaled by the user. However, now that I use ProportionalLayout many of the widgets go way to the right of the end of the main window. If fact the end of the rightmost widget is about a screenful and a half past the left of the main window and about twice as far to the right as the right end of the window. My GUI is based on the GUI for SmaCCDev so I checked the SmaCCDev GUI and discovered that the same problem occurs with the SmaCCDev GUI and so the problem appears to be a Squeak bug. I then moved a couple of GUI widgets to be offset from the right of main window rather than the left to make the bug more clear. At least the SmaCCDev GUI version of the bug fits on my screen. I then added code to help me find the problem which turns out to be with class Morph. My GUI and the SmaCCDev GUI consists of a number of pages and the class of each page is Morph. Morph has a method called minExtent which seems to take the current size as a minimum value for minExtent but may return a larger value because of submorphs requiring it. If my main window size is large and I shrink it to a sufficiently small size then before minExtent is called the value of bounds for the page Morph is set to a specific value (in the X direction the value is 300 for the SmaCCDev GUI and over 1000 for my GUI) and then once minExtent is called the then current value of bounds is returned as the minExtent. This is of course larger than required and the widgets are drawn using this larger value. Meanwhile the main window uses the smaller extent value as it should. Thus the mess. So I tried to determine who was setting the bounds instance variable before minExtent was called. I set breakpoints wherever the bounds instance variable was modified (I needed to put conditions around these breakpoints to avoid uninterruptable infinite loops.). This didn't find the culprit. So everywhere bounds or its instance variables were returned by Morph methods I had copies returned instead. This didn't help. (The mcz file provided does not include the changes to Morph where I added copy code.) Finally, I searched for primitives that might be called my Morph (that might modify the bounds instance variable) but found none. I am at my wits end. It seems that no one modified the bounds variable and that it changed all on its own? Since this appears to be a Squeak bug I have generated this Mantis bug report and attached code based on the SmaccDev GUI code to reproduce the bug with my debug code included. I am hoping someone can look at this and figure out the bug (and tell me why I couldn't find it). I also have a GUI now that doesn't work and I don't want to revert back to a fixed size GUI so a prompt fix would be appreciated (though not necessarily expected). |
||||||||
| Additional Information |
I need this bug fixed so if you need any further information let me know. If you send me code I will test it out. Have fun. Ralph Boland |
||||||||
| Attached Files |
|
||||||||
|
|
|||||||||
| Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
63 total queries executed. 42 unique queries executed. |