X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1cee3f6006e1838fa3d59055233c435e3124d59e..d56327cd0662d31960bea19c7570fd9854af1bd0:/src/os2/textctrl.cpp?ds=sidebyside diff --git a/src/os2/textctrl.cpp b/src/os2/textctrl.cpp index b99d13006c..679d0fa248 100644 --- a/src/os2/textctrl.cpp +++ b/src/os2/textctrl.cpp @@ -86,6 +86,10 @@ wxTextCtrl::wxTextCtrl() { } +wxTextCtrl::~wxTextCtrl() +{ +} + bool wxTextCtrl::Create( wxWindow* pParent , wxWindowID vId @@ -93,14 +97,13 @@ bool wxTextCtrl::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { HWND hParent; int nTempy; + // // Base initialization // @@ -109,9 +112,7 @@ bool wxTextCtrl::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName )) return FALSE; @@ -125,6 +126,7 @@ bool wxTextCtrl::Create( } m_windowStyle = lStyle; + m_bIsMLE = FALSE; long lSstyle = WS_VISIBLE | WS_TABSTOP; @@ -200,7 +202,7 @@ bool wxTextCtrl::Create( // // Set font, position, size and initial value // - wxFont* pTextFont = new wxFont( 10 + wxFont* pTextFont = new wxFont( 8 ,wxMODERN ,wxNORMAL ,wxNORMAL @@ -218,8 +220,8 @@ bool wxTextCtrl::Create( ::WinQueryWindowPos(m_hWnd, &vSwp); SetXComp(vSwp.x); SetYComp(vSwp.y); - SetSize( vPos.x - ,vPos.y + SetSize( vPos.x - GetXComp() + ,vPos.y - GetYComp() ,rSize.x ,rSize.y ); @@ -340,7 +342,6 @@ wxString wxTextCtrl::GetValue() const if (*zStr == '\r') *zStr = '\n'; } - sStr = zStr; return sStr; } // end of wxTextCtrl::GetValue @@ -506,6 +507,15 @@ void wxTextCtrl::SetInsertionPointEnd() { long lPos = GetLastPosition(); + // + // We must not do anything if the caret is already there because calling + // SetInsertionPoint() thaws the controls if Freeze() had been called even + // if it doesn't actually move the caret anywhere and so the simple fact of + // doing it results in horrible flicker when appending big amounts of text + // to the control in a few chunks (see DoAddText() test in the text sample) + // + if (GetInsertionPoint() == GetLastPosition()) + return; SetInsertionPoint(lPos); } // end of wxTextCtrl::SetInsertionPointEnd @@ -1170,9 +1180,11 @@ void wxTextCtrl::AdjustSpaceLimit() bool wxTextCtrl::AcceptsFocus() const { // - // We don't want focus if we can't be edited + // We don't want focus if we can't be edited unless we're a multiline + // control because then it might be still nice to get focus from keyboard + // to be able to scroll it without mouse // - return IsEditable() && wxControl::AcceptsFocus(); + return (IsEditable() || IsMultiLine()) && wxControl::AcceptsFocus(); } // end of wxTextCtrl::Command wxSize wxTextCtrl::DoGetBestSize() const @@ -1232,6 +1244,29 @@ void wxTextCtrl::OnRedo( Redo(); } // end of wxTextCtrl::OnRedo +void wxTextCtrl::OnDelete( + wxCommandEvent& rEvent +) +{ + long lFrom; + long lTo; + + GetSelection( &lFrom + ,&lTo + ); + if (lFrom != -1 && lTo != -1) + Remove( lFrom + ,lTo + ); +} // end of wxTextCtrl::OnDelete + +void wxTextCtrl::OnSelectAll( + wxCommandEvent& rEvent +) +{ + SetSelection(-1, -1); +} // end of wxTextCtrl::OnSelectAll + void wxTextCtrl::OnUpdateCut( wxUpdateUIEvent& rEvent ) @@ -1267,6 +1302,26 @@ void wxTextCtrl::OnUpdateRedo( rEvent.Enable(CanRedo()); } // end of wxTextCtrl::OnUpdateRedo +void wxTextCtrl::OnUpdateDelete( + wxUpdateUIEvent& rEvent +) +{ + long lFrom; + long lTo; + + GetSelection( &lFrom + ,&lTo + ); + rEvent.Enable( lFrom != -1L && lTo != -1L && lFrom != lTo && IsEditable()) ; +} // end of wxTextCtrl::OnUpdateDelete + +void wxTextCtrl::OnUpdateSelectAll( + wxUpdateUIEvent& rEvent +) +{ + rEvent.Enable(GetLastPosition() > 0); +} // end of wxTextCtrl::OnUpdateSelectAll + bool wxTextCtrl::SetBackgroundColour( const wxColour& rColour )