]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/toplevel.cpp
Fix building wxSTC as a DLL using MinGW GCC 3.x.
[wxWidgets.git] / src / mac / toplevel.cpp
index d8f5c9563cf7c1ff13d9af92f4aedc60b21adf67..a6a9882aea62cb2af5920324d19995571c8c0e55 100644 (file)
@@ -176,10 +176,16 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
     {
         case kEventRawKeyRepeat :
         case kEventRawKeyDown :
-            if ( (focus != NULL) && wxTheApp->MacSendKeyDownEvent(
-                focus , message , modifiers , when , point.h , point.v ) )
             {
-                result = noErr ;
+                WXEVENTREF formerEvent = wxTheApp->MacGetCurrentEvent() ;
+                WXEVENTHANDLERCALLREF formerHandler = wxTheApp->MacGetCurrentEventHandlerCallRef() ;
+                wxTheApp->MacSetCurrentEvent( event , handler ) ;
+                if ( (focus != NULL) && wxTheApp->MacSendKeyDownEvent(
+                    focus , message , modifiers , when , point.h , point.v ) )
+                {
+                    result = noErr ;
+                }
+                wxTheApp->MacSetCurrentEvent( formerEvent , formerHandler ) ;
             }
             break ;
         case kEventRawKeyUp :
@@ -222,6 +228,12 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
                     event.SetEventType( ( modifiers & optionKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
                     focus->GetEventHandler()->ProcessEvent( event ) ;
                 }
+                if ( focus && (modifiers ^ wxTheApp->s_lastModifiers ) & cmdKey )
+                {
+                    event.m_keyCode = WXK_COMMAND ;
+                    event.SetEventType( ( modifiers & cmdKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
+                    focus->GetEventHandler()->ProcessEvent( event ) ;
+                }
                 wxTheApp->s_lastModifiers = modifiers ;
             }
              break ;
@@ -524,23 +536,35 @@ wxTopLevelWindowMac::~wxTopLevelWindowMac()
 
 void wxTopLevelWindowMac::Maximize(bool maximize)
 {
-    // not available on mac
+    ZoomWindow( (WindowRef)m_macWindow , maximize ? inZoomOut : inZoomIn , false ) ;
+
+    Rect tempRect ;
+    GrafPtr port ;
+    GetPort( &port ) ;
+    Point pt = { 0, 0 } ;
+    SetPortWindowPort((WindowRef)m_macWindow) ;
+    LocalToGlobal( &pt ) ;
+    SetPort( port ) ;
+
+    GetWindowPortBounds((WindowRef)m_macWindow, &tempRect ) ;
+    SetSize( pt.h , pt.v , tempRect.right-tempRect.left ,
+        tempRect.bottom-tempRect.top, wxSIZE_USE_EXISTING);
 }
 
 bool wxTopLevelWindowMac::IsMaximized() const
 {
-    return false ;
+    return IsWindowInStandardState(  (WindowRef)m_macWindow , NULL , NULL ) ;
 }
 
 void wxTopLevelWindowMac::Iconize(bool iconize)
 {
-    // not available on mac
+    if ( IsWindowCollapsable((WindowRef)m_macWindow) )
+        CollapseWindow((WindowRef)m_macWindow , iconize ) ;
 }
 
 bool wxTopLevelWindowMac::IsIconized() const
 {
-    // mac dialogs cannot be iconized
-    return FALSE;
+    return IsWindowCollapsed((WindowRef)m_macWindow ) ;
 }
 
 void wxTopLevelWindowMac::Restore()
@@ -926,14 +950,15 @@ void wxTopLevelWindowMac::MacDelayedDeactivation(long timestamp)
 {
     if(s_macDeactivateWindow)
     {
-        wxLogDebug("Doing delayed deactivation of %p",s_macDeactivateWindow);
+        wxLogDebug(wxT("Doing delayed deactivation of %p"),s_macDeactivateWindow);
         s_macDeactivateWindow->MacActivate(timestamp, false);
     }
 }
 
 void wxTopLevelWindowMac::MacActivate( long timestamp , bool inIsActivating )
 {
-    wxLogDebug("TopLevel=%p::MacActivate",this);
+    // wxLogDebug(wxT("TopLevel=%p::MacActivate"),this);
+
     if(s_macDeactivateWindow==this)
         s_macDeactivateWindow=NULL;
     MacDelayedDeactivation(timestamp);