]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/window.cpp
initial value set
[wxWidgets.git] / src / mac / window.cpp
index 834c2cdc04d7a398c00b2923550ec1391f936016..d43cb87def8355c03b7630ee8c17f239bfe99f8d 100644 (file)
@@ -35,6 +35,7 @@
 #include "wx/tooltip.h"
 #include "wx/statusbr.h"
 #include "wx/menuitem.h"
+#include "wx/spinctrl.h"
 #include "wx/log.h"
 
 #if wxUSE_CARET
@@ -124,6 +125,8 @@ void wxWindowMac::Init()
 
     m_hScrollBar = NULL ;
     m_vScrollBar = NULL ;
+
+    m_label = wxEmptyString;
 }
 
 // Destructor
@@ -234,7 +237,7 @@ void wxWindowMac::SetFocus()
             wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
             if ( control && control->GetMacControl() )
             {
-                UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl()  , kControlEditTextPart ) ;
+                UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl()  , kControlFocusNextPart ) ;
             }
       #endif
             wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId);
@@ -254,7 +257,7 @@ bool wxWindowMac::Enable(bool enable)
     return TRUE;
 }
 
-void wxWindowMac::CaptureMouse()
+void wxWindowMac::DoCaptureMouse()
 {
     wxTheApp->s_captureWindow = this ;
 }
@@ -264,7 +267,7 @@ wxWindow* wxWindowBase::GetCapture()
     return wxTheApp->s_captureWindow ;
 }
 
-void wxWindowMac::ReleaseMouse()
+void wxWindowMac::DoReleaseMouse()
 {
     wxTheApp->s_captureWindow = NULL ;
 }
@@ -676,12 +679,12 @@ wxPoint wxWindowMac::GetClientAreaOrigin() const
     return wxPoint(MacGetLeftBorderSize(  ) , MacGetTopBorderSize(  ) );
 }
 
-void wxWindow::SetTitle(const wxString& title)
+void wxWindowMac::SetTitle(const wxString& title)
 {
     m_label = title ;
 }
 
-wxString wxWindow::GetTitle() const
+wxString wxWindowMac::GetTitle() const
 {
     return m_label ;
 }
@@ -691,11 +694,17 @@ bool wxWindowMac::Show(bool show)
     if ( !wxWindowBase::Show(show) )
         return FALSE;
 
+/*
+    WindowRef window = (WindowRef) MacGetRootWindow() ;
+    wxWindowMac* win = wxFindWinFromMacWindow( window ) ;
+    if ( win == NULL && win->m_isBeingDeleted )
+        return FALSE ;
+*/       
     MacSuperShown( show ) ;
+    Refresh() ; 
+/*      
     if ( !show )
     {
-        WindowRef window = (WindowRef) MacGetRootWindow() ;
-        wxWindowMac* win = wxFindWinFromMacWindow( window ) ;
         if ( win && !win->m_isBeingDeleted )
             Refresh() ; 
     }
@@ -703,7 +712,7 @@ bool wxWindowMac::Show(bool show)
     {
         Refresh() ; 
     }
-
+*/
     return TRUE;
 }
 
@@ -908,7 +917,7 @@ const wxBrush& wxWindowMac::MacGetBackgroundBrush()
                         Rect extent = { 0 , 0 , 0 , 0 } ;
                         int x , y ;
                         x = y = 0 ;
-                        wxSize size = GetSize() ;
+                        wxSize size = parent->GetSize() ;
                         parent->MacClientToRootWindow( &x , &y ) ;
                         extent.left = x ;
                         extent.top = y ;
@@ -1072,6 +1081,16 @@ void wxWindowMac::MacPaintBorders( int left , int top )
     }
 }
 
+void wxWindowMac::RemoveChild( wxWindowBase *child )
+{
+    if ( child == m_hScrollBar )
+        m_hScrollBar = NULL ;
+    if ( child == m_vScrollBar )
+        m_vScrollBar = NULL ;
+      
+    wxWindowBase::RemoveChild( child ) ;
+}
+
 // New function that will replace some of the above.
 void wxWindowMac::SetScrollbar(int orient, int pos, int thumbVisible,
     int range, bool refresh)
@@ -1376,6 +1395,7 @@ bool wxWindowMac::MacGetWindowFromPoint( const wxPoint &screenpoint , wxWindowMa
 }
 
 extern int wxBusyCursorCount ;
+static wxWindow *gs_lastWhich = NULL;
 
 bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
 {
@@ -1384,7 +1404,7 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
         return FALSE;
     
 
-    if ( IsKindOf( CLASSINFO ( wxStaticBox ) ) )
+    if ( IsKindOf( CLASSINFO ( wxStaticBox ) ) || IsKindOf( CLASSINFO( wxSpinCtrl ) ))
         return FALSE ; 
     
     WindowRef window = (WindowRef) MacGetRootWindow() ;
@@ -1407,6 +1427,7 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
 
     event.m_x = x ;
     event.m_y = y ;
+    event.SetEventObject( this ) ;
     
     if ( wxBusyCursorCount == 0 )
     {
@@ -1427,6 +1448,23 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
         wxToolTip::RelayEvent( this , event);
 #endif // wxUSE_TOOLTIPS
 
+    if (gs_lastWhich != this)
+    {
+        gs_lastWhich = this;
+        
+        // Double clicks must always occur on the same window
+        if (event.GetEventType() == wxEVT_LEFT_DCLICK)
+            event.SetEventType( wxEVT_LEFT_DOWN );
+        if (event.GetEventType() == wxEVT_RIGHT_DCLICK)
+            event.SetEventType( wxEVT_RIGHT_DOWN );
+            
+        // Same for mouse up events
+        if (event.GetEventType() == wxEVT_LEFT_UP)
+            return TRUE;
+        if (event.GetEventType() == wxEVT_RIGHT_UP)
+            return TRUE;
+    }
+
     GetEventHandler()->ProcessEvent( event ) ;
 
     return TRUE;
@@ -1447,10 +1485,12 @@ void wxWindowMac::Update()
     if ( win )
     {
       win->MacUpdate( 0 ) ;
+#if TARGET_API_MAC_CARBON
         if ( QDIsPortBuffered( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) ) )
         {
                 QDFlushPortBuffer( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) , NULL ) ;
         }
+#endif
       }
 }