]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/tooltip.cpp
call GTKUpdateCursor() from SetCursor()
[wxWidgets.git] / 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