]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/stattext.cpp
wxSpinCtrl
[wxWidgets.git] / src / msw / stattext.cpp
index da9906d9881f95fa5d42527de4c3c2b930f0b68f..f1a947d26649f56338ba55d816bb321b796e8e18 100644 (file)
@@ -72,12 +72,12 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
   if ( wxStyleHasBorder(m_windowStyle) )
     msStyle |= WS_BORDER;
 
-  m_hWnd = (WXHWND)::CreateWindowEx(MakeExtendedStyle(m_windowStyle), _T("STATIC"), (const wxChar *)label,
+  m_hWnd = (WXHWND)::CreateWindowEx(MakeExtendedStyle(m_windowStyle), wxT("STATIC"), (const wxChar *)label,
                          msStyle,
                          0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId,
                          wxGetInstance(), NULL);
 
-  wxCHECK_MSG( m_hWnd, FALSE, _T("Failed to create static ctrl") );
+  wxCHECK_MSG( m_hWnd, FALSE, wxT("Failed to create static ctrl") );
 
 #if wxUSE_CTL3D
 /*
@@ -94,38 +94,22 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
   return TRUE;
 }
 
-void wxStaticText::DoSetSize(int x, int y, int width, int height, int sizeFlags)
+wxSize wxStaticText::DoGetBestSize()
 {
-    int currentX, currentY;
-    GetPosition(&currentX, &currentY);
-
-    int x1 = x;
-    int y1 = y;
-
-    if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
-        x1 = currentX;
-    if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
-        y1 = currentY;
-
-    AdjustForParentClientOrigin(x1, y1, sizeFlags);
-
-    int actualWidth = width;
-    int actualHeight = height;
-
     wxString text(wxGetWindowText(GetHWND()));
 
     int widthTextMax = 0, widthLine,
         heightTextTotal = 0, heightLine;
 
     wxString curLine;
-    for ( const char *pc = text; ; pc++ ) {
-        if ( *pc == '\n' || *pc == '\0' ) {
+    for ( const wxChar *pc = text; ; pc++ ) {
+        if ( *pc == wxT('\n') || *pc == wxT('\0') ) {
             GetTextExtent(curLine, &widthLine, &heightLine);
             if ( widthLine > widthTextMax )
                 widthTextMax = widthLine;
             heightTextTotal += heightLine;
 
-            if ( *pc == '\n' ) {
+            if ( *pc == wxT('\n') ) {
                curLine.Empty();
             }
             else {
@@ -138,36 +122,16 @@ void wxStaticText::DoSetSize(int x, int y, int width, int height, int sizeFlags)
         }
     }
 
-    int ww, hh;
-    GetSize(&ww, &hh);
-
-    // If we're prepared to use the existing width, then...
-    if (width == -1 && ((sizeFlags & wxSIZE_AUTO_WIDTH) != wxSIZE_AUTO_WIDTH))
-    {
-        actualWidth = ww;
-    }
-    else if (width == -1)
-    {
-        actualWidth = widthTextMax;
-    }
-    
-    // If we're prepared to use the existing height, then...
-    if (height == -1 && ((sizeFlags & wxSIZE_AUTO_HEIGHT) != wxSIZE_AUTO_HEIGHT))
-    {
-        actualHeight = hh;
-    }
-    else if (height == -1)
-    {
-        actualHeight = heightTextTotal;
-    }
-    
-    MoveWindow(GetHwnd(), x1, y1, actualWidth, actualHeight, TRUE);
+    return wxSize(widthTextMax, heightTextTotal);
 }
 
 void wxStaticText::SetLabel(const wxString& label)
 {
     SetWindowText(GetHwnd(), label);
 
+    // adjust the size of the window to fit to the label (this behaviour is
+    // backward compatible and generally makes sense but we might want to still
+    // provide the user a way to disable it) (VZ)
     DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
 }