From 422d306cb3acaebe95a0554754ab8a15f13a1784 Mon Sep 17 00:00:00 2001
From: Ryan Norton <wxprojects@comcast.net>
Date: Thu, 7 Oct 2004 16:50:24 +0000
Subject: [PATCH] 1. Yet another unit test for new stirng stuff 2. Fix unicode
 and 10.2 in src/cocoa/app.mm 3. Fix error in doc about wxEvtHandler::Connect

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29702 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/evthand.tex    |  2 +-
 src/cocoa/app.mm             | 16 ++++++++++++----
 tests/strings/stdstrings.cpp | 27 +++++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/docs/latex/wx/evthand.tex b/docs/latex/wx/evthand.tex
index 257f4f3b74..88c52e5e96 100644
--- a/docs/latex/wx/evthand.tex
+++ b/docs/latex/wx/evthand.tex
@@ -105,7 +105,7 @@ is an alternative to the use of static event tables. See the 'event' or the old
 \begin{verbatim}
   frame->Connect( wxID_EXIT,
     wxEVT_COMMAND_MENU_SELECTED,
-    (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) MyFrame::OnQuit );
+    (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) &MyFrame::OnQuit );
 \end{verbatim}
 
 \perlnote{In wxPerl this function takes 4 arguments: \texttt{id,
diff --git a/src/cocoa/app.mm b/src/cocoa/app.mm
index f8f064934f..e2336ca1b1 100644
--- a/src/cocoa/app.mm
+++ b/src/cocoa/app.mm
@@ -70,12 +70,20 @@ WX_IMPLEMENT_POSER(wxPoserNSApplication);
     plan on stopping the event loop, it is wise to send an event through
     the queue to ensure this method will return.
     See wxEventLoop::Exit() for more information.
+
+ Ê ÊRN: We used to use nil as the untilDate in previous versions since nil
+Ê  Êis a shorter and more concise way of specifying an infinite amount of
+ÊÊ Êtime than [NSDate distantPast]. ÊHowever, Apple neglects to mention in
+Ê  Êtheir documentation that nil is not handled correctly in OSX 10.2
+Ê  Ê(and possibly lower) and when the call is reached the system comes to
+Ê  Êa screeching halt, therefore we need to specify [NSDate distantPast]
+Ê  Êexplicitly so that wxCocoa will work correctly in OSX 10.2.
 */
    
 - (NSEvent *)nextEventMatchingMask:(unsigned int)mask untilDate:(NSDate *)expiration inMode:(NSString *)mode dequeue:(BOOL)flag
 {
     // Get the same events except don't block
-    NSEvent *event = [super nextEventMatchingMask:mask untilDate:nil/* equivalent to [NSDate distantPast] */ inMode:mode dequeue:flag];
+    NSEvent *event = [super nextEventMatchingMask:mask untilDate:[NSDate distantPast] inMode:mode dequeue:flag];
     // If we got one, simply return it
     if(event)
         return event;
@@ -91,7 +99,7 @@ WX_IMPLEMENT_POSER(wxPoserNSApplication);
         while(wxTheApp->ProcessIdle())
         {
             // Get the same events except don't block
-            NSEvent *event = [super nextEventMatchingMask:mask untilDate:nil/* equivalent to [NSDate distantPast] */ inMode:mode dequeue:flag];
+            NSEvent *event = [super nextEventMatchingMask:mask untilDate:[NSDate distantPast] inMode:mode dequeue:flag];
             // If we got one, simply return it
             if(event)
                 return event;
@@ -150,7 +158,7 @@ WX_IMPLEMENT_POSER(wxPoserNSApplication);
 
 - (void)controlTintChanged:(NSNotification *)notification
 {
-    wxLogDebug("TODO: send EVT_SYS_COLOUR_CHANGED as appropriate");
+    wxLogDebug(wxT("TODO: send EVT_SYS_COLOUR_CHANGED as appropriate"));
 }
 
 @end // implementation wxNSApplicationDelegate : NSObject
@@ -322,7 +330,7 @@ bool wxApp::Yield(bool onlyIfNeeded)
         wxAutoNSAutoreleasePool pool;
         NSEvent *event = [GetNSApplication()
                 nextEventMatchingMask:NSAnyEventMask
-                untilDate:nil /* ==[NSDate distantPast] */
+                untilDate:[NSDate distantPast]
                 inMode:NSDefaultRunLoopMode
                 dequeue: YES];
         if(!event)
diff --git a/tests/strings/stdstrings.cpp b/tests/strings/stdstrings.cpp
index 4548182651..ded78080c4 100644
--- a/tests/strings/stdstrings.cpp
+++ b/tests/strings/stdstrings.cpp
@@ -286,6 +286,33 @@ void StdStringTestCase::StdFindLast()
     CPPUNIT_ASSERT( s1.find_last_of(_T("ijklm")) == 16u );
     CPPUNIT_ASSERT( s1.find_last_of(_T("ijklma"), 33, 4) == 16u );
     CPPUNIT_ASSERT( s1.find_last_of(_T("a"), 17) == 17u );
+
+
+
+    //                  0          1          2         3
+    //                  012345 67890123456789 01234567890123456
+//    wxString s1 = _T("aaaaaa\0bcdefghlkjiaa\0aaaabcdbcdbcdbcd");
+//    wxString s2 = _T("aaaaaa\0");
+    s1.insert(6,1,'\0');
+    s1.insert(20,1,'\0');
+    s2.insert(6,1,'\0');
+
+    CPPUNIT_ASSERT( s2.find_last_not_of(_T('a')) == 6u );
+    CPPUNIT_ASSERT( s1.find_last_not_of(_T('d')) == 35u );
+    CPPUNIT_ASSERT( s1.find_last_not_of(_T('d'), 27) == 26u );
+
+    CPPUNIT_ASSERT( s1.find_last_not_of(_T("bcd")) == 24u );
+    CPPUNIT_ASSERT( s1.find_last_not_of(_T("abc"), 26) == 20u );
+
+    CPPUNIT_ASSERT( s1.find_last_not_of(_T("abcdefghijklmnopqrstuv"), 26, 3) == 20u );
+
+    CPPUNIT_ASSERT( s2.find_last_of(_T('c')) == wxString::npos );
+    CPPUNIT_ASSERT( s1.find_last_of(_T('a')) == 24u );
+    CPPUNIT_ASSERT( s1.find_last_of(_T('b'), 26) == 25u );
+
+    CPPUNIT_ASSERT( s1.find_last_of(_T("ijklm")) == 17u );
+    CPPUNIT_ASSERT( s1.find_last_of(_T("ijklma"), 35, 4) == 17u );
+    CPPUNIT_ASSERT( s1.find_last_of(_T("a"), 18) == 18u );
 }
 
 void StdStringTestCase::StdInsert()
-- 
2.50.0

