public override int GetButtonWidth(DockLayout dockLayout, AppearanceObject appearance, bool isHorizontal) { int result = 0; Graphics g = Painter.AddGraphics(null); if (dockLayout.Tabbed) { try { int imageSize = (isHorizontal ? GetImageSize(dockLayout).Width : GetImageSize(dockLayout).Height); int defImageSize = (isHorizontal ? GetDefaultImageSize(dockLayout).Width : GetDefaultImageSize(dockLayout).Height); int imageInterval = (imageSize > 0 ? HideBarHorzInterval : 0); for (int i = 0; i < dockLayout.Count; i++) { if (dockLayout[i].Visibility == DockVisibility.Visible) { layout = dockLayout[i]; int width = GetTabButtonWidth(dockLayout[i]); result += width + TabButtonsInterval; } } } finally { Painter.ReleaseGraphics(); } } else { return(base.GetButtonWidth(dockLayout, appearance, isHorizontal)); } return(result); }
protected int GetTabButtonWidth(DockLayout layout) { AppearanceObject appearance = layout.DockManager.ActivePanel == layout.Panel ? layout.ActiveTabAppearance : layout.TabsAppearance; Graphics g = Painter.AddGraphics(null); int imageSize = (layout.IsHorizontal ? GetImageSize(layout).Width : GetImageSize(layout).Height); int defImageSize = (layout.IsHorizontal ? GetDefaultImageSize(layout).Width : GetDefaultImageSize(layout).Height); int imageInterval = (imageSize > 0 ? HideBarHorzInterval : 0); int width = Math.Max(DockElementsPainter.CalcTextSize(g, appearance, layout.TabText).Width + imageSize + imageInterval, defImageSize) + 10; Painter.ReleaseGraphics(); return(width); }