diff --git a/dll/win32/browseui/addressband.cpp b/dll/win32/browseui/addressband.cpp index c319dbd628b..0bc3e971e2e 100644 --- a/dll/win32/browseui/addressband.cpp +++ b/dll/win32/browseui/addressband.cpp @@ -43,6 +43,7 @@ CAddressBand::CAddressBand() fGoButton = NULL; fComboBox = NULL; fGoButtonShown = false; + fAdjustNeeded = 0; } CAddressBand::~CAddressBand() @@ -66,7 +67,10 @@ HRESULT STDMETHODCALLTYPE CAddressBand::GetBandInfo(DWORD dwBandID, DWORD dwView { 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) @@ -81,7 +85,10 @@ HRESULT STDMETHODCALLTYPE CAddressBand::GetBandInfo(DWORD dwBandID, DWORD dwView } 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) @@ -451,6 +458,8 @@ LRESULT CAddressBand::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHan long newHeight; long newWidth; + fAdjustNeeded = 1; + if (fGoButtonShown == false) { bHandled = FALSE; @@ -505,6 +514,24 @@ LRESULT CAddressBand::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lPara positionInfoCopy = *reinterpret_cast(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(&buttonBounds)); buttonWidth = buttonBounds.right - buttonBounds.left; diff --git a/dll/win32/browseui/addressband.h b/dll/win32/browseui/addressband.h index 5d345bcb140..eaba14282af 100644 --- a/dll/win32/browseui/addressband.h +++ b/dll/win32/browseui/addressband.h @@ -43,6 +43,7 @@ private: bool fGoButtonShown; HIMAGELIST m_himlNormal; HIMAGELIST m_himlHot; + INT fAdjustNeeded; public: CAddressBand();