Center tab labels and unify dock cursor resolution
This commit is contained in:
@@ -73,6 +73,21 @@ float ResolveTabTextTop(
|
||||
return rect.y + (std::max)(0.0f, (rect.height - kHeaderFontSize) * 0.5f) + metrics.labelInsetY;
|
||||
}
|
||||
|
||||
float ResolveTabTextLeft(
|
||||
const UIRect& rect,
|
||||
const UIEditorTabStripItem& item,
|
||||
const UIEditorTabStripMetrics& metrics) {
|
||||
const float padding =
|
||||
(std::max)(
|
||||
ClampNonNegative(metrics.layoutMetrics.tabHorizontalPadding),
|
||||
ClampNonNegative(metrics.labelInsetX));
|
||||
const float availableLeft = rect.x + padding;
|
||||
const float availableRight = rect.x + rect.width - padding;
|
||||
const float availableWidth = (std::max)(availableRight - availableLeft, 0.0f);
|
||||
const float labelWidth = ResolveEstimatedLabelWidth(item, metrics);
|
||||
return availableLeft + (std::max)(0.0f, (availableWidth - labelWidth) * 0.5f);
|
||||
}
|
||||
|
||||
UIColor ResolveStripBorderColor(
|
||||
const UIEditorTabStripState& state,
|
||||
const UIEditorTabStripPalette& palette) {
|
||||
@@ -387,8 +402,7 @@ void AppendUIEditorTabStripForeground(
|
||||
const UIEditorTabStripPalette& palette,
|
||||
const UIEditorTabStripMetrics& metrics) {
|
||||
AppendHeaderContentSeparator(drawList, layout, palette, metrics);
|
||||
|
||||
const float leftInset = (std::max)(
|
||||
const float horizontalPadding = (std::max)(
|
||||
ClampNonNegative(metrics.layoutMetrics.tabHorizontalPadding),
|
||||
ClampNonNegative(metrics.labelInsetX));
|
||||
|
||||
@@ -396,14 +410,15 @@ void AppendUIEditorTabStripForeground(
|
||||
const UIRect& tabRect = layout.tabHeaderRects[index];
|
||||
const bool selected = layout.selectedIndex == index;
|
||||
const bool hovered = state.hoveredIndex == index;
|
||||
const float textLeft = tabRect.x + leftInset;
|
||||
const float textRight = tabRect.x + tabRect.width - ClampNonNegative(metrics.layoutMetrics.tabHorizontalPadding);
|
||||
const float clipLeft = tabRect.x + horizontalPadding;
|
||||
const float textLeft = ResolveTabTextLeft(tabRect, items[index], metrics);
|
||||
const float textRight = tabRect.x + tabRect.width - horizontalPadding;
|
||||
|
||||
if (textRight > textLeft) {
|
||||
if (textRight > clipLeft) {
|
||||
const UIRect clipRect(
|
||||
textLeft,
|
||||
clipLeft,
|
||||
tabRect.y,
|
||||
textRight - textLeft,
|
||||
textRight - clipLeft,
|
||||
tabRect.height);
|
||||
drawList.PushClipRect(clipRect, true);
|
||||
drawList.AddText(
|
||||
|
||||
@@ -600,6 +600,31 @@ const UIEditorDockHostSplitterLayout* FindUIEditorDockHostSplitterLayout(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
UIEditorDockHostCursorKind ResolveUIEditorDockHostCursorKind(
|
||||
const UIEditorDockHostLayout& layout) {
|
||||
for (const UIEditorDockHostSplitterLayout& splitter : layout.splitters) {
|
||||
if (!splitter.active) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return splitter.axis == UIEditorWorkspaceSplitAxis::Horizontal
|
||||
? UIEditorDockHostCursorKind::ResizeEW
|
||||
: UIEditorDockHostCursorKind::ResizeNS;
|
||||
}
|
||||
|
||||
for (const UIEditorDockHostSplitterLayout& splitter : layout.splitters) {
|
||||
if (!splitter.hovered) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return splitter.axis == UIEditorWorkspaceSplitAxis::Horizontal
|
||||
? UIEditorDockHostCursorKind::ResizeEW
|
||||
: UIEditorDockHostCursorKind::ResizeNS;
|
||||
}
|
||||
|
||||
return UIEditorDockHostCursorKind::Arrow;
|
||||
}
|
||||
|
||||
UIEditorDockHostLayout BuildUIEditorDockHostLayout(
|
||||
const UIRect& bounds,
|
||||
const UIEditorPanelRegistry& panelRegistry,
|
||||
|
||||
Reference in New Issue
Block a user