fGoButton = NULL;
fComboBox = NULL;
fGoButtonShown = false;
+ fAdjustNeeded = 0;
}
CAddressBand::~CAddressBand()
{
if (pdbi->dwMask & DBIM_MINSIZE)
{
- pdbi->ptMinSize.x = 100;
+ if (fGoButtonShown)
+ pdbi->ptMinSize.x = 100;
+ else
+ pdbi->ptMinSize.x = 150;
pdbi->ptMinSize.y = 22;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
- pdbi->ptActual.x = 100;
+ if (fGoButtonShown)
+ pdbi->ptActual.x = 100;
+ else
+ pdbi->ptActual.x = 150;
pdbi->ptActual.y = 22;
}
if (pdbi->dwMask & DBIM_TITLE)
long newHeight;
long newWidth;
+ fAdjustNeeded = 1;
+
if (fGoButtonShown == false)
{
bHandled = FALSE;
positionInfoCopy = *reinterpret_cast<WINDOWPOS *>(lParam);
newHeight = positionInfoCopy.cy;
newWidth = positionInfoCopy.cx;
+
+/*
+ Sometimes when we get here newWidth = 100 which comes from GetBandInfo and is less than the 200 that we need.
+ We need room for the "Address" text (50 pixels), the "GoButton" (50 pixels), the left and right borders (30 pixels)
+ the icon (20 pixels) and the ComboBox (50 pixels) for handling the text of the current directory. This is 200 pixels.
+ When newWidth = 100 the Addressband ComboBox will only have a single character because it becomes 2 pixels wide.
+ The hack below readjusts the width to the minimum required to allow seeing the whole text and prints out a debug message.
+*/
+
+ if ((newWidth < 200) && (newWidth != 0))
+ {
+ if (fAdjustNeeded == 1)
+ {
+ ERR("CORE-13003 HACK: Addressband ComboBox width readjusted from %ld to 200.\n", newWidth);
+ newWidth = 200;
+ fAdjustNeeded = 0;
+ }
+ }
SendMessage(fGoButton, TB_GETITEMRECT, 0, reinterpret_cast<LPARAM>(&buttonBounds));
buttonWidth = buttonBounds.right - buttonBounds.left;