From a5172b441536faa918de50b2d248ce900cf047f9 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Sun, 14 Apr 2013 02:48:32 -0400 Subject: [PATCH] Fix bug where application menu items were wrong size ...in horizontal mode, also make CheckItemSizes more efficient --- src/apps/deskbar/ExpandoMenuBar.cpp | 31 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp index 5c7eff6ab7..fb00e0f273 100644 --- a/src/apps/deskbar/ExpandoMenuBar.cpp +++ b/src/apps/deskbar/ExpandoMenuBar.cpp @@ -776,15 +776,17 @@ TExpandoMenuBar::CheckItemSizes(int32 delta) - fDeskbarMenuWidth - kSepItemWidth; int32 iconSize = static_cast(be_app)->IconSize(); float iconOnlyWidth = kIconPadding + iconSize + kIconPadding; - float minItemWidth = fDrawLabel ? iconOnlyWidth + kMinMenuItemWidth - : iconOnlyWidth - kIconPadding; - float maxItemWidth = fDrawLabel ? sMinimumWindowWidth + iconSize - - kMinimumIconSize : iconOnlyWidth; + float minItemWidth = fDrawLabel + ? iconOnlyWidth + kMinMenuItemWidth + : iconOnlyWidth - kIconPadding; + float maxItemWidth = fDrawLabel + ? sMinimumWindowWidth + iconSize - kMinimumIconSize + : iconOnlyWidth; float menuWidth = maxItemWidth * CountItems() + fDeskbarMenuWidth + kSepItemWidth; bool reset = false; - float newWidth = 0.0f; + float newWidth = -1.0f; if (delta >= 0 && menuWidth > maxWidth) { fOverflow = true; @@ -798,15 +800,16 @@ TExpandoMenuBar::CheckItemSizes(int32 delta) newWidth = maxItemWidth; } - if (newWidth > maxItemWidth) - newWidth = maxItemWidth; - else if (newWidth < minItemWidth) - newWidth = minItemWidth; - if (reset) { + if (newWidth > maxItemWidth) + newWidth = maxItemWidth; + else if (newWidth < minItemWidth) + newWidth = minItemWidth; + SetMaxContentWidth(newWidth); if (newWidth == maxItemWidth) fOverflow = false; + InvalidateLayout(); for (int32 index = 0; ; index++) { @@ -819,9 +822,8 @@ TExpandoMenuBar::CheckItemSizes(int32 delta) Invalidate(); Window()->UpdateIfNeeded(); + fBarView->CheckForScrolling(); } - - fBarView->CheckForScrolling(); } @@ -894,8 +896,9 @@ TExpandoMenuBar::CheckForSizeOverrun() int32 iconSize = static_cast(be_app)->IconSize(); float iconOnlyWidth = kIconPadding + iconSize + kIconPadding; - float minItemWidth = fDrawLabel ? iconOnlyWidth + kMinMenuItemWidth - : iconOnlyWidth - kIconPadding; + float minItemWidth = fDrawLabel + ? iconOnlyWidth + kMinMenuItemWidth + : iconOnlyWidth - kIconPadding; float menuWidth = minItemWidth * CountItems() + fDeskbarMenuWidth + kSepItemWidth; float maxWidth = fBarView->DragRegion()->Frame().left