]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/nonownedwnd.cpp
Update version to 2.9.4 in version.bkl too and rebake everything.
[wxWidgets.git] / src / osx / carbon / nonownedwnd.cpp
index bdebc836a51e5f55f52898a06c8b315d2bae2f25..dd0e3d774d0c7dc107a711aac62afbead7ba8126 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     implementation of wxNonOwnedWindow
 // Author:      Stefan Csomor
 // Created:     2008-03-24
 // Purpose:     implementation of wxNonOwnedWindow
 // Author:      Stefan Csomor
 // Created:     2008-03-24
-// RCS-ID:      $Id: nonownedwnd.cpp 50329 2007-11-29 17:00:58Z VS $
+// RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor 2008
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Stefan Csomor 2008
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -237,12 +237,12 @@ void wxNonOwnedWindowCarbonImpl::MacSetUnifiedAppearance( bool set )
         set ? kWindowNoAttributes : kWindowUnifiedTitleAndToolbarAttribute) ;
 
     // For some reason, Tiger uses white as the background color for this appearance,
         set ? kWindowNoAttributes : kWindowUnifiedTitleAndToolbarAttribute) ;
 
     // For some reason, Tiger uses white as the background color for this appearance,
-    // while most apps using it use the typical striped background. Restore that behavior
+    // while most apps using it use the typical striped background. Restore that behaviour
     // for wx.
     // TODO: Determine if we need this on Leopard as well. (should be harmless either way,
     // though)
     // since when creating the peering is not yet completely set-up we call both setters
     // for wx.
     // TODO: Determine if we need this on Leopard as well. (should be harmless either way,
     // though)
     // since when creating the peering is not yet completely set-up we call both setters
-    // explicitely
+    // explicitly
     m_wxPeer->SetBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW) ) ;
     SetBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW) ) ;
 }
     m_wxPeer->SetBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW) ) ;
     SetBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW) ) ;
 }
@@ -254,6 +254,7 @@ void wxNonOwnedWindowCarbonImpl::MacSetUnifiedAppearance( bool set )
 
 static pascal long wxShapedMacWindowDef(short varCode, WindowRef window, SInt16 message, SInt32 param);
 
 
 static pascal long wxShapedMacWindowDef(short varCode, WindowRef window, SInt16 message, SInt32 param);
 
+WXDLLEXPORT void SetupMouseEvent( wxMouseEvent &wxevent , wxMacCarbonEvent &cEvent );
 
 // ---------------------------------------------------------------------------
 // Carbon Events
 
 // ---------------------------------------------------------------------------
 // Carbon Events
@@ -322,17 +323,13 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
         GetEventParameter( event, kEventParamKeyUnicodes, typeUnicodeText, NULL, dataSize , NULL , charBuf ) ;
         charBuf[ numChars - 1 ] = 0;
 
         GetEventParameter( event, kEventParamKeyUnicodes, typeUnicodeText, NULL, dataSize , NULL , charBuf ) ;
         charBuf[ numChars - 1 ] = 0;
 
-#if SIZEOF_WCHAR_T == 2
-        uniChar = charBuf[0] ;
-#else
         wxMBConvUTF16 converter ;
         converter.MB2WC( uniChar , (const char*)charBuf , 2 ) ;
         wxMBConvUTF16 converter ;
         converter.MB2WC( uniChar , (const char*)charBuf , 2 ) ;
-#endif
 
         if ( numChars * 2 > 4 )
             delete[] charBuf ;
     }
 
         if ( numChars * 2 > 4 )
             delete[] charBuf ;
     }
-#endif
+#endif // wxUSE_UNICODE
 
     GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &charCode );
     GetEventParameter( event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode );
 
     GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &charCode );
     GetEventParameter( event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode );
@@ -428,7 +425,7 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
 EventMouseButton g_lastButton = 0 ;
 bool g_lastButtonWasFakeRight = false ;
 
 EventMouseButton g_lastButton = 0 ;
 bool g_lastButtonWasFakeRight = false ;
 
-void SetupMouseEvent( wxMouseEvent &wxevent , wxMacCarbonEvent &cEvent )
+WXDLLEXPORT void SetupMouseEvent( wxMouseEvent &wxevent , wxMacCarbonEvent &cEvent )
 {
     UInt32 modifiers = cEvent.GetParameter<UInt32>(kEventParamKeyModifiers, typeUInt32) ;
     Point screenMouseLocation = cEvent.GetParameter<Point>(kEventParamMouseLocation) ;
 {
     UInt32 modifiers = cEvent.GetParameter<UInt32>(kEventParamKeyModifiers, typeUInt32) ;
     Point screenMouseLocation = cEvent.GetParameter<Point>(kEventParamMouseLocation) ;
@@ -721,8 +718,8 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler),
 
         if ( currentMouseWindow->HandleWindowEvent(wxevent) )
         {
 
         if ( currentMouseWindow->HandleWindowEvent(wxevent) )
         {
-            if ((currentMouseWindowParent != NULL) &&
-                (currentMouseWindowParent->GetChildren().Find(currentMouseWindow) == NULL))
+            if ( currentMouseWindowParent &&
+                 !currentMouseWindowParent->GetChildren().Member(currentMouseWindow) )
                 currentMouseWindow = NULL;
 
             result = noErr;
                 currentMouseWindow = NULL;
 
             result = noErr;
@@ -929,7 +926,7 @@ wxNonOwnedWindowEventHandler(EventHandlerCallRef WXUNUSED(handler),
 // mix this in from window.cpp
 pascal OSStatus wxMacUnicodeTextEventHandler( EventHandlerCallRef handler , EventRef event , void *data ) ;
 
 // mix this in from window.cpp
 pascal OSStatus wxMacUnicodeTextEventHandler( EventHandlerCallRef handler , EventRef event , void *data ) ;
 
-pascal OSStatus wxNonOwnedEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
+static pascal OSStatus wxNonOwnedEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
 {
     OSStatus result = eventNotHandledErr ;
 
 {
     OSStatus result = eventNotHandledErr ;
 
@@ -1154,7 +1151,7 @@ void wxNonOwnedWindowCarbonImpl::WillBeDestroyed()
     }
 }
 
     }
 }
 
-void wxNonOwnedWindowInstallTopLevelWindowEventHandler(WindowRef window, EventHandlerRef* handler, void *ref)
+static void wxNonOwnedWindowInstallTopLevelWindowEventHandler(WindowRef window, EventHandlerRef* handler, void *ref)
 {
     InstallWindowEventHandler(window, GetwxNonOwnedEventHandlerUPP(),
         GetEventTypeCount(eventList), eventList, ref, handler );
 {
     InstallWindowEventHandler(window, GetwxNonOwnedEventHandlerUPP(),
         GetEventTypeCount(eventList), eventList, ref, handler );
@@ -1191,7 +1188,7 @@ void wxNonOwnedWindowCarbonImpl::MacInstallTopLevelWindowEventHandler()
 }
 
 void wxNonOwnedWindowCarbonImpl::Create(
 }
 
 void wxNonOwnedWindowCarbonImpl::Create(
-    wxWindow* parent,
+    wxWindow* WXUNUSED(parent),
     WXWindow nativeWindow )
 {
     m_macWindow = nativeWindow;
     WXWindow nativeWindow )
 {
     m_macWindow = nativeWindow;
@@ -1204,39 +1201,39 @@ void wxNonOwnedWindowCarbonImpl::Create(
                                         long style, long extraStyle,
                                         const wxString& WXUNUSED(name) )
 {
                                         long style, long extraStyle,
                                         const wxString& WXUNUSED(name) )
 {
-    
+
     OSStatus err = noErr ;
     Rect theBoundsRect;
     OSStatus err = noErr ;
     Rect theBoundsRect;
-    
+
     int x = (int)pos.x;
     int y = (int)pos.y;
     int x = (int)pos.x;
     int y = (int)pos.y;
-    
+
     int w = size.x;
     int h = size.y;
     int w = size.x;
     int h = size.y;
-    
+
     ::SetRect(&theBoundsRect, x, y , x + w, y + h);
     ::SetRect(&theBoundsRect, x, y , x + w, y + h);
-    
+
     // translate the window attributes in the appropriate window class and attributes
     WindowClass wclass = 0;
     WindowAttributes attr = kWindowNoAttributes ;
     WindowGroupRef group = NULL ;
     bool activationScopeSet = false;
     WindowActivationScope activationScope = kWindowActivationScopeNone;
     // translate the window attributes in the appropriate window class and attributes
     WindowClass wclass = 0;
     WindowAttributes attr = kWindowNoAttributes ;
     WindowGroupRef group = NULL ;
     bool activationScopeSet = false;
     WindowActivationScope activationScope = kWindowActivationScopeNone;
-    
+
     if ( style & wxFRAME_TOOL_WINDOW )
     {
         if (
             ( style & wxMINIMIZE_BOX ) || ( style & wxMAXIMIZE_BOX ) ||
             ( style & wxSYSTEM_MENU ) || ( style & wxCAPTION ) ||
     if ( style & wxFRAME_TOOL_WINDOW )
     {
         if (
             ( style & wxMINIMIZE_BOX ) || ( style & wxMAXIMIZE_BOX ) ||
             ( style & wxSYSTEM_MENU ) || ( style & wxCAPTION ) ||
-            ( style &wxTINY_CAPTION_HORIZ) ||  ( style &wxTINY_CAPTION_VERT)
+            ( style & wxTINY_CAPTION)
             )
         {
             if ( ( style & wxSTAY_ON_TOP ) )
                 wclass = kUtilityWindowClass;
             else
                 wclass = kFloatingWindowClass ;
             )
         {
             if ( ( style & wxSTAY_ON_TOP ) )
                 wclass = kUtilityWindowClass;
             else
                 wclass = kFloatingWindowClass ;
-            
-            if ( ( style &wxTINY_CAPTION_VERT) )
+
+            if ( ( style & wxTINY_CAPTION) )
                 attr |= kWindowSideTitlebarAttribute ;
         }
         else
                 attr |= kWindowSideTitlebarAttribute ;
         }
         else
@@ -1294,41 +1291,41 @@ void wxNonOwnedWindowCarbonImpl::Create(
             wclass = kPlainWindowClass ;
         }
     }
             wclass = kPlainWindowClass ;
         }
     }
-    
+
     if ( wclass != kPlainWindowClass )
     {
         if ( ( style & wxMINIMIZE_BOX ) )
             attr |= kWindowCollapseBoxAttribute ;
     if ( wclass != kPlainWindowClass )
     {
         if ( ( style & wxMINIMIZE_BOX ) )
             attr |= kWindowCollapseBoxAttribute ;
-        
+
         if ( ( style & wxMAXIMIZE_BOX ) )
             attr |= kWindowFullZoomAttribute ;
         if ( ( style & wxMAXIMIZE_BOX ) )
             attr |= kWindowFullZoomAttribute ;
-        
+
         if ( ( style & wxRESIZE_BORDER ) )
             attr |= kWindowResizableAttribute ;
         if ( ( style & wxRESIZE_BORDER ) )
             attr |= kWindowResizableAttribute ;
-        
+
         if ( ( style & wxCLOSE_BOX) )
             attr |= kWindowCloseBoxAttribute ;
     }
     attr |= kWindowLiveResizeAttribute;
         if ( ( style & wxCLOSE_BOX) )
             attr |= kWindowCloseBoxAttribute ;
     }
     attr |= kWindowLiveResizeAttribute;
-    
+
     if ( ( style &wxSTAY_ON_TOP) )
         group = GetWindowGroupOfClass(kUtilityWindowClass) ;
     if ( ( style &wxSTAY_ON_TOP) )
         group = GetWindowGroupOfClass(kUtilityWindowClass) ;
-    
+
     if ( ( style & wxFRAME_FLOAT_ON_PARENT ) )
         group = GetWindowGroupOfClass(kFloatingWindowClass) ;
     if ( ( style & wxFRAME_FLOAT_ON_PARENT ) )
         group = GetWindowGroupOfClass(kFloatingWindowClass) ;
-    
+
     if ( group == NULL && parent != NULL )
     {
         WindowRef parenttlw = (WindowRef) parent->MacGetTopLevelWindowRef();
         if( parenttlw )
             group = GetWindowGroupParent( GetWindowGroup( parenttlw ) );
     }
     if ( group == NULL && parent != NULL )
     {
         WindowRef parenttlw = (WindowRef) parent->MacGetTopLevelWindowRef();
         if( parenttlw )
             group = GetWindowGroupParent( GetWindowGroup( parenttlw ) );
     }
-    
+
     attr |= kWindowCompositingAttribute;
 #if 0 // TODO : decide on overall handling of high dpi screens (pixel vs userscale)
     attr |= kWindowFrameworkScaledAttribute;
 #endif
     attr |= kWindowCompositingAttribute;
 #if 0 // TODO : decide on overall handling of high dpi screens (pixel vs userscale)
     attr |= kWindowFrameworkScaledAttribute;
 #endif
-    
+
     if ( ( style &wxFRAME_SHAPED) )
     {
         WindowDefSpec customWindowDefSpec;
     if ( ( style &wxFRAME_SHAPED) )
     {
         WindowDefSpec customWindowDefSpec;
@@ -1347,28 +1344,28 @@ void wxNonOwnedWindowCarbonImpl::Create(
     {
         err = ::CreateNewWindow( wclass , attr , &theBoundsRect , (WindowRef*)&m_macWindow ) ;
     }
     {
         err = ::CreateNewWindow( wclass , attr , &theBoundsRect , (WindowRef*)&m_macWindow ) ;
     }
-    
+
     if ( err == noErr && m_macWindow != NULL && group != NULL )
         SetWindowGroup( (WindowRef) m_macWindow , group ) ;
     if ( err == noErr && m_macWindow != NULL && group != NULL )
         SetWindowGroup( (WindowRef) m_macWindow , group ) ;
-    
+
     wxCHECK_RET( err == noErr, wxT("Mac OS error when trying to create new window") );
     wxCHECK_RET( err == noErr, wxT("Mac OS error when trying to create new window") );
-    
+
     // setup a separate group for each window, so that overlays can be handled easily
     // setup a separate group for each window, so that overlays can be handled easily
-    
+
     WindowGroupRef overlaygroup = NULL;
     verify_noerr( CreateWindowGroup( kWindowGroupAttrMoveTogether | kWindowGroupAttrLayerTogether | kWindowGroupAttrHideOnCollapse, &overlaygroup ));
     verify_noerr( SetWindowGroupParent( overlaygroup, GetWindowGroup( (WindowRef) m_macWindow )));
     verify_noerr( SetWindowGroup( (WindowRef) m_macWindow , overlaygroup ));
     WindowGroupRef overlaygroup = NULL;
     verify_noerr( CreateWindowGroup( kWindowGroupAttrMoveTogether | kWindowGroupAttrLayerTogether | kWindowGroupAttrHideOnCollapse, &overlaygroup ));
     verify_noerr( SetWindowGroupParent( overlaygroup, GetWindowGroup( (WindowRef) m_macWindow )));
     verify_noerr( SetWindowGroup( (WindowRef) m_macWindow , overlaygroup ));
-    
+
     if ( activationScopeSet )
     {
         verify_noerr( SetWindowActivationScope( (WindowRef) m_macWindow , activationScope ));
     }
     if ( activationScopeSet )
     {
         verify_noerr( SetWindowActivationScope( (WindowRef) m_macWindow , activationScope ));
     }
-    
+
     // the create commands are only for content rect,
     // so we have to set the size again as structure bounds
     SetWindowBounds( m_macWindow , kWindowStructureRgn , &theBoundsRect ) ;
     // the create commands are only for content rect,
     // so we have to set the size again as structure bounds
     SetWindowBounds( m_macWindow , kWindowStructureRgn , &theBoundsRect ) ;
-    
+
     // Causes the inner part of the window not to be metal
     // if the style is used before window creation.
 #if 0 // TARGET_API_MAC_OSX
     // Causes the inner part of the window not to be metal
     // if the style is used before window creation.
 #if 0 // TARGET_API_MAC_OSX
@@ -1378,24 +1375,24 @@ void wxNonOwnedWindowCarbonImpl::Create(
             MacSetMetalAppearance( true ) ;
     }
 #endif
             MacSetMetalAppearance( true ) ;
     }
 #endif
-    
+
     if ( m_macWindow != NULL )
     {
         MacSetUnifiedAppearance( true ) ;
     }
     if ( m_macWindow != NULL )
     {
         MacSetUnifiedAppearance( true ) ;
     }
-    
+
     HIViewRef growBoxRef = 0 ;
     err = HIViewFindByID( HIViewGetRoot( m_macWindow ), kHIViewWindowGrowBoxID, &growBoxRef  );
     if ( err == noErr && growBoxRef != 0 )
         HIGrowBoxViewSetTransparent( growBoxRef, true ) ;
     HIViewRef growBoxRef = 0 ;
     err = HIViewFindByID( HIViewGetRoot( m_macWindow ), kHIViewWindowGrowBoxID, &growBoxRef  );
     if ( err == noErr && growBoxRef != 0 )
         HIGrowBoxViewSetTransparent( growBoxRef, true ) ;
-    
+
     // the frame window event handler
     InstallStandardEventHandler( GetWindowEventTarget(m_macWindow) ) ;
     MacInstallTopLevelWindowEventHandler() ;
     // the frame window event handler
     InstallStandardEventHandler( GetWindowEventTarget(m_macWindow) ) ;
     MacInstallTopLevelWindowEventHandler() ;
-    
+
     if ( extraStyle & wxFRAME_EX_METAL)
         MacSetMetalAppearance(true);
     if ( extraStyle & wxFRAME_EX_METAL)
         MacSetMetalAppearance(true);
-    
+
     if ( ( style &wxFRAME_SHAPED) )
     {
         // default shape matches the window size
     if ( ( style &wxFRAME_SHAPED) )
     {
         // default shape matches the window size