TabControlPainter.cs: Horizontally center Text and Image when SizeMode = Fixed.
authorThomas Goldstein <stifu@free.fr>
Fri, 11 Feb 2011 23:08:01 +0000 (00:08 +0100)
committerThomas Goldstein <stifu@free.fr>
Fri, 11 Feb 2011 23:20:03 +0000 (00:20 +0100)
mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/TabControlPainter.cs

index c770d85b450c5ea07c1912f828ac22d18a0eb248..f3d4e9f181e792a7b2a5d9f8bedccbce0377f6ab 100644 (file)
@@ -447,8 +447,19 @@ namespace System.Windows.Forms.Theming.Default
                                        Rectangle str_rect = interior;\r
 \r
                                        if (tab.ImageList != null && page.ImageIndex >= 0 && page.ImageIndex < tab.ImageList.Images.Count) {\r
-                                               int image_y = interior.Y + (interior.Height - tab.ImageList.ImageSize.Height) / 2;\r
-                                               tab.ImageList.Draw (dc, new Point (interior.X, image_y), page.ImageIndex);\r
+                                               int image_x;\r
+                                               if (tab.SizeMode != TabSizeMode.Fixed) {\r
+                                                       image_x = str_rect.X;\r
+                                               }\r
+                                               else {\r
+                                                       image_x = str_rect.X + (str_rect.Width - tab.ImageList.ImageSize.Width) / 2;\r
+                                                       if (page.Text != null) {\r
+                                                               SizeF textSize = dc.MeasureString(page.Text, page.Font, str_rect.Size);\r
+                                                               image_x -= (int)(textSize.Width / 2);\r
+                                                       }\r
+                                               }\r
+                                               int image_y = str_rect.Y + (str_rect.Height - tab.ImageList.ImageSize.Height) / 2;\r
+                                               tab.ImageList.Draw (dc, new Point (image_x, image_y), page.ImageIndex);\r
                                                str_rect.X += tab.ImageList.ImageSize.Width + 2;\r
                                                str_rect.Width -= tab.ImageList.ImageSize.Width + 2;\r
                                        }\r