[Mono-bugs] [Bug 363367] New: TreeView plus/minus box fails with owner drawn checkboxes

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Feb 20 13:18:35 EST 2008


https://bugzilla.novell.com/show_bug.cgi?id=363367


           Summary: TreeView plus/minus box fails with owner drawn
                    checkboxes
           Product: Mono: Class Libraries
           Version: 1.2.6
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Windows.Forms
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: derekd at omni-ts.com
         QAContact: mono-bugs at lists.ximian.com
                CC: stephane at omni-ts.com
          Found By: ---


If you have an owner drawn checkbox the plus minus is treated as if it is where
the checkbox is located.

To reproduce:
1. Create a TreeView
2. Set CheckBoxes = false
3. Create an ImageList with 2 images
4. Set TreeView.StateImageList to the ImageList created above
5. Create some nodes with children and set the StateImageIndex to 0 for each of
them
6. Run
7. Click on a plus/minus box next to a node.

(NOTE: see bug 363353 if the above setup causes an exception in Mono.)

Actual Result:
Clicking on plus/minus does nothing. However click the checkbox does
expand/collapse the tree.

Expectant Result:
Clicking on plus/minus expands/collapses tree. Click checkbox won't do anything
unless coded explicitly to do so.

Observation:
It is just detecting the plus/minus box at the wrong location. See the code
below from TreeView:

                private bool IsPlusMinusArea (TreeNode node, int x)
                {
                        ...
                        int l = node.Bounds.Left + 5;

                        if (show_root_lines || node.Parent != null)
                                l -= indent;
                        if (ImageList != null)
                                l -= ImageList.ImageSize.Width + 3;
*see here: >>>>>        if (checkboxes)
                                l -= 19;
                        return (x > l && x < l + 8);
                }

                *maybe should be "if (checkboxes || StateImageList !=null)


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list