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
#include "wx/combobox.h"
#endif
#include "wx/combobox.h"
#endif
#include "wx/msw/private.h"
// include <commctrl.h> "properly"
#include "wx/msw/private.h"
// include <commctrl.h> "properly"
wxLogLastError(wxT("SelectObject(hfont)"));
}
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
}
else
#endif // comctl32.dll >= 4.70