Rebar Completeness Audit

Robert Shearman rob at codeweavers.com
Tue Oct 19 16:36:23 CDT 2004


Hi,

Please note that I have no intention of working on this control. 
Volunteers are welcome to attack this list of missing features.

Changelog:
Rebar completeness audit.
-------------- next part --------------
Index: wine/dlls/comctl32/rebar.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/rebar.c,v
retrieving revision 1.96
diff -u -p -r1.96 rebar.c
--- wine/dlls/comctl32/rebar.c	4 Oct 2004 19:07:24 -0000	1.96
+++ wine/dlls/comctl32/rebar.c	19 Oct 2004 16:23:22 -0000
@@ -1,26 +1,5 @@
 /*
- * Testing: set to 1 to make background brush *always* green
- */
-#define GLATESTING 0
-
-/*
- *
- * 2.  At "FIXME:  problem # 2" WinRAR:
- *   if "#if 1" then last band draws in separate row
- *   if "#if 0" then last band draws in previous row *** just like native ***
- *
- */
-#define PROBLEM2 0
-
-/*
- * 3. REBAR_MoveChildWindows should have a loop because more than
- *    one pass is made (together with the RBN_CHILDSIZEs) is made on
- *    at least RB_INSERTBAND
- */
-
-
-/*
- * Rebar control    rev 8e
+ * Rebar control
  *
  * Copyright 1998, 1999 Eric Kohl
  *
@@ -38,105 +17,76 @@
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * NOTES
- *   An author is needed! Any volunteers?
- *   I will only improve this control once in a while.
- *     Eric <ekohl at abo.rhein-zeitung.de>
- *
- * TODO:
- *   - vertical placement
- *   - ComboBox and ComboBoxEx placement
- *   - center image
- *   - Layout code.
- *   - Display code.
- *   - Some messages.
- *   - All notifications.
+ *
+ * This code was audited for completeness against the documented features
+ * of Comctl32.dll version 6.0 on Mar. 14, 2004, by Robert Shearman.
+ * 
+ * Unless otherwise noted, we believe this code to be complete, as per
+ * the specification mentioned above.
+ * If you discover missing features or bugs please note them below.
+ *
+ * TODO
+ *   Styles:
+ *   - RBS_DBLCLKTOGGLE
+ *   - RBS_FIXEDORDER
+ *   - RBS_REGISTERDROP
+ *   - RBS_TOOLTIPS
+ *   - CCS_NORESIZE
+ *   - CCS_NOMOVEX
+ *   - CCS_NOMOVEY
+ *   Messages:
+ *   - RB_BEGINDRAG
+ *   - RB_DRAGMOVE
+ *   - RB_ENDDRAG
+ *   - RB_GETBANDMARGINS
+ *   - RB_GETCOLORSCHEME
+ *   - RB_GETDROPTARGET
+ *   - RB_GETPALETTE
+ *   - RB_SETCOLORSCHEME
+ *   - RB_SETPALETTE
+ *   - RB_SETTOOLTIPS
+ *   - WM_CHARTOITEM
+ *   - WM_LBUTTONDBLCLK
+ *   - WM_MEASUREITEM
+ *   - WM_PALETTECHANGED
+ *   - WM_PRINTCLIENT
+ *   - WM_QUERYNEWPALETTE
+ *   - WM_RBUTTONDOWN
+ *   - WM_RBUTTONUP
+ *   - WM_SYSCOLORCHANGE
+ *   - WM_VKEYTOITEM
+ *   - WM_WININICHANGE
+ *   Notifications:
+ *   - NM_HCHITTEST
+ *   - NM_RELEASEDCAPTURE
+ *   - RBN_AUTOBREAK
+ *   - RBN_GETOBJECT
+ *   - RBN_MINMAX
+ *   Band styles:
+ *   - RBBS_FIXEDBMP
+ *   Native uses (on each draw!!) SM_CYBORDER (or SM_CXBORDER for CCS_VERT)
+ *   to set the size of the separator width (the value SEP_WIDTH_SIZE
+ *   in here). Should be fixed!!
+ */
+
+/*
+ * Testing: set to 1 to make background brush *always* green
+ */
+#define GLATESTING 0
+
+/*
+ *
+ * 2.  At "FIXME:  problem # 2" WinRAR:
+ *   if "#if 1" then last band draws in separate row
+ *   if "#if 0" then last band draws in previous row *** just like native ***
+ *
+ */
+#define PROBLEM2 0
 
- * Changes Guy Albertelli <galberte at neo.lrun.com>
- *  rev 2,3,4
- *   - Implement initial version of row grouping, row separators,
- *     text and background colors. Support additional messages.
- *     Support RBBS_BREAK. Implement ERASEBKGND and improve painting.
- *  rev 5
- *   - implement support for dragging Gripper left or right in a row. Supports
- *     WM_LBUTTONDOWN, WM_LBUTTONUP, and WM_MOUSEMOVE. Also support
- *     RBS_BANDBORDERS.
- *  rev 6
- *   - Fix or implement notifications for RBN_HEIGHTCHANGE, RBN_CHILDSIZE.
- *   - Correct styles RBBS_NOGRIPPER, RBBS_GRIPPERALWAYS, and RBBS_FIXEDSIZE.
- *   - Fix algorithm for Layout and AdjustBand.
- *
- * rev 7
- *   - Fix algorithm for _Layout and _AdjustBand.
- *   - Fix or implement RBN_ENDDRAG, RB_MOVEBAND, WM_SETREDRAW,
- *     WM_STYLECHANGED, RB_MINIMIZEBAND, RBBS_VARIABLEHEIGHT, RBS_VARHEIGHT,
- *     RBBS_HIDDEN, WM_NOTIFYFORMAT, NM_NCHITTEST, WM_SETREDRAW, RBS_AUTOSIZE,
- *     WM_SETFONT, RBS_BORDERS
- *   - Create structures in WM_NCCREATE
- *   - Additional performance enhancements.
- *
- * rev 8
- *  1. Create array of start and end band indexes by row and use.
- *  2. Fix problem with REBAR_Layout Phase 2b to process only if only
- *     band in row.
- *  3. Set the Caption Font (Regular) as default font for text.
- *  4. Delete font handle on control distruction.
- *  5. Add UpdateWindow call in _MoveChildWindows to match repainting done
- *     by native control
- *  6. Improve some traces.
- *  7. Invalidate window rectangles after SetBandInfo, InsertBand, ShowBand
- *     so that repainting is correct.
- *  8. Implement RB_MAXIMIZEBAND for the "ideal=TRUE" case.
- *  9. Implement item custom draw notifications partially. Only done for
- *     ITEMPREPAINT and ITEMPOSTPAINT. (Used by IE4 for "Favorites" frame
- *     to draw the word "Favorites").
- * rev 8a
- * 10. Handle CCS_NODIVIDER and fix WS_BORDER code.
- * 11. Fix logic error in _AdjustBands where flag was set to valid band
- *     number (0) to indicate *no* band.
- * 12. Fix CCS_VERT errors in _ForceResize, _NCCalcSize, and _NCPaint.
- * 13. Support some special cases of CCS_TOP (and therefore CCS_LEFT),
- *     CCS_BOTTOM (and therefore CCS_RIGHT) and CCS_NOPARENTALIGN. Not
- *     at all sure whether this is all cases.
- * 14. Handle returned value for the RBN_CHILDSIZE notify.
- * 15. Implement RBBS_CHILDEDGE, and set each bands "offChild" at _Layout
- *     time.
- * 16. Fix REBARSPACE. It should depend on CCS_NODIVIDER.
- * rev 8b
- * 17. Fix determination of whether Gripper is needed in _ValidateBand.
- * 18. Fix _AdjustBand processing of RBBS_FIXEDSIZE.
- * rev 8c
- * 19. Fix problem in _Layout when all lengths are 0.
- * 20. If CLR_NONE specified, we will use default BtnFace color when drawing.
- * 21. Fix test in REBAR_Layout.
- * rev 8d
- * 22. Add support for WM_WINDOWPOSCHANGED to save new origin of window.
- * 23. Correct RBN_CHILDSIZE rect value for CCS_VERT rebar.
- * 24. Do UpdateWindow only if doing redraws.
- * rev 8e
- * 25. Adjust setting of offChild.cx based on RBBS_CHILDEDGE.
- *
- *
- *    Still to do:
- *  2. Following still not handled: RBBS_FIXEDBMP,
- *            CCS_NORESIZE,
- *            CCS_NOMOVEX, CCS_NOMOVEY
- *  3. Following are only partially handled:
- *            RBS_AUTOSIZE, RBBS_VARIABLEHEIGHT
- *  5. Native uses (on each draw!!) SM_CYBORDER (or SM_CXBORDER for CCS_VERT)
- *     to set the size of the separator width (the value SEP_WIDTH_SIZE
- *     in here). Should be fixed!!
- *  6. The following messages are not implemented:
- *        RB_BEGINDRAG, RB_DRAGMOVE, RB_ENDDRAG, RB_GETCOLORSCHEME,
- *        RB_GETDROPTARGET, RB_MAXIMIZEBAND,
- *        RB_SETCOLORSCHEME, RB_SETPALETTE, RB_SETTOOLTIPS
- *        WM_CHARTOITEM, WM_LBUTTONDBLCLK, WM_MEASUREITEM,
- *        WM_PALETTECHANGED, WM_PRINTCLIENT, WM_QUERYNEWPALETTE,
- *        WM_RBUTTONDOWN, WM_RBUTTONUP,
- *        WM_SYSCOLORCHANGE, WM_VKEYTOITEM, WM_WININICHANGE
- *  7. The following notifications are not implemented:
- *        NM_CUSTOMDRAW, NM_RELEASEDCAPTURE
- *        RBN_MINMAX
+/*
+ * 3. REBAR_MoveChildWindows should have a loop because more than
+ *    one pass is made (together with the RBN_CHILDSIZEs) is made on
+ *    at least RB_INSERTBAND
  */
 
 #include <stdarg.h>


More information about the wine-patches mailing list