]> git.saurik.com Git - wxWidgets.git/commitdiff
Use the width of the widest line (not the first line) for the max
authorRobin Dunn <robin@alldunn.com>
Fri, 25 Aug 2006 22:12:07 +0000 (22:12 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 25 Aug 2006 22:12:07 +0000 (22:12 +0000)
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

src/msw/tooltip.cpp

index fe6f37ee05aaec29324809c2840ca44e4ee0197b..0f3f8558d8dafc995fb1e29dec476f8ae39e22b5 100644 (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