diff options
Diffstat (limited to 'mcs/class/System.Windows.Forms/Guidelines')
-rw-r--r-- | mcs/class/System.Windows.Forms/Guidelines | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/mcs/class/System.Windows.Forms/Guidelines b/mcs/class/System.Windows.Forms/Guidelines new file mode 100644 index 00000000000..967ef6c7f6d --- /dev/null +++ b/mcs/class/System.Windows.Forms/Guidelines @@ -0,0 +1,58 @@ + Guidelines for hacking SWF + ========================== + +This document describes some of the minimal coding guidelines +to be followed while hacking the new SWF implementation. These +guidelines are for the sake of consistency. + +1. Please refer to the design document of SWF to understand the + implementation. + +2. Please follow the general coding style described for the Mono + project (/cvs/mcs/class/README). + +3. Method stubbing is highly discouraged. It's recommended to submit + an implemented method instead of just the signature. If you have + to stub a property or method, please use the [MonoTODO ("what")] + attribute to document what still needs to be done. + +4. When you implement the drawing method for a control in a theme, it + should make call to ControlPaint class methods and System.Drawing + classes. If it is not possible to implement a control's draw method + under these restrictions and you need some functionality from + XplatUIDriver, please let us know. We will try to enhance the + driver, if *really* required. + +5. Minimize redraws as much as possible by utilizing the clipRectangle + when possible. + +6. Setting the size of a control raises a resize event even if the + control size is same. Be careful is setting the size and it's better + to avoid changing the control size as much as possible. Wherever + possible try scaling the control bitmap as per the size needs. + +7. Make sure to call the base class event methods when overriding them. + +8. Define regions in your code, as it makes it easy to browse the code + in the editors which can collapse/expand regions. Also, keep the + methods and properties sorted alphabetically. + +9. Last but not the least, please let others on the mono-winforms-list + know about your work, so that duplication can be avoided. + +10. Theme.cs provides Pen and Brush caching. This allows to share + the same brushes and pens between different controls and also to avoid + to create and destroy them in every draw operation. You should not create + Brushes or Pens directly, you should ask the Resource Pool for them. For + example, instead of: + + new SolidBrush(button.BackColor); + + you should use: + + ResPool.GetSolidBrush (button.BackColor); + + Look at SystemResPool class for more details. + +Happy hacking! + |