Fix bug where application menu items were wrong size

...in horizontal mode, also make CheckItemSizes more efficient
This commit is contained in:
John Scipione
2013-04-14 02:49:37 -04:00
parent 251ece3c74
commit a5172b4415
+17 -14
View File
@@ -776,15 +776,17 @@ TExpandoMenuBar::CheckItemSizes(int32 delta)
- fDeskbarMenuWidth - kSepItemWidth; - fDeskbarMenuWidth - kSepItemWidth;
int32 iconSize = static_cast<TBarApp*>(be_app)->IconSize(); int32 iconSize = static_cast<TBarApp*>(be_app)->IconSize();
float iconOnlyWidth = kIconPadding + iconSize + kIconPadding; float iconOnlyWidth = kIconPadding + iconSize + kIconPadding;
float minItemWidth = fDrawLabel ? iconOnlyWidth + kMinMenuItemWidth float minItemWidth = fDrawLabel
: iconOnlyWidth - kIconPadding; ? iconOnlyWidth + kMinMenuItemWidth
float maxItemWidth = fDrawLabel ? sMinimumWindowWidth + iconSize : iconOnlyWidth - kIconPadding;
- kMinimumIconSize : iconOnlyWidth; float maxItemWidth = fDrawLabel
? sMinimumWindowWidth + iconSize - kMinimumIconSize
: iconOnlyWidth;
float menuWidth = maxItemWidth * CountItems() + fDeskbarMenuWidth float menuWidth = maxItemWidth * CountItems() + fDeskbarMenuWidth
+ kSepItemWidth; + kSepItemWidth;
bool reset = false; bool reset = false;
float newWidth = 0.0f; float newWidth = -1.0f;
if (delta >= 0 && menuWidth > maxWidth) { if (delta >= 0 && menuWidth > maxWidth) {
fOverflow = true; fOverflow = true;
@@ -798,15 +800,16 @@ TExpandoMenuBar::CheckItemSizes(int32 delta)
newWidth = maxItemWidth; newWidth = maxItemWidth;
} }
if (newWidth > maxItemWidth)
newWidth = maxItemWidth;
else if (newWidth < minItemWidth)
newWidth = minItemWidth;
if (reset) { if (reset) {
if (newWidth > maxItemWidth)
newWidth = maxItemWidth;
else if (newWidth < minItemWidth)
newWidth = minItemWidth;
SetMaxContentWidth(newWidth); SetMaxContentWidth(newWidth);
if (newWidth == maxItemWidth) if (newWidth == maxItemWidth)
fOverflow = false; fOverflow = false;
InvalidateLayout(); InvalidateLayout();
for (int32 index = 0; ; index++) { for (int32 index = 0; ; index++) {
@@ -819,9 +822,8 @@ TExpandoMenuBar::CheckItemSizes(int32 delta)
Invalidate(); Invalidate();
Window()->UpdateIfNeeded(); Window()->UpdateIfNeeded();
fBarView->CheckForScrolling();
} }
fBarView->CheckForScrolling();
} }
@@ -894,8 +896,9 @@ TExpandoMenuBar::CheckForSizeOverrun()
int32 iconSize = static_cast<TBarApp*>(be_app)->IconSize(); int32 iconSize = static_cast<TBarApp*>(be_app)->IconSize();
float iconOnlyWidth = kIconPadding + iconSize + kIconPadding; float iconOnlyWidth = kIconPadding + iconSize + kIconPadding;
float minItemWidth = fDrawLabel ? iconOnlyWidth + kMinMenuItemWidth float minItemWidth = fDrawLabel
: iconOnlyWidth - kIconPadding; ? iconOnlyWidth + kMinMenuItemWidth
: iconOnlyWidth - kIconPadding;
float menuWidth = minItemWidth * CountItems() + fDeskbarMenuWidth float menuWidth = minItemWidth * CountItems() + fDeskbarMenuWidth
+ kSepItemWidth; + kSepItemWidth;
float maxWidth = fBarView->DragRegion()->Frame().left float maxWidth = fBarView->DragRegion()->Frame().left