Jonathan Pobst wrote:
How about this one?

Yes, this patch fixes my issue.

Unfortunately, it breaks things elsewhere: see attached screenshot for the sample.

I'm using the following definition of PopupMenu with the rest of my previously sent sample file untouched:

    public class PopupMenu : ToolStripDropDown
    {
        public PopupMenu()
        {
ToolStripMenuItem menuItem1 = new ToolStripMenuItem("menuItem1");
            menuItem1.DropDownItems.Add("test1");
            ToolStripLabel label1 = new ToolStripLabel("label1");
            ToolStripButton button1 = new ToolStripButton("button1");
ToolStripDropDownButton ddbtn1 = new ToolStripDropDownButton("ddbtn1");

            this.Items.Add(menuItem1);
            this.Items.Add(label1);
            this.Items.Add(button1);
            this.Items.Add(ddbtn1);
        }
    }

I'm now trying to properly override CalcPreferredSize method in ToolStripItem-derived classes to fix the whole issue. My progress on this is, well... fair. ;)

BTW, lets not forget about ToolStripDropDownMenu--it has it's own copy-pasted implementation of OnLayout method with minor changes.

--
Alex

Jonathan


Alex Shulgin wrote:
Jonathan Pobst wrote:
Does the attached patch fix the issue for you?

Well, partially.

The height is determined correctly, but there's still extra decoration to the left and right of the hosted item as demonstrated on attached screenshot.

Like your first email says, we need to figure out why that 68 is there. It is a crutch to support the common case, but it messes up less common cases like this.

While your patch works around the issue, its not the correct solution. This 68 needs to be dynamically calculated from something, whether its margins or paddings or preferred sizes of MenuItems.

I will try to look at this some this week if you don't want to dig any deeper.

Hi,

Thanks for your responses!

Apparently, .NET ToolStripDropDown behaves differently when it's hosted inside ToolStrip and when it's used standalone.

I'm attaching a sample .cs and a PNG screenshot to demonstrate the difference.

So possibly, the correct solution would be to introduce some flag that indicates the drop down is used standalone (or determine this from the existing data like missing Owner, etc.) and adjust layout and painting accordingly.

--
Alex

------------------------------------------------------------------------


<<inline: tsdd-patch-broken-menu.png>>

_______________________________________________
Mono-winforms-list maillist  -  Mono-winforms-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

Reply via email to