]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/frame.cpp
* Removed BASE_AND_GUI_MAC_SRC. At the moment DARWIN/MAC are identical
[wxWidgets.git] / src / msw / frame.cpp
index 99f1e9c7634efe9265d5e26f87ff1b0ef236e5dc..76bba0ef4b8bc592a88add4332833ebcf2399041 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
+// Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -72,7 +72,6 @@
 // ----------------------------------------------------------------------------
 
 BEGIN_EVENT_TABLE(wxFrame, wxFrameBase)
-    EVT_ACTIVATE(wxFrame::OnActivate)
     EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
 END_EVENT_TABLE()
 
@@ -108,11 +107,8 @@ void wxFrame::Init()
     m_fsStatusBarFields = 0;
     m_fsStatusBarHeight = 0;
     m_fsToolBarHeight = 0;
-//  m_fsMenu = 0;
 
     m_wasMinimized = FALSE;
-
-    m_winLastFocused = (wxWindow *)NULL;
 }
 
 bool wxFrame::Create(wxWindow *parent,
@@ -195,12 +191,7 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
 
 void wxFrame::Raise()
 {
-#ifdef __WIN16__
-    // no SetForegroundWindow() in Win16
-    wxFrameBase::Raise();
-#else // Win32
     ::SetForegroundWindow(GetHwnd());
-#endif // Win16/32
 }
 
 // generate an artificial resize event
@@ -324,7 +315,7 @@ void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
 // Pass TRUE to show full screen, FALSE to restore.
 bool wxFrame::ShowFullScreen(bool show, long style)
 {
-    if ( IsFullScreen() == show ) 
+    if ( IsFullScreen() == show )
         return FALSE;
 
     if (show)
@@ -395,58 +386,8 @@ bool wxFrame::ShowFullScreen(bool show, long style)
             SetMenu((HWND)GetHWND(), (HMENU)m_hMenu);
 #endif
     }
-    
-    return wxFrameBase::ShowFullScreen(show, style);
-}
-
-// Default activation behaviour - set the focus for the first child
-// subwindow found.
-void wxFrame::OnActivate(wxActivateEvent& event)
-{
-    if ( event.GetActive() )
-    {
-        // restore focus to the child which was last focused
-        wxLogTrace(_T("focus"), _T("wxFrame %08x activated."), m_hWnd);
-
-        wxWindow *parent = m_winLastFocused ? m_winLastFocused->GetParent()
-                                            : NULL;
-        if ( !parent )
-        {
-            parent = this;
-        }
-
-        wxSetFocusToChild(parent, &m_winLastFocused);
-    }
-    else // deactivating
-    {
-        // remember the last focused child if it is our child
-        m_winLastFocused = FindFocus();
-
-        // so we NULL it out if it's a child from some other frame
-        wxWindow *win = m_winLastFocused;
-        while ( win )
-        {
-            if ( win->IsTopLevel() )
-            {
-                if ( win != this )
-                {
-                    m_winLastFocused = NULL;
-                }
 
-                break;
-            }
-
-            win = win->GetParent();
-        }
-
-        wxLogTrace(_T("focus"),
-                   _T("wxFrame %08x deactivated, last focused: %08x."),
-                   m_hWnd,
-                   m_winLastFocused ? GetHwndOf(m_winLastFocused)
-                                    : NULL);
-
-        event.Skip();
-    }
+    return wxFrameBase::ShowFullScreen(show, style);
 }
 
 // ----------------------------------------------------------------------------
@@ -514,7 +455,7 @@ void wxFrame::PositionToolBar()
 // on the desktop, but are iconized/restored with it
 void wxFrame::IconizeChildFrames(bool bIconize)
 {
-    for ( wxWindowList::Node *node = GetChildren().GetFirst();
+    for ( wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
           node;
           node = node->GetNext() )
     {
@@ -560,8 +501,8 @@ void wxFrame::IconizeChildFrames(bool bIconize)
 
 WXHICON wxFrame::GetDefaultIcon() const
 {
-    return (WXHICON)(wxSTD_FRAME_ICON ? wxSTD_FRAME_ICON
-                                      : wxDEFAULT_FRAME_ICON);
+    // we don't have any standard icons (any more)
+    return (WXHICON)0;
 }
 
 // ===========================================================================
@@ -818,15 +759,13 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             }
             break;
 
-#ifndef __WIN16__
-        case WM_ENTERMENULOOP:
-            processed = HandleMenuLoop(wxEVT_MENU_OPEN, wParam);
+        case WM_INITMENU:
+            processed = HandleInitMenu();
             break;
 
         case WM_EXITMENULOOP:
             processed = HandleMenuLoop(wxEVT_MENU_CLOSE, wParam);
             break;
-#endif // __WIN16__
 
         case WM_QUERYDRAGICON:
             {
@@ -841,8 +780,18 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
     }
 
     if ( !processed )
-        rc = wxWindow::MSWWindowProc(message, wParam, lParam);
+        rc = wxFrameBase::MSWWindowProc(message, wParam, lParam);
 
     return rc;
 }
 
+// handle WM_INITMENU message
+bool wxFrame::HandleInitMenu()
+{
+    wxMenuEvent event(wxEVT_MENU_OPEN, 0);
+    event.SetEventObject(this);
+
+    return GetEventHandler()->ProcessEvent(event);
+}
+
+