# HG changeset patch # User IBBoard # Date 1271600732 0 # Node ID 5d9d4c75305f1090e49034785375e1d5acdbdf76 # Parent 51463bc1fb212c926fc96457a429e4e0dc7aa71f Fixes #250: New panels don't work perfectly in Linux through Mono * Manually size the panel based on the contents diff -r 51463bc1fb21 -r 5d9d4c75305f FrmMain.cs --- a/FrmMain.cs Sun Apr 18 14:22:10 2010 +0000 +++ b/FrmMain.cs Sun Apr 18 14:25:32 2010 +0000 @@ -977,7 +977,6 @@ int catCount = cats.Length; Category cat; IBBToolStripButton[] categoryButtons = new IBBToolStripButton[catCount]; - int buttonWidths = 0; for (int i = 0; i < catCount; i++) { @@ -989,13 +988,25 @@ button.Enabled = false; button.Click += new EventHandler(CreateUnitForCategoryButtonClick); categoryButtons[i] = button; - buttonWidths += button.Width; } + this.Invoke(new ArrayMethodInvoker(AddCatToolStripButtons), new object[] { categoryButtons }); + } + + private void AddCatToolStripButtons(IBBToolStripButton[] buttons) + { log.Debug("Toolstrip width: " + catToolStrip.Width); + catToolStrip.Items.AddRange(buttons); + catToolStrip.Refresh(); + int buttonWidths = 0; + + foreach (IBBToolStripButton button in buttons) + { + buttonWidths += button.Width; + } + catToolStrip.Width = buttonWidths; log.Debug("Button widths: " + buttonWidths); - - this.Invoke(new ArrayMethodInvoker(catToolStrip.Items.AddRange), new object[]{ categoryButtons }); + log.Debug("Toolstrip width: " + catToolStrip.Width); } private void CreateUnitForCategoryButtonClick(object sender, EventArgs e)