Skip to content

Commit

Permalink
Fix ToolStripDoubleButton wrap issue for good (hopefully)
Browse files Browse the repository at this point in the history
  • Loading branch information
cyanfish committed Jan 1, 2016
1 parent 4522274 commit ace28a9
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions NAPS2.Core/WinForms/ToolStripDoubleButton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,14 @@ protected override void OnPaint(PaintEventArgs e)
Height = oldHeight;
Parent = oldParent;

bool wrap = false;
int textWidth = Math.Max(MeasureTextWidth(TextFirst, ref wrap), MeasureTextWidth(TextSecond, ref wrap));
var flags = TextFormatFlags.Left | TextFormatFlags.VerticalCenter;
if (wrap)
{
flags |= TextFormatFlags.WordBreak;
}

if (ImageFirst != null && TextFirst != null)
{
if (Enabled)
Expand All @@ -93,8 +101,8 @@ protected override void OnPaint(PaintEventArgs e)
ControlPaint.DrawImageDisabled(e.Graphics, ImageFirst, Padding.Left, Height / 4 - ImageFirst.Height / 2, Color.Transparent);
}

var textRectangle = new Rectangle(Padding.Left + ImageFirst.Width, 0, Width - (Padding.Left + ImageFirst.Width) + 2, Height / 2);
renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, TextFirst, textRectangle, ForeColor, Font, TextFormatFlags.Left | TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak));
var textRectangle = new Rectangle(Padding.Left + ImageFirst.Width, 0, textWidth, Height / 2);
renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, TextFirst, textRectangle, ForeColor, Font, flags));
}

if (ImageSecond != null && TextSecond != null)
Expand All @@ -108,8 +116,8 @@ protected override void OnPaint(PaintEventArgs e)
ControlPaint.DrawImageDisabled(e.Graphics, ImageSecond, Padding.Left, Height * 3 / 4 - ImageSecond.Height / 2, Color.Transparent);
}

var textRectangle = new Rectangle(Padding.Left + ImageSecond.Width, Height / 2, Width - (Padding.Left + ImageSecond.Width) + 2, Height / 2);
renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, TextSecond, textRectangle, ForeColor, Font, TextFormatFlags.Left | TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak));
var textRectangle = new Rectangle(Padding.Left + ImageSecond.Width, Height / 2, textWidth, Height / 2);
renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, TextSecond, textRectangle, ForeColor, Font, flags));
}

Image = null;
Expand Down

0 comments on commit ace28a9

Please sign in to comment.