Use the width of the widest line (not the first line) for the max

width of the tooltip.  Also, don't set a narrower width if the tooltip
control already has a wider one.  It will automatically adjust smaller
if needed based on the \n's in the text.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40829 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2006-08-25 22:12:07 +00:00
parent 4d9de11075
commit 543a99218d

View File

@@ -33,6 +33,7 @@
#include "wx/combobox.h"
#endif
#include "wx/tokenzr.h"
#include "wx/msw/private.h"
// include <commctrl.h> "properly"
@@ -326,14 +327,27 @@ void wxToolTip::Add(WXHWND hWnd)
wxLogLastError(wxT("SelectObject(hfont)"));
}
SIZE sz;
if ( !::GetTextExtentPoint32(hdc, m_text, index, &sz) )
// find the width of the widest line
int max = 0;
wxStringTokenizer tokenizer(m_text, _T("\n"));
wxString token = tokenizer.GetNextToken();
while (token.length())
{
wxLogLastError(wxT("GetTextExtentPoint32"));
SIZE sz;
if ( !::GetTextExtentPoint32(hdc, token, token.length(), &sz) )
{
wxLogLastError(wxT("GetTextExtentPoint32"));
}
if ( sz.cx > max )
max = sz.cx;
token = tokenizer.GetNextToken();
}
SendTooltipMessage(GetToolTipCtrl(), TTM_SETMAXTIPWIDTH,
(void *)sz.cx);
// only set a new width if it is bigger than the current setting
if (max > SendTooltipMessage(GetToolTipCtrl(), TTM_GETMAXTIPWIDTH, 0))
SendTooltipMessage(GetToolTipCtrl(), TTM_SETMAXTIPWIDTH,
(void *)max);
}
else
#endif // comctl32.dll >= 4.70