else
value = st ;
::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
+
MacRedrawControl() ;
+ Update();
}
// Clipboard operations
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECopy( teH ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECopy( teH ) ;
ClearCurrentScrap();
- TEToScrap() ;
+ TEToScrap() ;
}
}
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECut( teH ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECut( teH ) ;
ClearCurrentScrap();
- TEToScrap() ;
- // MacInvalidateControl() ;
- }
+ TEToScrap() ;
+ // MacInvalidateControl() ;
+ }
}
void wxTextCtrl::Paste()
/* mUPOpenControl initializes a user pane control so it will be drawn
- and will behave as a scrolling text edit field inside of a window.
- This routine performs all of the initialization steps necessary,
- except it does not create the user pane control itself. theControl
- should refer to a user pane control that you have either created
- yourself or extracted from a dialog's control heirarchy using
- the GetDialogItemAsControl routine. */
+ and will behave as a scrolling text edit field inside of a window.
+ This routine performs all of the initialization steps necessary,
+ except it does not create the user pane control itself. theControl
+ should refer to a user pane control that you have either created
+ yourself or extracted from a dialog's control heirarchy using
+ the GetDialogItemAsControl routine. */
OSStatus mUPOpenControl(ControlHandle theControl, bool multiline) {
- Rect bounds;
- WindowPtr theWindow;
- STPTextPaneVars **tpvars, *varsp;
- OSStatus err;
- RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF};
- TXNBackground tback;
-
- /* set up our globals */
- if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc);
- if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc);
- if (gTPTrackProc == NULL) gTPTrackProc = NewControlUserPaneTrackingUPP(TPPaneTrackingProc);
- if (gTPIdleProc == NULL) gTPIdleProc = NewControlUserPaneIdleUPP(TPPaneIdleProc);
- if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc);
- if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc);
- if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc);
-
- /* allocate our private storage */
- tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars));
- SetControlReference(theControl, (long) tpvars);
- HLock((Handle) tpvars);
- varsp = *tpvars;
- /* set the initial settings for our private data */
- varsp->fInFocus = false;
- varsp->fIsActive = true;
- varsp->fTEActive = false;
- varsp->fUserPaneRec = theControl;
- theWindow = varsp->fOwner = GetControlOwner(theControl);
+ Rect bounds;
+ WindowPtr theWindow;
+ STPTextPaneVars **tpvars, *varsp;
+ OSStatus err;
+ RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF};
+ TXNBackground tback;
+
+ /* set up our globals */
+ if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc);
+ if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc);
+ if (gTPTrackProc == NULL) gTPTrackProc = NewControlUserPaneTrackingUPP(TPPaneTrackingProc);
+ if (gTPIdleProc == NULL) gTPIdleProc = NewControlUserPaneIdleUPP(TPPaneIdleProc);
+ if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc);
+ if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc);
+ if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc);
+
+ /* allocate our private storage */
+ tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars));
+ SetControlReference(theControl, (long) tpvars);
+ HLock((Handle) tpvars);
+ varsp = *tpvars;
+ /* set the initial settings for our private data */
+ varsp->fInFocus = false;
+ varsp->fIsActive = true;
+ varsp->fTEActive = false;
+ varsp->fUserPaneRec = theControl;
+ theWindow = varsp->fOwner = GetControlOwner(theControl);
#if TARGET_CARBON
varsp->fDrawingEnvironment = GetWindowPort(varsp->fOwner);
#else
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECopy( teH ) ;
- ClearCurrentScrap();
- TEToScrap() ;
- }
- else
- {
- mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCopy ) ;
- }
- }
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECopy( teH ) ;
+ ClearCurrentScrap();
+ TEToScrap() ;
+ }
+ else
+ {
+ mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCopy ) ;
+ }
+ }
}
void wxTextCtrl::Cut()
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECut( teH ) ;
- ClearCurrentScrap();
- TEToScrap() ;
- // MacInvalidateControl() ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECut( teH ) ;
+ ClearCurrentScrap();
+ TEToScrap() ;
+ // MacInvalidateControl() ;
+ }
+ else
+ {
+ mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCut ) ;
+ }
}
- else
- {
- mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCut ) ;
- }
- }
}
void wxTextCtrl::Paste()
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TEFromScrap() ;
- TEPaste( teH ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TEFromScrap() ;
+ TEPaste( teH ) ;
MacRedrawControl() ;
- }
- else
- {
- mUPDoEditCommand( (ControlHandle) m_macControl , kmUPPaste ) ;
- }
- }
+ }
+ else
+ {
+ mUPDoEditCommand( (ControlHandle) m_macControl , kmUPPaste ) ;
+ }
+ }
}
bool wxTextCtrl::CanCopy() const
}
else
{
- STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
+ STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
int actualsize = 0 ;
- Handle theText ;
- OSErr err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );
- /* all done */
- if ( err )
- {
- actualsize = 0 ;
- }
- else
- {
- actualsize = GetHandleSize( theText ) ;
- DisposeHandle( theText ) ;
- }
- return actualsize ;
+ Handle theText ;
+ OSErr err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );
+ /* all done */
+ if ( err )
+ {
+ actualsize = 0 ;
+ }
+ else
+ {
+ actualsize = GetHandleSize( theText ) ;
+ DisposeHandle( theText ) ;
+ }
+ return actualsize ;
}
}
ControlEditTextSelectionRec selection ;
- selection.selStart = from ;
- selection.selEnd = to ;
- ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TESetSelect( from , to , teH ) ;
- TEDelete( teH ) ;
- TEInsert( value , value.Length() , teH ) ;
- }
- else
- {
- // TODO
- }
- Refresh() ;
+ selection.selStart = from ;
+ selection.selEnd = to ;
+ ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TESetSelect( from , to , teH ) ;
+ TEDelete( teH ) ;
+ TEInsert( value , value.Length() , teH ) ;
+ }
+ else
+ {
+ // TODO
+ }
+ Refresh() ;
}
void wxTextCtrl::Remove(long from, long to)
ControlEditTextSelectionRec selection ;
- selection.selStart = from ;
- selection.selEnd = to ;
- ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TEDelete( teH ) ;
+ selection.selStart = from ;
+ selection.selEnd = to ;
+ ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TEDelete( teH ) ;
}
else
{
{
mUPDoEditCommand( (ControlHandle) m_macControl , kmUPClear) ;
}
- Refresh() ;
+ Refresh() ;
}
bool wxTextCtrl::IsModified() const
{
// TODO change this if possible to reflect real lines
wxString content = GetValue() ;
-
- int count = 1;
- for (int i = 0; i < content.Length() ; i++)
- {
- if (content[i] == '\r') count++;
- }
-
+
+ int count = 1;
+ for (int i = 0; i < content.Length() ; i++)
+ {
+ if (content[i] == '\r') count++;
+ }
+
return count;
}
{
// TODO change this if possible to reflect real lines
wxString content = GetValue() ;
-
- // Find line first
- int count = 0;
- for (int i = 0; i < content.Length() ; i++)
- {
- if (count == lineNo)
- {
- // Count chars in line then
- count = 0;
- for (int j = i; j < content.Length(); j++)
- {
- count++;
- if (content[j] == '\r') return count;
- }
-
- return count;
- }
- if (content[i] == '\r') count++;
- }
+
+ // Find line first
+ int count = 0;
+ for (int i = 0; i < content.Length() ; i++)
+ {
+ if (count == lineNo)
+ {
+ // Count chars in line then
+ count = 0;
+ for (int j = i; j < content.Length(); j++)
+ {
+ count++;
+ if (content[j] == '\r') return count;
+ }
+
+ return count;
+ }
+ if (content[i] == '\r') count++;
+ }
return 0;
}
// TODO change this if possible to reflect real lines
wxString content = GetValue() ;
- // Find line first
- int count = 0;
- for (int i = 0; i < content.Length() ; i++)
- {
- if (count == lineNo)
- {
- // Add chars in line then
- wxString tmp("");
-
- for (int j = i; j < content.Length(); j++)
- {
- if (content[j] == '\r')
- return tmp;
-
- tmp += content[j];
- }
-
- return tmp;
- }
- if (content[i] == '\r') count++;
- }
+ // Find line first
+ int count = 0;
+ for (int i = 0; i < content.Length() ; i++)
+ {
+ if (count == lineNo)
+ {
+ // Add chars in line then
+ wxString tmp("");
+
+ for (int j = i; j < content.Length(); j++)
+ {
+ if (content[j] == '\r')
+ return tmp;
+
+ tmp += content[j];
+ }
+
+ return tmp;
+ }
+ if (content[i] == '\r') count++;
+ }
return wxString("");
}
// ----------------------------------------------------------------------------
// list of all frames and modeless dialogs
-wxWindowList wxModelessWindows;
+wxWindowList wxModelessWindows;
+
+// double click testing
+static Point gs_lastWhere;
+static long gs_lastWhen = 0;
+
+// cursor stuff
+extern int wxBusyCursorCount;
+
// ============================================================================
// wxTopLevelWindowMac implementation
::SendBehind( (WindowRef)m_macWindow , NULL ) ;
}
-Point lastWhere ;
-long lastWhen = 0 ;
-extern int wxBusyCursorCount ;
-
void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr )
{
EventRecord *ev = (EventRecord*) evr ;
if ( ev->what == mouseDown )
{
- if ( ev->when - lastWhen <= GetDblTime() )
+ if ( ev->when - gs_lastWhen <= GetDblTime() )
{
- if ( abs( localwhere.h - lastWhere.h ) < 3 || abs( localwhere.v - lastWhere.v ) < 3 )
+ if ( abs( localwhere.h - gs_lastWhere.h ) < 3 && abs( localwhere.v - gs_lastWhere.v ) < 3 )
{
+ // This is not right if the second mouse down
+ // event occured in a differen window. We
+ // correct this in MacDispatchMouseEvent.
if ( controlDown )
event.SetEventType(wxEVT_RIGHT_DCLICK ) ;
else
event.SetEventType(wxEVT_LEFT_DCLICK ) ;
}
- lastWhen = 0 ;
+ gs_lastWhen = 0 ;
}
else
{
- lastWhen = ev->when ;
+ gs_lastWhen = ev->when ;
}
- lastWhere = localwhere ;
+ gs_lastWhere = localwhere ;
}
event.m_x = localwhere.h;
}
extern int wxBusyCursorCount ;
+static wxWindow *gs_lastWhich = NULL;
bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
{
wxToolTip::RelayEvent( this , event);
#endif // wxUSE_TOOLTIPS
+ if (gs_lastWhich != this)
+ {
+ gs_lastWhich = this;
+
+ // Double clicks must always occur on the same window
+ if (event.GetEventType() == wxEVT_LEFT_DCLICK)
+ event.SetEventType( wxEVT_LEFT_DOWN );
+ if (event.GetEventType() == wxEVT_RIGHT_DCLICK)
+ event.SetEventType( wxEVT_RIGHT_DOWN );
+
+ // Same for mouse up events
+ if (event.GetEventType() == wxEVT_LEFT_UP)
+ return TRUE;
+ if (event.GetEventType() == wxEVT_RIGHT_UP)
+ return TRUE;
+ }
+
GetEventHandler()->ProcessEvent( event ) ;
return TRUE;
else
value = st ;
::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
+
MacRedrawControl() ;
+ Update();
}
// Clipboard operations
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECopy( teH ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECopy( teH ) ;
ClearCurrentScrap();
- TEToScrap() ;
+ TEToScrap() ;
}
}
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECut( teH ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECut( teH ) ;
ClearCurrentScrap();
- TEToScrap() ;
- // MacInvalidateControl() ;
- }
+ TEToScrap() ;
+ // MacInvalidateControl() ;
+ }
}
void wxTextCtrl::Paste()
/* mUPOpenControl initializes a user pane control so it will be drawn
- and will behave as a scrolling text edit field inside of a window.
- This routine performs all of the initialization steps necessary,
- except it does not create the user pane control itself. theControl
- should refer to a user pane control that you have either created
- yourself or extracted from a dialog's control heirarchy using
- the GetDialogItemAsControl routine. */
+ and will behave as a scrolling text edit field inside of a window.
+ This routine performs all of the initialization steps necessary,
+ except it does not create the user pane control itself. theControl
+ should refer to a user pane control that you have either created
+ yourself or extracted from a dialog's control heirarchy using
+ the GetDialogItemAsControl routine. */
OSStatus mUPOpenControl(ControlHandle theControl, bool multiline) {
- Rect bounds;
- WindowPtr theWindow;
- STPTextPaneVars **tpvars, *varsp;
- OSStatus err;
- RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF};
- TXNBackground tback;
-
- /* set up our globals */
- if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc);
- if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc);
- if (gTPTrackProc == NULL) gTPTrackProc = NewControlUserPaneTrackingUPP(TPPaneTrackingProc);
- if (gTPIdleProc == NULL) gTPIdleProc = NewControlUserPaneIdleUPP(TPPaneIdleProc);
- if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc);
- if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc);
- if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc);
-
- /* allocate our private storage */
- tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars));
- SetControlReference(theControl, (long) tpvars);
- HLock((Handle) tpvars);
- varsp = *tpvars;
- /* set the initial settings for our private data */
- varsp->fInFocus = false;
- varsp->fIsActive = true;
- varsp->fTEActive = false;
- varsp->fUserPaneRec = theControl;
- theWindow = varsp->fOwner = GetControlOwner(theControl);
+ Rect bounds;
+ WindowPtr theWindow;
+ STPTextPaneVars **tpvars, *varsp;
+ OSStatus err;
+ RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF};
+ TXNBackground tback;
+
+ /* set up our globals */
+ if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc);
+ if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc);
+ if (gTPTrackProc == NULL) gTPTrackProc = NewControlUserPaneTrackingUPP(TPPaneTrackingProc);
+ if (gTPIdleProc == NULL) gTPIdleProc = NewControlUserPaneIdleUPP(TPPaneIdleProc);
+ if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc);
+ if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc);
+ if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc);
+
+ /* allocate our private storage */
+ tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars));
+ SetControlReference(theControl, (long) tpvars);
+ HLock((Handle) tpvars);
+ varsp = *tpvars;
+ /* set the initial settings for our private data */
+ varsp->fInFocus = false;
+ varsp->fIsActive = true;
+ varsp->fTEActive = false;
+ varsp->fUserPaneRec = theControl;
+ theWindow = varsp->fOwner = GetControlOwner(theControl);
#if TARGET_CARBON
varsp->fDrawingEnvironment = GetWindowPort(varsp->fOwner);
#else
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECopy( teH ) ;
- ClearCurrentScrap();
- TEToScrap() ;
- }
- else
- {
- mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCopy ) ;
- }
- }
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECopy( teH ) ;
+ ClearCurrentScrap();
+ TEToScrap() ;
+ }
+ else
+ {
+ mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCopy ) ;
+ }
+ }
}
void wxTextCtrl::Cut()
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECut( teH ) ;
- ClearCurrentScrap();
- TEToScrap() ;
- // MacInvalidateControl() ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TECut( teH ) ;
+ ClearCurrentScrap();
+ TEToScrap() ;
+ // MacInvalidateControl() ;
+ }
+ else
+ {
+ mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCut ) ;
+ }
}
- else
- {
- mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCut ) ;
- }
- }
}
void wxTextCtrl::Paste()
TEHandle teH ;
long size ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TEFromScrap() ;
- TEPaste( teH ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TEFromScrap() ;
+ TEPaste( teH ) ;
MacRedrawControl() ;
- }
- else
- {
- mUPDoEditCommand( (ControlHandle) m_macControl , kmUPPaste ) ;
- }
- }
+ }
+ else
+ {
+ mUPDoEditCommand( (ControlHandle) m_macControl , kmUPPaste ) ;
+ }
+ }
}
bool wxTextCtrl::CanCopy() const
}
else
{
- STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
+ STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
int actualsize = 0 ;
- Handle theText ;
- OSErr err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );
- /* all done */
- if ( err )
- {
- actualsize = 0 ;
- }
- else
- {
- actualsize = GetHandleSize( theText ) ;
- DisposeHandle( theText ) ;
- }
- return actualsize ;
+ Handle theText ;
+ OSErr err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );
+ /* all done */
+ if ( err )
+ {
+ actualsize = 0 ;
+ }
+ else
+ {
+ actualsize = GetHandleSize( theText ) ;
+ DisposeHandle( theText ) ;
+ }
+ return actualsize ;
}
}
ControlEditTextSelectionRec selection ;
- selection.selStart = from ;
- selection.selEnd = to ;
- ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TESetSelect( from , to , teH ) ;
- TEDelete( teH ) ;
- TEInsert( value , value.Length() , teH ) ;
- }
- else
- {
- // TODO
- }
- Refresh() ;
+ selection.selStart = from ;
+ selection.selEnd = to ;
+ ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TESetSelect( from , to , teH ) ;
+ TEDelete( teH ) ;
+ TEInsert( value , value.Length() , teH ) ;
+ }
+ else
+ {
+ // TODO
+ }
+ Refresh() ;
}
void wxTextCtrl::Remove(long from, long to)
ControlEditTextSelectionRec selection ;
- selection.selStart = from ;
- selection.selEnd = to ;
- ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
- ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TEDelete( teH ) ;
+ selection.selStart = from ;
+ selection.selEnd = to ;
+ ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
+ ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
+ TEDelete( teH ) ;
}
else
{
{
mUPDoEditCommand( (ControlHandle) m_macControl , kmUPClear) ;
}
- Refresh() ;
+ Refresh() ;
}
bool wxTextCtrl::IsModified() const
{
// TODO change this if possible to reflect real lines
wxString content = GetValue() ;
-
- int count = 1;
- for (int i = 0; i < content.Length() ; i++)
- {
- if (content[i] == '\r') count++;
- }
-
+
+ int count = 1;
+ for (int i = 0; i < content.Length() ; i++)
+ {
+ if (content[i] == '\r') count++;
+ }
+
return count;
}
{
// TODO change this if possible to reflect real lines
wxString content = GetValue() ;
-
- // Find line first
- int count = 0;
- for (int i = 0; i < content.Length() ; i++)
- {
- if (count == lineNo)
- {
- // Count chars in line then
- count = 0;
- for (int j = i; j < content.Length(); j++)
- {
- count++;
- if (content[j] == '\r') return count;
- }
-
- return count;
- }
- if (content[i] == '\r') count++;
- }
+
+ // Find line first
+ int count = 0;
+ for (int i = 0; i < content.Length() ; i++)
+ {
+ if (count == lineNo)
+ {
+ // Count chars in line then
+ count = 0;
+ for (int j = i; j < content.Length(); j++)
+ {
+ count++;
+ if (content[j] == '\r') return count;
+ }
+
+ return count;
+ }
+ if (content[i] == '\r') count++;
+ }
return 0;
}
// TODO change this if possible to reflect real lines
wxString content = GetValue() ;
- // Find line first
- int count = 0;
- for (int i = 0; i < content.Length() ; i++)
- {
- if (count == lineNo)
- {
- // Add chars in line then
- wxString tmp("");
-
- for (int j = i; j < content.Length(); j++)
- {
- if (content[j] == '\r')
- return tmp;
-
- tmp += content[j];
- }
-
- return tmp;
- }
- if (content[i] == '\r') count++;
- }
+ // Find line first
+ int count = 0;
+ for (int i = 0; i < content.Length() ; i++)
+ {
+ if (count == lineNo)
+ {
+ // Add chars in line then
+ wxString tmp("");
+
+ for (int j = i; j < content.Length(); j++)
+ {
+ if (content[j] == '\r')
+ return tmp;
+
+ tmp += content[j];
+ }
+
+ return tmp;
+ }
+ if (content[i] == '\r') count++;
+ }
return wxString("");
}
// ----------------------------------------------------------------------------
// list of all frames and modeless dialogs
-wxWindowList wxModelessWindows;
+wxWindowList wxModelessWindows;
+
+// double click testing
+static Point gs_lastWhere;
+static long gs_lastWhen = 0;
+
+// cursor stuff
+extern int wxBusyCursorCount;
+
// ============================================================================
// wxTopLevelWindowMac implementation
::SendBehind( (WindowRef)m_macWindow , NULL ) ;
}
-Point lastWhere ;
-long lastWhen = 0 ;
-extern int wxBusyCursorCount ;
-
void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr )
{
EventRecord *ev = (EventRecord*) evr ;
if ( ev->what == mouseDown )
{
- if ( ev->when - lastWhen <= GetDblTime() )
+ if ( ev->when - gs_lastWhen <= GetDblTime() )
{
- if ( abs( localwhere.h - lastWhere.h ) < 3 || abs( localwhere.v - lastWhere.v ) < 3 )
+ if ( abs( localwhere.h - gs_lastWhere.h ) < 3 && abs( localwhere.v - gs_lastWhere.v ) < 3 )
{
+ // This is not right if the second mouse down
+ // event occured in a differen window. We
+ // correct this in MacDispatchMouseEvent.
if ( controlDown )
event.SetEventType(wxEVT_RIGHT_DCLICK ) ;
else
event.SetEventType(wxEVT_LEFT_DCLICK ) ;
}
- lastWhen = 0 ;
+ gs_lastWhen = 0 ;
}
else
{
- lastWhen = ev->when ;
+ gs_lastWhen = ev->when ;
}
- lastWhere = localwhere ;
+ gs_lastWhere = localwhere ;
}
event.m_x = localwhere.h;
}
extern int wxBusyCursorCount ;
+static wxWindow *gs_lastWhich = NULL;
bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
{
wxToolTip::RelayEvent( this , event);
#endif // wxUSE_TOOLTIPS
+ if (gs_lastWhich != this)
+ {
+ gs_lastWhich = this;
+
+ // Double clicks must always occur on the same window
+ if (event.GetEventType() == wxEVT_LEFT_DCLICK)
+ event.SetEventType( wxEVT_LEFT_DOWN );
+ if (event.GetEventType() == wxEVT_RIGHT_DCLICK)
+ event.SetEventType( wxEVT_RIGHT_DOWN );
+
+ // Same for mouse up events
+ if (event.GetEventType() == wxEVT_LEFT_UP)
+ return TRUE;
+ if (event.GetEventType() == wxEVT_RIGHT_UP)
+ return TRUE;
+ }
+
GetEventHandler()->ProcessEvent( event ) ;
return TRUE;