]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/window.cpp
no changes, just corrected the comment for wxConvLocal
[wxWidgets.git] / src / mac / carbon / window.cpp
index a82b7e19a719caf5756a668cc6d0411ed1ffa20f..3cbaafa3c46b8cf974024c76268663fe50f0964c 100644 (file)
@@ -498,25 +498,26 @@ pascal OSStatus wxMacUnicodeTextEventHandler( EventHandlerCallRef handler , Even
     wchar_t* uniChars = NULL ;
     UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ;
 
     wchar_t* uniChars = NULL ;
     UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ;
 
-    UniChar* charBuf;
+    UniChar* charBuf = NULL;
     UInt32 dataSize = 0 ;
     int numChars = 0 ;
     UniChar buf[2] ;
     if ( GetEventParameter( event, kEventParamTextInputSendText, typeUnicodeText, NULL, 0 , &dataSize, NULL ) == noErr )
     {
     UInt32 dataSize = 0 ;
     int numChars = 0 ;
     UniChar buf[2] ;
     if ( GetEventParameter( event, kEventParamTextInputSendText, typeUnicodeText, NULL, 0 , &dataSize, NULL ) == noErr )
     {
-        numChars = dataSize / sizeof( UniChar) ;
+        numChars = dataSize / sizeof( UniChar) + 1;
         charBuf = buf ;
 
         charBuf = buf ;
 
-        if ( dataSize > sizeof(buf) )
+        if ( numChars * 2 > sizeof(buf) )
             charBuf = new UniChar[ numChars ] ;
         else
             charBuf = buf ;
 
         uniChars = new wchar_t[ numChars ] ;
         GetEventParameter( event, kEventParamTextInputSendText, typeUnicodeText, NULL, dataSize , NULL , charBuf ) ;
             charBuf = new UniChar[ numChars ] ;
         else
             charBuf = buf ;
 
         uniChars = new wchar_t[ numChars ] ;
         GetEventParameter( event, kEventParamTextInputSendText, typeUnicodeText, NULL, dataSize , NULL , charBuf ) ;
+               charBuf[ numChars - 1 ] = 0;
 #if SIZEOF_WCHAR_T == 2
         uniChars = (wchar_t*) charBuf ;
 #if SIZEOF_WCHAR_T == 2
         uniChars = (wchar_t*) charBuf ;
-        memcpy( uniChars , charBuf , dataSize ) ;
+        memcpy( uniChars , charBuf , numChars * 2 ) ;
 #else
         // the resulting string will never have more chars than the utf16 version, so this is safe
         wxMBConvUTF16 converter ;
 #else
         // the resulting string will never have more chars than the utf16 version, so this is safe
         wxMBConvUTF16 converter ;
@@ -587,7 +588,7 @@ pascal OSStatus wxMacUnicodeTextEventHandler( EventHandlerCallRef handler , Even
     delete [] uniChars ;
     if ( charBuf != buf )
         delete [] charBuf ;
     delete [] uniChars ;
     if ( charBuf != buf )
         delete [] charBuf ;
-    
+
     return result ;
 }
 
     return result ;
 }
 
@@ -1259,14 +1260,16 @@ void wxWindowMac::MacSetBackgroundBrush( const wxBrush &brush )
 bool wxWindowMac::MacCanFocus() const
 {
     // TODO : evaluate performance hits by looking up this value, eventually cache the results for a 1 sec or so
 bool wxWindowMac::MacCanFocus() const
 {
     // TODO : evaluate performance hits by looking up this value, eventually cache the results for a 1 sec or so
-    // CAUTION : the value returned currently is 0 or 2, I've also found values of 1 having the same meaning, but the value range
-    // is nowhere documented
+    // CAUTION : the value returned currently is 0 or 2, I've also found values of 1 having the same meaning,
+    // but the value range is nowhere documented
     Boolean keyExistsAndHasValidFormat ;
     Boolean keyExistsAndHasValidFormat ;
-    CFIndex fullKeyboardAccess = CFPreferencesGetAppIntegerValue ( CFSTR("AppleKeyboardUIMode" ) ,
-        kCFPreferencesCurrentApplication, &keyExistsAndHasValidFormat);  
-    
+    CFIndex fullKeyboardAccess = CFPreferencesGetAppIntegerValue( CFSTR("AppleKeyboardUIMode" ) ,
+        kCFPreferencesCurrentApplication, &keyExistsAndHasValidFormat );
+
     if ( keyExistsAndHasValidFormat && fullKeyboardAccess > 0 )
     if ( keyExistsAndHasValidFormat && fullKeyboardAccess > 0 )
+    {
         return true ;
         return true ;
+    }
     else
     {
         UInt32 features = 0 ;
     else
     {
         UInt32 features = 0 ;
@@ -1336,7 +1339,7 @@ void wxWindowMac::DoCaptureMouse()
     wxApp::s_captureWindow = this ;
 }
 
     wxApp::s_captureWindow = this ;
 }
 
-wxWindow* wxWindowBase::GetCapture()
+wxWindow * wxWindowBase::GetCapture()
 {
     return wxApp::s_captureWindow ;
 }
 {
     return wxApp::s_captureWindow ;
 }
@@ -1362,7 +1365,7 @@ void wxWindowMac::SetDropTarget(wxDropTarget *pDropTarget)
 
 #endif
 
 
 #endif
 
-// Old style file-manager drag&drop
+// Old-style File Manager Drag & Drop
 void wxWindowMac::DragAcceptFiles(bool accept)
 {
     // TODO:
 void wxWindowMac::DragAcceptFiles(bool accept)
 {
     // TODO:
@@ -1385,10 +1388,7 @@ bool wxWindowMac::MacGetBoundsForControl(
     int& x, int& y,
     int& w, int& h , bool adjustOrigin ) const
 {
     int& x, int& y,
     int& w, int& h , bool adjustOrigin ) const
 {
-    bool isCompositing = MacGetTopLevelWindow()->MacUsesCompositing() ;
-
     // the desired size, minus the border pixels gives the correct size of the control
     // the desired size, minus the border pixels gives the correct size of the control
-
     x = (int)pos.x;
     y = (int)pos.y;
 
     x = (int)pos.x;
     y = (int)pos.y;
 
@@ -1396,6 +1396,7 @@ bool wxWindowMac::MacGetBoundsForControl(
     w = wxMax(size.x, 0) ; // WidthDefault( size.x );
     h = wxMax(size.y, 0) ; // HeightDefault( size.y ) ;
 
     w = wxMax(size.x, 0) ; // WidthDefault( size.x );
     h = wxMax(size.y, 0) ; // HeightDefault( size.y ) ;
 
+    bool isCompositing = MacGetTopLevelWindow()->MacUsesCompositing() ;
     if ( !isCompositing )
         GetParent()->MacWindowToRootWindow( &x , &y ) ;
 
     if ( !isCompositing )
         GetParent()->MacWindowToRootWindow( &x , &y ) ;