X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/79e1f224d14b9447355092dcdc73a0752ca2e201..a4c721ee38d6e7656765a5188f89fe59c854058e:/src/cocoa/textctrl.mm diff --git a/src/cocoa/textctrl.mm b/src/cocoa/textctrl.mm index 5028866515..cbab8ea2f1 100644 --- a/src/cocoa/textctrl.mm +++ b/src/cocoa/textctrl.mm @@ -1,18 +1,20 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: cocoa/textctrl.mm +// Name: src/cocoa/textctrl.mm // Purpose: wxTextCtrl // Author: David Elliott // Modified by: // Created: 2003/03/16 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) 2003 David Elliott -// Licence: wxWindows license +// Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" + +#include "wx/textctrl.h" + #ifndef WX_PRECOMP #include "wx/app.h" - #include "wx/textctrl.h" #include "wx/log.h" #endif //WX_PRECOMP @@ -22,11 +24,12 @@ #import #import +#import #include -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxTextCtrlBase) +BEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase) END_EVENT_TABLE() WX_IMPLEMENT_COCOA_OWNER(wxTextCtrl,NSTextField,NSControl,NSView) @@ -56,6 +59,10 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID winid, if(m_parent) m_parent->CocoaAddChild(this); SetInitialFrameRect(pos,size); + + [(NSTextField*)m_cocoaNSView setTarget: sm_cocoaTarget]; + [(NSTextField*)m_cocoaNSView setAction:@selector(wxNSControlAction:)]; + return true; } @@ -68,6 +75,19 @@ void wxTextCtrl::Cocoa_didChangeText(void) { } +void wxTextCtrl::CocoaTarget_action(void) +{ + // NSTextField only sends the action message on enter key press and thus + // we send the appropriate event type. + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, GetId()); + + // See wxTextCtrlBase::SendTextUpdatedEvent for why we don't set the string. + //event.SetString(GetValue()); + + event.SetEventObject(this); + GetEventHandler()->ProcessEvent(event); +} + void wxTextCtrl::AppendText(wxString const&) { } @@ -132,10 +152,13 @@ void wxTextCtrl::Replace(long, long, wxString const&) { } -void wxTextCtrl::SetValue(wxString const& value) +void wxTextCtrl::DoSetValue(wxString const& value, int flags) { wxAutoNSAutoreleasePool pool; [GetNSTextField() setStringValue: wxNSStringWithWxString(value)]; + + if ( flags & SetValue_SendEvent ) + SendTextUpdatedEvent(); } void wxTextCtrl::WriteText(wxString const&) @@ -176,7 +199,7 @@ int wxTextCtrl::GetLineLength(long) const return 0; } -long wxTextCtrl::GetLastPosition() const +wxTextPos wxTextCtrl::GetLastPosition() const { return 0; } @@ -214,9 +237,8 @@ wxSize wxTextCtrl::DoGetBestSize() const NSCell *cell = [GetNSControl() cell]; wxASSERT(cell); NSSize cellSize = [cell cellSize]; - wxSize size(100,(int)ceilf(cellSize.height)); + wxSize size(100,(int)ceil(cellSize.height)); wxLogTrace(wxTRACE_COCOA_Window_Size,wxT("wxTextCtrl=%p::DoGetBestSize()==(%d,%d)"),this,size.x,size.y); return size; } -