X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e044f6001e70d815f72d3911ce6bd01255847ecd..66ce9e0609ac419e6eeff665b1087193954ed84a:/src/mac/toolbar.cpp

diff --git a/src/mac/toolbar.cpp b/src/mac/toolbar.cpp
index dc49e6e9ff..1b7a1d6253 100644
--- a/src/mac/toolbar.cpp
+++ b/src/mac/toolbar.cpp
@@ -168,13 +168,19 @@ bool wxToolBar::Realize()
 
     Point localOrigin ;
     Rect clipRect ;
-    WindowRef window ;
+    WindowRef window = (WindowRef) MacGetRootWindow() ;
     wxWindow *win ;
     
-    GetParent()->MacGetPortParams( &localOrigin , &clipRect , &window , &win ) ;
+    int lx , ly ;
+    lx = ly = 0 ;
+    MacWindowToRootWindow( &lx , &ly ) ;
+    localOrigin.v = ly ;
+    localOrigin.h = lx ;
+    
+//    GetParent()->MacGetPortParams( &localOrigin , &clipRect , &window , &win ) ;
 
-    Rect toolbarrect = { m_y + localOrigin.v , m_x  + localOrigin.h , 
-                         m_y + m_height + localOrigin.v  , m_x + m_width + localOrigin.h} ;
+    Rect toolbarrect = { localOrigin.v ,localOrigin.h , 
+        m_height + localOrigin.v  , m_width + localOrigin.h} ;
     ControlFontStyleRec                controlstyle ;
 
     controlstyle.flags = kControlUseFontMask ;
@@ -194,7 +200,7 @@ bool wxToolBar::Realize()
     while (node)
     {
         wxToolBarTool *tool = (wxToolBarTool *)node->Data();
-        wxBitmapRefData * bmap = (wxBitmapRefData*) ( tool->GetBitmap1().GetRefData()) ;
+        wxBitmapRefData * bmap = (wxBitmapRefData*) ( tool->GetNormalBitmap().GetRefData()) ;
         
         if(  !tool->IsSeparator()  )
         {
@@ -204,37 +210,14 @@ bool wxToolBar::Realize()
             toolrect.bottom = toolrect.top + toolSize.y ;
             
             ControlButtonContentInfo info ;
-            if ( bmap )
-            {
-                if ( bmap->m_bitmapType == kMacBitmapTypePict )
-                {
-                    info.contentType = kControlContentPictHandle ;
-                    info.u.picture = bmap->m_hPict ;
-                }
-                else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
-                {
-                    if ( tool->GetBitmap1().GetMask() )
-                    {
-                        info.contentType = kControlContentCIconHandle ;
-                        info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , tool->GetBitmap1().GetMask()->GetMaskBitmap() ,
-                                                               8 , 16 ) ;
-                    }
-                    else
-                    {
-                        info.contentType = kControlContentCIconHandle ;
-                        info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL ,
-                                                               8 , 16 ) ;
-                    }
-                }
-            }
-            
+            wxMacCreateBitmapButton( &info , tool->GetNormalBitmap() ) ;
             ControlHandle m_macToolHandle ;
             
             SInt16 behaviour = kControlBehaviorOffsetContents ;
             if ( tool->CanBeToggled() )
                 behaviour += kControlBehaviorToggles ;
             
-            if ( info.u.cIconHandle ) // since it is a handle we can use one of them
+            if ( info.contentType != kControlNoContent ) 
             {
                 m_macToolHandle = ::NewControl( window , &toolrect , "\p" , false , 0 , 
                                                 behaviour + info.contentType , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ;
@@ -264,7 +247,7 @@ bool wxToolBar::Realize()
             /*
               ::SetControlFontStyle( m_macToolHandle , &controlstyle ) ;
             */
-            ControlHandle container = GetParent()->MacGetContainerForEmbedding() ;
+            ControlHandle container = (ControlHandle) GetParent()->MacGetContainerForEmbedding() ;
             wxASSERT_MSG( container != NULL , "No valid mac container control" ) ;
             ::EmbedControl( m_macToolHandle , container ) ;
             
@@ -340,7 +323,7 @@ wxSize wxToolBar::GetToolSize() const
     return wxSize(m_defaultWidth + 4, m_defaultHeight + 4);
 }
 
-void wxToolBar::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) 
+void wxToolBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) 
 {
     int index = 0 ;
     for ( index = 0 ; index < m_macToolHandles.Count() ; ++index )
@@ -350,7 +333,7 @@ void wxToolBar::MacHandleControlClick( ControlHandle control , SInt16 controlpar
             wxToolBarTool *tool = (wxToolBarTool *)m_tools.Nth( index )->Data();
             if ( tool->CanBeToggled() )
             {
-                tool->Toggle( GetControlValue( control ) ) ;
+                tool->Toggle( GetControlValue( (ControlHandle) control ) ) ;
             }
             OnLeftClick( tool->GetId() , tool -> IsToggled() ) ;
             break ;
@@ -378,11 +361,16 @@ void wxToolBar::MacSuperChangedPosition()
     Rect clipRect ;
     WindowRef window ;
     wxWindow *win ;
+    int lx , ly ;
+    lx = ly = 0 ;
+    MacWindowToRootWindow( &lx , &ly ) ;
+    localOrigin.v = ly ;
+    localOrigin.h = lx ;
     
-    GetParent()->MacGetPortParams( &localOrigin , &clipRect , &window , &win ) ;
+//    GetParent()->MacGetPortParams( &localOrigin , &clipRect , &window , &win ) ;
 
-    Rect toolbarrect = { m_y + localOrigin.v , m_x  + localOrigin.h , 
-        m_y + m_height + localOrigin.v  , m_x + m_width + localOrigin.h} ;
+    Rect toolbarrect = { localOrigin.v ,localOrigin.h , 
+        m_height + localOrigin.v  , m_width + localOrigin.h} ;
     ControlFontStyleRec     controlstyle ;
 
     controlstyle.flags = kControlUseFontMask ;
@@ -399,50 +387,47 @@ void wxToolBar::MacSuperChangedPosition()
     int maxHeight = 0 ;
     int toolcount = 0 ;
     {
-        WindowRef rootwindow = GetMacRootWindow() ;
-        wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ;
-        ::SetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ;
-        wxMacDrawingHelper focus( wxrootwindow ) ;
-        while (node)
-        {
-            wxToolBarTool *tool = (wxToolBarTool *)node->Data();
-            wxBitmapRefData * bmap = (wxBitmapRefData*) ( tool->GetBitmap1().GetRefData()) ;
-            
-            if(  !tool->IsSeparator()  )
-            {
-                Rect toolrect = { toolbarrect.top + m_yMargin + kwxMacToolBarTopMargin, toolbarrect.left + x + m_xMargin + kwxMacToolBarLeftMargin , 0 , 0 } ;
-                toolrect.right = toolrect.left + toolSize.x ;
-                toolrect.bottom = toolrect.top + toolSize.y ;
-                            
-                ControlHandle m_macToolHandle = (ControlHandle) m_macToolHandles[toolcount++] ;
-                
-                {
-                    Rect contrlRect ;       
-                    GetControlBounds( m_macToolHandle , &contrlRect ) ; 
-                    int former_mac_x = contrlRect.left ;
-                    int former_mac_y = contrlRect.top ;
-                    int mac_x = toolrect.left ;
-                    int mac_y = toolrect.top ;
-                                
-                    if ( mac_x != former_mac_x || mac_y != former_mac_y )
-                    {
-                        {
-                            Rect inval = { former_mac_y , former_mac_x , former_mac_y + toolSize.y , former_mac_x + toolSize.y } ;
-                            InvalWindowRect( rootwindow , &inval ) ;
-                        }
-                        UMAMoveControl( m_macToolHandle , mac_x , mac_y ) ;
-                        {
-                            Rect inval = { mac_y , mac_x , mac_y + toolSize.y , mac_x + toolSize.y } ;
-                            InvalWindowRect( rootwindow , &inval ) ;
-                        }
-                    }
-                }
-                
-                x += (int)toolSize.x;
-                noButtons ++;
-            }
-            else
-            {
+      WindowRef rootwindow = (WindowRef) MacGetRootWindow() ;
+    	while (node)
+    	{
+    		wxToolBarTool *tool = (wxToolBarTool *)node->Data();
+    		wxBitmapRefData * bmap = (wxBitmapRefData*) ( tool->GetNormalBitmap().GetRefData()) ;
+    		
+    		if(  !tool->IsSeparator()  )
+    		{
+    			Rect toolrect = { toolbarrect.top + m_yMargin + kwxMacToolBarTopMargin, toolbarrect.left + x + m_xMargin + kwxMacToolBarLeftMargin , 0 , 0 } ;
+    			toolrect.right = toolrect.left + toolSize.x ;
+    			toolrect.bottom = toolrect.top + toolSize.y ;
+    						
+    			ControlHandle m_macToolHandle = (ControlHandle) m_macToolHandles[toolcount++] ;
+    			
+            	{
+            		Rect contrlRect ;		
+            		GetControlBounds( m_macToolHandle , &contrlRect ) ; 
+            		int former_mac_x = contrlRect.left ;
+            		int former_mac_y = contrlRect.top ;
+            		int mac_x = toolrect.left ;
+            		int mac_y = toolrect.top ;
+             		        	
+            		if ( mac_x != former_mac_x || mac_y != former_mac_y )
+            		{
+            			{
+            				Rect inval = { former_mac_y , former_mac_x , former_mac_y + toolSize.y , former_mac_x + toolSize.y } ;
+            				InvalWindowRect( rootwindow , &inval ) ;
+            			}
+            	  		UMAMoveControl( m_macToolHandle , mac_x , mac_y ) ;
+            			{
+            				Rect inval = { mac_y , mac_x , mac_y + toolSize.y , mac_x + toolSize.y } ;
+            				InvalWindowRect( rootwindow , &inval ) ;
+            			}
+            		}
+            	}
+    			
+    			x += (int)toolSize.x;
+    			noButtons ++;
+    		}
+    		else
+    		{
                 toolcount++ ;
                 x += (int)toolSize.x / 4;
             }
@@ -453,13 +438,6 @@ void wxToolBar::MacSuperChangedPosition()
 
             node = node->Next();
         }
-        if ( wxrootwindow->IsKindOf( CLASSINFO( wxDialog ) ) )
-        {
-        }
-        else
-        {
-            ::SetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ;
-        }
     }
 
      if ( GetWindowStyleFlag() & wxTB_HORIZONTAL )
@@ -578,112 +556,79 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
 
 void wxToolBar::OnPaint(wxPaintEvent& event)
 {
-    Point localOrigin ;
-    Rect clipRect ;
-    WindowRef window ;
-    wxWindow *win ;
-    
-    GetParent()->MacGetPortParams( &localOrigin , &clipRect , &window , &win ) ;
-    if ( window && win )
-    {
-        wxMacDrawingHelper help( win ) ;
-        // the mac control manager always assumes to have the origin at 0,0
-        SetOrigin( 0 , 0 ) ;
-        
-        bool            hasTabBehind = false ;
-        wxWindow* parent = GetParent() ;
-        while ( parent )
-        {
-            if( parent->MacGetWindowData() )
-            {
-                ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ;
-                break ;
-            }
-            
-            if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) ||  parent->IsKindOf( CLASSINFO( wxTabCtrl ) ))
-            {
-                if ( ((wxControl*)parent)->GetMacControl() )
-                    SetUpControlBackground( ((wxControl*)parent)->GetMacControl() , -1 , true ) ;
-                break ;
-            }
-            
-            parent = parent->GetParent() ;
-        } 
-
-        Rect toolbarrect = { m_y + localOrigin.v , m_x + localOrigin.h , 
-            m_y  + localOrigin.v + m_height , m_x + localOrigin.h + m_width } ;
-
-        UMADrawThemePlacard( &toolbarrect , IsEnabled() ? kThemeStateActive : kThemeStateInactive) ;
-        {
-            int index = 0 ;
-            for ( index = 0 ; index < m_macToolHandles.Count() ; ++index )
-            {
-                if ( m_macToolHandles[index] )
-                {
-                    UMADrawControl( (ControlHandle) m_macToolHandles[index] ) ;
-                }
-            }
-        }
-        ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ;
-    }
+  wxPaintDC dc(this) ;
+  wxMacPortSetter helper(&dc) ;
+  
+	Rect toolbarrect = { dc.YLOG2DEVMAC(0) , dc.XLOG2DEVMAC(0) , 
+		dc.YLOG2DEVMAC(m_height) , dc.XLOG2DEVMAC(m_width) } ;
+	UMADrawThemePlacard( &toolbarrect , IsEnabled() ? kThemeStateActive : kThemeStateInactive) ;
+	{
+		int index = 0 ;
+		for ( index = 0 ; index < m_macToolHandles.Count() ; ++index )
+		{
+			if ( m_macToolHandles[index] )
+			{
+				UMADrawControl( (ControlHandle) m_macToolHandles[index] ) ;
+			}
+		}
+	}
 }
 
 void  wxToolBar::OnMouse( wxMouseEvent &event ) 
 {
-        
-    if (event.GetEventType() == wxEVT_LEFT_DOWN || event.GetEventType() == wxEVT_LEFT_DCLICK )
-    {
-            
-        int x = event.m_x ;
-        int y = event.m_y ;
-        
-        MacClientToRootWindow( &x , &y ) ;
-            
-        ControlHandle   control ;
-        Point       localwhere ;
-        GrafPtr     port ;
-        SInt16      controlpart ;
-        WindowRef   window = GetMacRootWindow() ;
-        
-        localwhere.h = x ;
-        localwhere.v = y ;
-    
-        short modifiers = 0;
-        
-        if ( !event.m_leftDown && !event.m_rightDown )
-            modifiers  |= btnState ;
-    
-        if ( event.m_shiftDown )
-            modifiers |= shiftKey ;
-            
-        if ( event.m_controlDown )
-            modifiers |= controlKey ;
-    
-        if ( event.m_altDown )
-            modifiers |= optionKey ;
-    
-        if ( event.m_metaDown )
-            modifiers |= cmdKey ;
-    
-        controlpart = FindControl( localwhere , window , &control ) ;
-        {
-            if ( control && ::IsControlActive( control ) )
-            {
-                {
-                    if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() )
-                        controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ;
-                    else
-                        controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ;
-                    wxTheApp->s_lastMouseDown = 0 ;
-                    if ( controlpart && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) ) 
-                        && (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice
-                    {
-                        MacHandleControlClick( control , controlpart ) ;
-                    }
-                }
-            }
-        }
-    }
+	if (event.GetEventType() == wxEVT_LEFT_DOWN || event.GetEventType() == wxEVT_LEFT_DCLICK )
+	{
+			
+		int x = event.m_x ;
+		int y = event.m_y ;
+		
+		MacClientToRootWindow( &x , &y ) ;
+			
+		ControlHandle	control ;
+		Point		localwhere ;
+		GrafPtr		port ;
+		SInt16		controlpart ;
+		WindowRef	window = (WindowRef) MacGetRootWindow() ;
+		
+		localwhere.h = x ;
+		localwhere.v = y ;
+	
+		short modifiers = 0;
+		
+		if ( !event.m_leftDown && !event.m_rightDown )
+			modifiers  |= btnState ;
+	
+		if ( event.m_shiftDown )
+			modifiers |= shiftKey ;
+			
+		if ( event.m_controlDown )
+			modifiers |= controlKey ;
+	
+		if ( event.m_altDown )
+			modifiers |= optionKey ;
+	
+		if ( event.m_metaDown )
+			modifiers |= cmdKey ;
+	
+		controlpart = FindControl( localwhere , window , &control ) ;
+		{
+			if ( control && ::IsControlActive( control ) )
+			{
+				{
+					if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() )
+						controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ;
+					else
+						controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ;
+					wxTheApp->s_lastMouseDown = 0 ;
+					if ( controlpart && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) ) 
+						&& (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice
+					{
+						MacHandleControlClick( control , controlpart ) ;
+					}
+				}
+			}
+		}
+	}
 }
 
 #endif // wxUSE_TOOLBAR