]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/framecmn.cpp
Don't complain under MicroWindows if a wxDC's HDC is NULL - it happens
[wxWidgets.git] / src / common / framecmn.cpp
index b69ca51332c985e75918d6dddff501a1e426cab2..9ec8339d2f591c1320bfcd71b24e8c693b92ce97 100644 (file)
     #pragma hdrstop
 #endif
 
     #pragma hdrstop
 #endif
 
-#include "wx/frame.h"
-#include "wx/menu.h"
-#include "wx/menuitem.h"
-#include "wx/dcclient.h"
+#ifndef WX_PRECOMP
+    #include "wx/frame.h"
+    #include "wx/menu.h"
+    #include "wx/menuitem.h"
+    #include "wx/dcclient.h"
+#endif // WX_PRECOMP
 
 #if wxUSE_TOOLBAR
     #include "wx/toolbar.h"
 
 #if wxUSE_TOOLBAR
     #include "wx/toolbar.h"
@@ -60,7 +62,9 @@ END_EVENT_TABLE()
 
 wxFrameBase::wxFrameBase()
 {
 
 wxFrameBase::wxFrameBase()
 {
+#if wxUSE_MENUS
     m_frameMenuBar = NULL;
     m_frameMenuBar = NULL;
+#endif // wxUSE_MENUS
 
 #if wxUSE_TOOLBAR
     m_frameToolBar = NULL;
 
 #if wxUSE_TOOLBAR
     m_frameToolBar = NULL;
@@ -94,11 +98,13 @@ wxFrame *wxFrameBase::New(wxWindow *parent,
 
 void wxFrameBase::DeleteAllBars()
 {
 
 void wxFrameBase::DeleteAllBars()
 {
+#if wxUSE_MENUS
     if ( m_frameMenuBar )
     {
         delete m_frameMenuBar;
         m_frameMenuBar = (wxMenuBar *) NULL;
     }
     if ( m_frameMenuBar )
     {
         delete m_frameMenuBar;
         m_frameMenuBar = (wxMenuBar *) NULL;
     }
+#endif // wxUSE_MENUS
 
 #if wxUSE_STATUSBAR
     if ( m_frameStatusBar )
 
 #if wxUSE_STATUSBAR
     if ( m_frameStatusBar )
@@ -117,6 +123,26 @@ void wxFrameBase::DeleteAllBars()
 #endif // wxUSE_TOOLBAR
 }
 
 #endif // wxUSE_TOOLBAR
 }
 
+bool wxFrameBase::IsOneOfBars(const wxWindow *win) const
+{
+#if wxUSE_MENUS
+    if ( win == GetMenuBar() )
+        return TRUE;
+#endif // wxUSE_MENUS
+
+#if wxUSE_STATUSBAR
+    if ( win == GetStatusBar() )
+        return TRUE;
+#endif // wxUSE_STATUSBAR
+
+#if wxUSE_TOOLBAR
+    if ( win == GetToolBar() )
+        return TRUE;
+#endif // wxUSE_TOOLBAR
+
+    return FALSE;
+}
+
 // ----------------------------------------------------------------------------
 // wxFrame size management: we exclude the areas taken by menu/status/toolbars
 // from the client area, so the client area is what's really available for the
 // ----------------------------------------------------------------------------
 // wxFrame size management: we exclude the areas taken by menu/status/toolbars
 // from the client area, so the client area is what's really available for the
@@ -192,6 +218,7 @@ void wxFrameBase::MakeModal(bool modal)
 
 bool wxFrameBase::ProcessCommand(int id)
 {
 
 bool wxFrameBase::ProcessCommand(int id)
 {
+#if wxUSE_MENUS
     wxMenuBar *bar = GetMenuBar();
     if ( !bar )
         return FALSE;
     wxMenuBar *bar = GetMenuBar();
     if ( !bar )
         return FALSE;
@@ -209,6 +236,9 @@ bool wxFrameBase::ProcessCommand(int id)
     }
 
     return GetEventHandler()->ProcessEvent(commandEvent);
     }
 
     return GetEventHandler()->ProcessEvent(commandEvent);
+#else // !wxUSE_MENUS
+    return FALSE;
+#endif // wxUSE_MENUS/!wxUSE_MENUS
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
@@ -226,7 +256,7 @@ void wxFrameBase::OnSize(wxSizeEvent& WXUNUSED(event))
         Layout();
     }
     else
         Layout();
     }
     else
-#endif
+#endif // wxUSE_CONSTRAINTS
     {
         // do we have _exactly_ one child?
         wxWindow *child = (wxWindow *)NULL;
     {
         // do we have _exactly_ one child?
         wxWindow *child = (wxWindow *)NULL;
@@ -239,14 +269,7 @@ void wxFrameBase::OnSize(wxSizeEvent& WXUNUSED(event))
             // exclude top level and managed windows (status bar isn't
             // currently in the children list except under wxMac anyhow, but
             // it makes no harm to test for it)
             // exclude top level and managed windows (status bar isn't
             // currently in the children list except under wxMac anyhow, but
             // it makes no harm to test for it)
-            if ( !win->IsTopLevel()
-#if wxUSE_STATUSBAR
-                    && (win != GetStatusBar())
-#endif // wxUSE_STATUSBAR
-#if wxUSE_TOOLBAR
-                    && (win != GetToolBar())
-#endif // wxUSE_TOOLBAR
-               )
+            if ( !win->IsTopLevel() && !IsOneOfBars(win) )
             {
                 if ( child )
                 {
             {
                 if ( child )
                 {
@@ -290,6 +313,14 @@ void wxFrameBase::OnMenuHighlight(wxMenuEvent& event)
 #endif // wxUSE_STATUSBAR
 }
 
 #endif // wxUSE_STATUSBAR
 }
 
+bool wxFrameBase::SendIconizeEvent(bool iconized)
+{
+    wxIconizeEvent event(GetId(), iconized);
+    event.SetEventObject(this);
+
+    return GetEventHandler()->ProcessEvent(event);
+}
+
 // ----------------------------------------------------------------------------
 // status bar stuff
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // status bar stuff
 // ----------------------------------------------------------------------------
@@ -354,6 +385,7 @@ void wxFrameBase::SetStatusWidths(int n, const int widths_field[] )
 
 bool wxFrameBase::ShowMenuHelp(wxStatusBar *statbar, int menuId)
 {
 
 bool wxFrameBase::ShowMenuHelp(wxStatusBar *statbar, int menuId)
 {
+#if wxUSE_MENUS
     if ( !statbar )
         return FALSE;
 
     if ( !statbar )
         return FALSE;
 
@@ -378,6 +410,9 @@ bool wxFrameBase::ShowMenuHelp(wxStatusBar *statbar, int menuId)
     statbar->SetStatusText(helpString);
 
     return !helpString.IsEmpty();
     statbar->SetStatusText(helpString);
 
     return !helpString.IsEmpty();
+#else // !wxUSE_MENUS
+    return FALSE;
+#endif // wxUSE_MENUS/!wxUSE_MENUS
 }
 
 #endif // wxUSE_STATUSBAR
 }
 
 #endif // wxUSE_STATUSBAR
@@ -419,16 +454,23 @@ wxToolBar* wxFrameBase::OnCreateToolBar(long style,
 
 void wxFrameBase::OnIdle(wxIdleEvent& WXUNUSED(event) )
 {
 
 void wxFrameBase::OnIdle(wxIdleEvent& WXUNUSED(event) )
 {
+#if wxUSE_MENUS
     DoMenuUpdates();
     DoMenuUpdates();
+#endif // wxUSE_MENUS
 }
 
 }
 
+#if wxUSE_MENUS
+
 // update all menus
 void wxFrameBase::DoMenuUpdates()
 {
     wxMenuBar* bar = GetMenuBar();
 
 // update all menus
 void wxFrameBase::DoMenuUpdates()
 {
     wxMenuBar* bar = GetMenuBar();
 
+#ifdef __WXMSW__
     wxWindow* focusWin = wxFindFocusDescendant((wxWindow*) this);
     wxWindow* focusWin = wxFindFocusDescendant((wxWindow*) this);
-
+#else
+    wxWindow* focusWin = (wxWindow*) NULL;
+#endif
     if ( bar != NULL )
     {
         int nCount = bar->GetMenuCount();
     if ( bar != NULL )
     {
         int nCount = bar->GetMenuCount();
@@ -467,3 +509,5 @@ void wxFrameBase::DoMenuUpdates(wxMenu* menu, wxWindow* focusWin)
         node = node->GetNext();
     }
 }
         node = node->GetNext();
     }
 }
+
+#endif // wxUSE_MENUS