]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/statline.cpp
Don't crash in wxControl::GetLabel when getting the label
[wxWidgets.git] / src / os2 / statline.cpp
index 1e3f3766e16ccfe8da7aca9d50e8c7f299547d9d..cd3343c3be9eb2f2ff24154cfaf921e209d81024 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
+#ifdef __GNUG__
+    #pragma implementation "statline.h"
+#endif
+
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -36,48 +40,65 @@ IMPLEMENT_DYNAMIC_CLASS(wxStaticLine, wxControl)
 // wxStaticLine
 // ----------------------------------------------------------------------------
 
-bool wxStaticLine::Create( wxWindow *parent,
-                           wxWindowID id,
-                           const wxPoint &pos,
-                           const wxSize &size,
-                           long style,
-                           const wxString &name)
+bool wxStaticLine::Create(
+  wxWindow*                         pParent
+, wxWindowID                        vId
+, const wxPoint&                    rPos
+, const wxSize&                     rSize
+, long                              lStyle
+, const wxString&                   rsName
+)
 {
-    if ( !CreateBase(parent, id, pos, size, style, wxDefaultValidator, name) )
+    wxSize                          vSize = AdjustSize(rSize);
+
+    if ( !CreateControl( pParent
+                        ,vId
+                        ,rPos
+                        ,vSize
+                        ,lStyle
+                        ,wxDefaultValidator
+                        ,rsName
+                       ))
         return FALSE;
-
-    parent->AddChild(this);
-
-    wxSize sizeReal = AdjustSize(size);
-
-// TODO:
-/*
-    m_hWnd = (WXHWND)::CreateWindow
-                       (
-                        wxT("STATIC"),
-                        wxT(""),
-                        WS_VISIBLE | WS_CHILD |
-                        SS_GRAYRECT | SS_SUNKEN, // | SS_ETCHEDFRAME,
-                        pos.x, pos.y, sizeReal.x, sizeReal.y,
-                        GetWinHwnd(parent),
-                        (HMENU)m_windowId,
-                        wxGetInstance(),
-                        NULL
-                       );
-
-    if ( !m_hWnd )
-    {
-#ifdef __WXDEBUG__
-        wxLogDebug(wxT("Failed to create static control"));
-#endif
+    if (!OS2CreateControl( "STATIC"
+                          ,SS_FGNDFRAME
+                          ,rPos
+                          ,rSize
+                          ,rsName
+                         ))
         return FALSE;
-    }
 
-    SubclassWin(m_hWnd);
+    wxColour                        vColour;
+
+    vColour.Set(wxString("GREY"));
 
+    LONG                            lColor = (LONG)vColour.GetPixel();
+
+    ::WinSetPresParam( m_hWnd
+                      ,PP_FOREGROUNDCOLOR
+                      ,sizeof(LONG)
+                      ,(PVOID)&lColor
+                     );
     return TRUE;
-*/
-    return FALSE;
-}
-#endif
+} // end of wxStaticLine::Create
 
+WXDWORD wxStaticLine::OS2GetStyle(
+  long                              lStyle
+, WXDWORD*                          pdwExstyle
+) const
+{
+    //
+    // We never have border
+    //
+    lStyle &= ~wxBORDER_MASK;
+    lStyle |= wxBORDER_NONE;
+
+    WXDWORD                         dwStyle = wxControl::OS2GetStyle( lStyle
+                                                                     ,pdwExstyle
+                                                                    );
+    //
+    // Add our default styles
+    //
+    return dwStyle | WS_CLIPSIBLINGS;
+}
+#endif // wxUSE_STATLINE