]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/drawer.cpp
Fix wxBitmapButton best size calculation in wxOSX/Carbon.
[wxWidgets.git] / src / osx / carbon / drawer.cpp
index 9c2368fe901309315c573f666117747596d389ce..d05251de16b7f9f9ced74cb605f646e8ecee1cb3 100644 (file)
@@ -1,10 +1,10 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        drawer.cpp
+// Name:        src/osx/carbon/drawer.cpp
 // Purpose:     Drawer child window classes.
 //              Drawer windows appear under their parent window and
 //              behave like a drawer, opening and closing to reveal
 //              content that does not need to be visible at all times.
-// Author:      Jason Bagley 
+// Author:      Jason Bagley
 // Modified by: Ryan Norton (To make it work :), plus bug fixes)
 // Created:     2004-30-01
 // RCS-ID:      $Id$
@@ -40,17 +40,17 @@ wxDrawerWindow::wxDrawerWindow()
 }
 
 wxDrawerWindow::~wxDrawerWindow()
-{ 
-    m_isBeingDeleted = TRUE;
-    this->Show(FALSE);
+{
+    SendDestroyEvent();
+    Show(FALSE);
 }
-    
+
 bool wxDrawerWindow::Create(wxWindow *parent,
- wxWindowID id, const wxString& title,
+ wxWindowID id, const wxString& WXUNUSED(title),
  wxSize size, wxDirection edge, const wxString& name)
 {
     wxASSERT_MSG(NULL != parent, wxT("wxDrawerWindows must be attached to a parent window."));
-       
+
     // Constrain the drawer size to the parent window.
     const wxSize parentSize(parent->GetClientSize());
     if (wxLEFT == edge || wxRIGHT == edge)
@@ -63,60 +63,60 @@ bool wxDrawerWindow::Create(wxWindow *parent,
         if (size.GetWidth() > parentSize.GetWidth())
             size.SetWidth(parentSize.GetWidth() - (kLeadingOffset + kTrailingOffset));
     }
-    
-    // Create the drawer window. 
+
+    // Create the drawer window.
     const wxPoint pos(0, 0);
     const wxSize dummySize(0,0);
     const long style = wxFRAME_DRAWER;
-    
-    bool success  = wxWindow::Create(parent, id, pos, dummySize, style, name);
+
+    bool success  = wxNonOwnedWindow::Create(parent, id, pos, size, style, name);
     if (success)
     {
-        this->MacCreateRealWindow(pos, size, style, name);
-        success = (m_macWindow != NULL);
+        // this->MacCreateRealWindow(pos, size, style, name);
+        success = (GetWXWindow() != NULL);
     }
-    
+
     if (success)
     {
         // Use drawer brush.
         SetBackgroundColour( wxColour( wxMacCreateCGColorFromHITheme( kThemeBrushDrawerBackground ) ) );
-        ::SetThemeWindowBackground((WindowRef)m_macWindow, kThemeBrushDrawerBackground, false);
-         
+        ::SetThemeWindowBackground((WindowRef)GetWXWindow(), kThemeBrushDrawerBackground, false);
+
         // Leading and trailing offset are gaps from parent window edges
         // to where the drawer starts.
-        ::SetDrawerOffsets((WindowRef)m_macWindow, kLeadingOffset, kTrailingOffset);
+        ::SetDrawerOffsets((WindowRef)GetWXWindow() , kLeadingOffset, kTrailingOffset);
 
         // Set the drawers parent.
         // Is there a better way to get the parent's WindowRef?
         wxTopLevelWindow* tlwParent = wxDynamicCast(parent, wxTopLevelWindow);
         if (NULL != tlwParent)
-        { 
-            OSStatus status = ::SetDrawerParent((WindowRef)m_macWindow,
-            (WindowRef)tlwParent->MacGetWindowRef());
+        {
+            OSStatus status = ::SetDrawerParent((WindowRef) GetWXWindow(),
+            (WindowRef)tlwParent->GetWXWindow());
             success = (noErr == status);
         }
         else
             success = false;
     }
-    
+
     return success && SetPreferredEdge(edge);
 }
 
 wxDirection wxDrawerWindow::GetCurrentEdge() const
 {
-    const OptionBits edge = ::GetDrawerCurrentEdge((WindowRef)m_macWindow);
+    const OptionBits edge = ::GetDrawerCurrentEdge((WindowRef)GetWXWindow());
     return WindowEdgeToDirection(edge);
 }
 
 wxDirection wxDrawerWindow::GetPreferredEdge() const
 {
-    const OptionBits edge = ::GetDrawerPreferredEdge((WindowRef)m_macWindow);
+    const OptionBits edge = ::GetDrawerPreferredEdge((WindowRef)GetWXWindow());
     return WindowEdgeToDirection(edge);
 }
 
 bool wxDrawerWindow::IsOpen() const
 {
-    WindowDrawerState state = ::GetDrawerState((WindowRef)m_macWindow);
+    WindowDrawerState state = ::GetDrawerState((WindowRef)GetWXWindow());
     return (state == kWindowDrawerOpen || state == kWindowDrawerOpening);
 }
 
@@ -127,20 +127,20 @@ bool wxDrawerWindow::Open(bool show)
 
     if (show)
     {
-        const OptionBits preferredEdge = ::GetDrawerPreferredEdge((WindowRef)m_macWindow);
-        status = ::OpenDrawer((WindowRef)m_macWindow, preferredEdge, kAsynchronous);
+        const OptionBits preferredEdge = ::GetDrawerPreferredEdge((WindowRef)GetWXWindow());
+        status = ::OpenDrawer((WindowRef)GetWXWindow(), preferredEdge, kAsynchronous);
     }
     else
-        status = ::CloseDrawer((WindowRef)m_macWindow, kAsynchronous);
+        status = ::CloseDrawer((WindowRef)GetWXWindow(), kAsynchronous);
 
     return (noErr == status);
 }
 
 bool wxDrawerWindow::SetPreferredEdge(wxDirection edge)
 {
-    const OSStatus status = ::SetDrawerPreferredEdge((WindowRef)m_macWindow,
+    const OSStatus status = ::SetDrawerPreferredEdge((WindowRef)GetWXWindow(),
      DirectionToWindowEdge(edge));
-       return (noErr == status);
+    return (noErr == status);
 }
 
 
@@ -152,15 +152,15 @@ OptionBits DirectionToWindowEdge(wxDirection direction)
         case wxTOP:
         edge = kWindowEdgeTop;
         break;
-        
+
         case wxBOTTOM:
         edge = kWindowEdgeBottom;
         break;
-        
+
         case wxRIGHT:
         edge = kWindowEdgeRight;
         break;
-        
+
         case wxLEFT:
         default:
         edge = kWindowEdgeLeft;
@@ -177,23 +177,23 @@ wxDirection WindowEdgeToDirection(OptionBits edge)
         case kWindowEdgeTop:
         direction = wxTOP;
         break;
-        
+
         case kWindowEdgeBottom:
         direction = wxBOTTOM;
         break;
-        
+
         case kWindowEdgeRight:
         direction = wxRIGHT;
         break;
-        
+
         case kWindowEdgeDefault: // store current preferred and return that here?
         case kWindowEdgeLeft:
         default:
         direction = wxLEFT;
         break;
     }
-    
+
     return direction;
 }
 
-#endif // defined( __WXMAC__ ) 
+#endif // defined( __WXMAC__ )