X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..90a6ac27c744bed385cdd32f12dfca4c39847f03:/src/os2/control.cpp diff --git a/src/os2/control.cpp b/src/os2/control.cpp index f15982c04a..51eff786ee 100644 --- a/src/os2/control.cpp +++ b/src/os2/control.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp +// Name: src/os2/control.cpp // Purpose: wxControl class // Author: David Webster // Modified by: @@ -12,15 +12,17 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#include "wx/control.h" + #ifndef WX_PRECOMP -#include "wx/event.h" -#include "wx/app.h" -#include "wx/dcclient.h" -#include "wx/scrolwin.h" -#include "wx/log.h" + #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" IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) @@ -33,15 +35,13 @@ wxControl::wxControl() { } // end of wxControl::wxControl -bool wxControl::Create( - wxWindow* pParent -, wxWindowID vId -, const wxPoint& rPos -, const wxSize& rSize -, long lStyle -, const wxValidator& rValidator -, const wxString& rsName -) +bool wxControl::Create( wxWindow* pParent, + wxWindowID vId, + const wxPoint& rPos, + const wxSize& rSize, + long lStyle, + const wxValidator& rValidator, + const wxString& rsName ) { bool bRval = wxWindow::Create( pParent ,vId @@ -64,18 +64,14 @@ wxControl::~wxControl() m_isBeingDeleted = true; } -bool wxControl::OS2CreateControl( - const wxChar* zClassname -, const wxString& rsLabel -, const wxPoint& rPos -, const wxSize& rSize -, long lStyle -) +bool wxControl::OS2CreateControl( const wxChar* zClassname, + const wxString& rsLabel, + const wxPoint& rPos, + const wxSize& rSize, + long lStyle ) { - WXDWORD dwExstyle; - WXDWORD dwStyle = OS2GetStyle( lStyle - ,&dwExstyle - ); + WXDWORD dwExstyle; + WXDWORD dwStyle = OS2GetStyle( lStyle, &dwExstyle ); return OS2CreateControl( zClassname ,dwStyle @@ -108,11 +104,11 @@ bool wxControl::OS2CreateControl( const wxChar* zClassname, if (m_isShown ) dwStyle |= WS_VISIBLE; - wxWindow* pParent = GetParent(); - PSZ zClass = ""; + wxWindow* pParent = GetParent(); + PSZ zClass = ""; if (!pParent) - return FALSE; + return false; if ((wxStrcmp(zClassname, _T("COMBOBOX"))) == 0) zClass = WC_COMBOBOX; @@ -124,13 +120,23 @@ bool wxControl::OS2CreateControl( const wxChar* zClassname, zClass = WC_NOTEBOOK; else if ((wxStrcmp(zClassname, _T("CONTAINER"))) == 0) zClass = WC_CONTAINER; - dwStyle |= WS_VISIBLE; + if ((zClass == WC_STATIC) || (zClass == WC_BUTTON)) + dwStyle |= DT_MNEMONIC; + + m_dwStyle = dwStyle; + m_label = rsLabel; + wxString label; + if (dwStyle & DT_MNEMONIC) + label = ::wxPMTextToLabel(m_label); + else + label = m_label; - wxString sLabel = ::wxPMTextToLabel(rsLabel); + // clipping siblings does not yet work + dwStyle &= ~WS_CLIPSIBLINGS; m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle ,(PSZ)zClass // Window class - ,(PSZ)sLabel.c_str() // Initial Text + ,(PSZ)label.c_str() // Initial Text ,(ULONG)dwStyle // Style flags ,(LONG)0 // X pos of origin ,(LONG)0 // Y pos of origin @@ -149,7 +155,7 @@ bool wxControl::OS2CreateControl( const wxChar* zClassname, wxLogError(wxT("Failed to create a control of class '%s'"), zClassname); #endif // DEBUG - return FALSE; + return false; } // // Subclass again for purposes of dialog editing mode @@ -167,11 +173,7 @@ bool wxControl::OS2CreateControl( const wxChar* zClassname, SetXComp(0); SetYComp(0); - SetSize( rPos.x - ,rPos.y - ,rSize.x - ,rSize.y - ); + SetSize( rPos.x, rPos.y, rSize.x, rSize.y ); return true; } // end of wxControl::OS2CreateControl @@ -210,9 +212,7 @@ WXHBRUSH wxControl::OnCtlColor(WXHDC hWxDC, return (WXHBRUSH)pBrush->GetResourceHandle(); } // end of wxControl::OnCtlColor -void wxControl::OnEraseBackground( - wxEraseEvent& rEvent -) +void wxControl::OnEraseBackground( wxEraseEvent& rEvent ) { RECTL vRect; HPS hPS = rEvent.GetDC()->GetHPS(); @@ -223,14 +223,9 @@ void wxControl::OnEraseBackground( ::WinFillRect(hPS, &vRect, GetBackgroundColour().GetPixel()); } // end of wxControl::OnEraseBackground -WXDWORD wxControl::OS2GetStyle( - long lStyle -, WXDWORD* pdwExstyle -) const +WXDWORD wxControl::OS2GetStyle( long lStyle, WXDWORD* pdwExstyle ) const { - long dwStyle = wxWindow::OS2GetStyle( lStyle - ,pdwExstyle - ); + long dwStyle = wxWindow::OS2GetStyle( lStyle, pdwExstyle ); if (AcceptsFocus()) { @@ -239,13 +234,18 @@ WXDWORD wxControl::OS2GetStyle( return dwStyle; } // end of wxControl::OS2GetStyle -void wxControl::SetLabel( - const wxString& rsLabel -) +void wxControl::SetLabel( const wxString& rsLabel ) { - wxString sLabel = ::wxPMTextToLabel(rsLabel); - - ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str()); + if(rsLabel != m_label) + { + m_label = rsLabel; + wxString label; + if (m_dwStyle & DT_MNEMONIC) + label = ::wxPMTextToLabel(m_label); + else + label = m_label; + ::WinSetWindowText(GetHwnd(), (PSZ)label.c_str()); + } } // end of wxControl::SetLabel // ---------------------------------------------------------------------------