https://git.reactos.org/?p=reactos.git;a=commitdiff;h=ea0cc1c7831dbe7dec31f4...
commit ea0cc1c7831dbe7dec31f4f495befb5dfa90ab5c Author: Doug Lyons douglyons@douglyons.com AuthorDate: Sun Apr 22 15:42:10 2018 +0200 Commit: Mark Jansen mark.jansen@reactos.org CommitDate: Sun Apr 22 15:42:29 2018 +0200
[BROWSEUI] Apply a hack to prevent truncating the address bar text. CORE-13003 --- dll/win32/browseui/addressband.cpp | 31 +++++++++++++++++++++++++++++-- dll/win32/browseui/addressband.h | 1 + 2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/dll/win32/browseui/addressband.cpp b/dll/win32/browseui/addressband.cpp index c319dbd628..0bc3e971e2 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<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; diff --git a/dll/win32/browseui/addressband.h b/dll/win32/browseui/addressband.h index 5d345bcb14..eaba14282a 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();