X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c9cb56f7f2fb75bce8722f81337253f5649325b9..ae177b45b258b4985ee8c9ce7848bcb4f1266f80:/src/os2/control.cpp diff --git a/src/os2/control.cpp b/src/os2/control.cpp index f50e813f90..df264fae88 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 ///////////////////////////////////////////////////////////////////////////// @@ -20,6 +20,8 @@ #include "wx/event.h" #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" @@ -33,12 +35,6 @@ END_EVENT_TABLE() // Item members wxControl::wxControl() { - m_backgroundColour = *wxWHITE; - m_foregroundColour = *wxBLACK; - -#if WXWIN_COMPATIBILITY - m_callback = 0; -#endif // WXWIN_COMPATIBILITY } // end of wxControl::wxControl bool wxControl::Create( @@ -47,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,6 +68,28 @@ wxControl::~wxControl() m_isBeingDeleted = TRUE; } +bool wxControl::OS2CreateControl( + const wxChar* zClassname +, const wxString& rsLabel +, const wxPoint& rPos +, const wxSize& rSize +, long lStyle +) +{ + WXDWORD dwExstyle; + WXDWORD dwStyle = OS2GetStyle( lStyle + ,&dwExstyle + ); + + return OS2CreateControl( zClassname + ,dwStyle + ,rPos + ,rSize + ,rsLabel + ,dwExstyle + ); +} // end of wxControl::OS2CreateControl + bool wxControl::OS2CreateControl( const wxChar* zClassname , WXDWORD dwStyle @@ -88,8 +104,48 @@ bool wxControl::OS2CreateControl( // if (dwExstyle == (WXDWORD)-1) { - dwExstyle = GetExStyle(dwStyle); + dwExstyle = 0; + (void) OS2GetStyle(GetWindowStyle(), &dwExstyle); } + // + // All controls should have these styles (wxWidgets creates all controls + // visible by default) + // + if (m_isShown ) + dwStyle |= WS_VISIBLE; + + wxWindow* pParent = GetParent(); + PSZ zClass; + + if (!pParent) + return FALSE; + + if ((strcmp(zClassname, "COMBOBOX")) == 0) + zClass = WC_COMBOBOX; + else if ((strcmp(zClassname, "STATIC")) == 0) + 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 + ,(PSZ)zClass // Window class + ,(PSZ)rsLabel.c_str() // Initial Text + ,(ULONG)dwStyle // Style flags + ,(LONG)0 // X pos of origin + ,(LONG)0 // Y pos of origin + ,(LONG)0 // control width + ,(LONG)0 // control height + ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent + ,HWND_TOP // initial z position + ,(ULONG)GetId() // Window identifier + ,NULL // no control data + ,NULL // no Presentation parameters + ); if ( !m_hWnd ) { @@ -99,31 +155,27 @@ bool wxControl::OS2CreateControl( return FALSE; } - dwStyle |= WS_VISIBLE; - m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(GetParent()) // Parent window handle - ,(PSZ)zClassname // Window class - ,(PSZ)rsLabel.c_str() // Initial Text - ,(ULONG)dwStyle // Style flags - ,(LONG)rPos.x // X pos of origin - ,(LONG)rPos.y // Y pos of origin - ,(LONG)rSize.x // control width - ,(LONG)rSize.y // control height - ,(HWND)GetHwndOf(GetParent()) // owner window handle (same as parent - ,HWND_TOP // initial z position - ,(ULONG)GetId() // Window identifier - ,NULL // no control data - ,NULL // no Presentation parameters - ); - // // Subclass again for purposes of dialog editing mode // SubclassWin(m_hWnd); // - // Controls use the same font and colours as their parent dialog by default + // Controls use the same colours as their parent dialog by default // InheritAttributes(); + // + // All OS/2 ctrls use the small font + // + SetFont(*wxSMALL_FONT); + + SetXComp(0); + SetYComp(0); + SetSize( rPos.x + ,rPos.y + ,rSize.x + ,rSize.y + ); return TRUE; } // end of wxControl::OS2CreateControl @@ -134,16 +186,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); } @@ -187,17 +229,30 @@ 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 + ); + + if (AcceptsFocus()) + { + dwStyle |= WS_TABSTOP; + } + return dwStyle; +} // end of wxControl::OS2GetStyle + +void wxControl::SetLabel( + const wxString& rsLabel +) +{ + wxString sLabel = ::wxPMTextToLabel(rsLabel); - return exStyle; -} // end of wxControl::GetExStyle + ::WinSetWindowText(GetHwnd(), sLabel.c_str()); +} // end of wxControl::SetLabel // --------------------------------------------------------------------------- // global functions @@ -229,10 +284,10 @@ void wxFindMaxSize( if (nRight > pRect->xRight) pRect->xRight = nRight; - if (nTop < pRect->yTop) + if (nTop > pRect->yTop) pRect->yTop = nTop; - if (nBottom > pRect->yBottom) + if (nBottom < pRect->yBottom) pRect->yBottom = nBottom; } // end of wxFindMaxSize