X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b3260bce473ab247edd8ca1d3aee4eb648b4b97e..78ca56690e93e14af43f5b6f090f474a0ff7d736:/src/os2/control.cpp diff --git a/src/os2/control.cpp b/src/os2/control.cpp index 3ed6d787a0..324ea885b2 100644 --- a/src/os2/control.cpp +++ b/src/os2/control.cpp @@ -5,7 +5,7 @@ // Modified by: // Created: 09/17/99 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem +// Copyright: (c) Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -21,6 +21,7 @@ #include "wx/app.h" #include "wx/dcclient.h" #include "wx/scrolwin.h" +#include "wx/log.h" #endif #include "wx/os2/private.h" #include "wx/control.h" @@ -34,10 +35,6 @@ END_EVENT_TABLE() // Item members wxControl::wxControl() { - -#if WXWIN_COMPATIBILITY - m_callback = 0; -#endif // WXWIN_COMPATIBILITY } // end of wxControl::wxControl bool wxControl::Create( @@ -46,9 +43,7 @@ bool wxControl::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { @@ -74,35 +69,25 @@ wxControl::~wxControl() } bool wxControl::OS2CreateControl( - wxWindow* pParent -, wxWindowID vId + const wxChar* zClassname +, const wxString& rsLabel , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS -, const wxValidator& rValidator -#endif -, const wxString& rsName ) { - // - // Even if it's possible to create controls without parents in some port, - // it should surely be discouraged because it doesn't work at all under - // Windows - // - if (!CreateBase( pParent - ,vId - ,rPos - ,rSize - ,lStyle -#if wxUSE_VALIDATORS - ,rValidator -#endif - ,rsName - )) - return FALSE; - pParent->AddChild(this); - return TRUE; + WXDWORD dwExstyle; + WXDWORD dwStyle = OS2GetStyle( lStyle + ,&dwExstyle + ); + + return OS2CreateControl( zClassname + ,dwStyle + ,rPos + ,rSize + ,rsLabel + ,dwExstyle + ); } // end of wxControl::OS2CreateControl bool wxControl::OS2CreateControl( @@ -114,17 +99,20 @@ bool wxControl::OS2CreateControl( , WXDWORD dwExstyle ) { - int nX = rPos.x == -1 ? 0 : rPos.x; - int nY = rPos.y == -1 ? 0 : rPos.y; - int nW = rSize.x == -1 ? 0 : rSize.x; - int nH = rSize.y == -1 ? 0 : rSize.y; // // Doesn't do anything at all under OS/2 // if (dwExstyle == (WXDWORD)-1) { - dwExstyle = GetExStyle(dwStyle); + dwExstyle = 0; + (void) OS2GetStyle(GetWindowStyle(), &dwExstyle); } + // + // All controls should have these styles (wxWindows creates all controls + // visible by default) + // + if (m_isShown ) + dwStyle |= WS_VISIBLE; wxWindow* pParent = GetParent(); PSZ zClass; @@ -138,6 +126,10 @@ bool wxControl::OS2CreateControl( zClass = WC_STATIC; else if ((strcmp(zClassname, "BUTTON")) == 0) zClass = WC_BUTTON; + else if ((strcmp(zClassname, "NOTEBOOK")) == 0) + zClass = WC_NOTEBOOK; + else if ((strcmp(zClassname, "CONTAINER")) == 0) + zClass = WC_CONTAINER; dwStyle |= WS_VISIBLE; m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle @@ -172,8 +164,13 @@ bool wxControl::OS2CreateControl( // Controls use the same font and colours as their parent dialog by default // InheritAttributes(); - if (nW == 0 || nH == 0) - SetBestSize(rSize); + SetXComp(0); + SetYComp(0); + SetSize( rPos.x + ,rPos.y + ,rSize.x + ,rSize.y + ); return TRUE; } // end of wxControl::OS2CreateControl @@ -184,16 +181,6 @@ wxSize wxControl::DoGetBestSize() const bool wxControl::ProcessCommand(wxCommandEvent& event) { -#if WXWIN_COMPATIBILITY - if ( m_callback ) - { - (void)(*m_callback)(this, event); - - return TRUE; - } - else -#endif // WXWIN_COMPATIBILITY - return GetEventHandler()->ProcessEvent(event); } @@ -237,17 +224,21 @@ void wxControl::OnEraseBackground( ::WinFillRect(hPS, &vRect, GetBackgroundColour().GetPixel()); } // end of wxControl::OnEraseBackground -WXDWORD wxControl::GetExStyle( - WXDWORD& rStyle +WXDWORD wxControl::OS2GetStyle( + long lStyle +, WXDWORD* pdwExstyle ) const { - // - // Meaningless under OS/2, just return what was sent - // - WXDWORD exStyle = rStyle; + long dwStyle = wxWindow::OS2GetStyle( lStyle + ,pdwExstyle + ); - return exStyle; -} // end of wxControl::GetExStyle + if (AcceptsFocus()) + { + dwStyle |= WS_TABSTOP; + } + return dwStyle; +} // end of wxControl::OS2GetStyle // --------------------------------------------------------------------------- // global functions