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
+11 -8
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 + kMinMenuItemWidth
: iconOnlyWidth - kIconPadding; : iconOnlyWidth - kIconPadding;
float maxItemWidth = fDrawLabel ? sMinimumWindowWidth + iconSize float maxItemWidth = fDrawLabel
- kMinimumIconSize : iconOnlyWidth; ? 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 (reset) {
if (newWidth > maxItemWidth) if (newWidth > maxItemWidth)
newWidth = maxItemWidth; newWidth = maxItemWidth;
else if (newWidth < minItemWidth) else if (newWidth < minItemWidth)
newWidth = minItemWidth; newWidth = minItemWidth;
if (reset) {
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,7 +896,8 @@ 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 + kMinMenuItemWidth
: iconOnlyWidth - kIconPadding; : iconOnlyWidth - kIconPadding;
float menuWidth = minItemWidth * CountItems() + fDeskbarMenuWidth float menuWidth = minItemWidth * CountItems() + fDeskbarMenuWidth
+ kSepItemWidth; + kSepItemWidth;