]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/framuniv.cpp
add support for alpha in color dialog on OSX, see #14127
[wxWidgets.git] / src / univ / framuniv.cpp
index f2fe6fdc373007c856e120fb9c0b459b3eb057b7..01076f3e65a3c17cf5a90ced47aeeec53a2e6d50 100644 (file)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        univ/frame.cpp
+// Name:        src/univ/framuniv.cpp
 // Purpose:     wxFrame class for wxUniversal
 // Author:      Vadim Zeitlin
 // Modified by:
 // headers
 // ---------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "univframe.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
     #pragma hdrstop
 #endif
 
-    #include "wx/menu.h"
+#include "wx/frame.h"
+
 #ifndef WX_PRECOMP
-    #include "wx/frame.h"
+    #include "wx/menu.h"
     #include "wx/statusbr.h"
+    #include "wx/settings.h"
     #include "wx/toolbar.h"
 #endif // WX_PRECOMP
 
 
 BEGIN_EVENT_TABLE(wxFrame, wxFrameBase)
     EVT_SIZE(wxFrame::OnSize)
+    EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
 END_EVENT_TABLE()
 
-IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow)
-
 // ----------------------------------------------------------------------------
 // ctors
 // ----------------------------------------------------------------------------
 
 bool wxFrame::Create(wxWindow *parent,
-                wxWindowID id,
-                const wxString& title,
-                const wxPoint& pos,
-                const wxSize& size,
-                long style,
-                const wxString& name)
+                     wxWindowID id,
+                     const wxString& title,
+                     const wxPoint& pos,
+                     const wxSize& size,
+                     long style,
+                     const wxString& name)
 {
-    return wxTopLevelWindow::Create(parent, id, title, pos, size, style, name);
+    if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name) )
+        return false;
+
+    SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
+
+    return true;
 }
 
+// Responds to colour changes, and passes event on to children.
+void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
+{
+    SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
+    Refresh();
+
+    event.Skip();
+}
 
 // ----------------------------------------------------------------------------
 // menu support
@@ -80,13 +90,6 @@ void wxFrame::OnSize(wxSizeEvent& event)
     event.Skip();
 }
 
-void wxFrame::SendSizeEvent()
-{
-    wxSizeEvent event(GetSize(), GetId());
-    event.SetEventObject(this);
-    GetEventHandler()->ProcessEvent(event);
-}
-
 #if wxUSE_MENUS
 
 void wxFrame::PositionMenuBar()
@@ -259,10 +262,6 @@ void wxFrame::DoSetClientSize(int width, int height)
 #if wxUSE_TOOLBAR
     if ( m_frameToolBar )
     {
-#if wxUSE_STATUSBAR
-        height += m_frameStatusBar->GetSize().y;
-#endif // wxUSE_STATUSBAR
-
         if ( m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL )
             width += m_frameToolBar->GetSize().x;
         else
@@ -273,47 +272,35 @@ void wxFrame::DoSetClientSize(int width, int height)
     wxFrameBase::DoSetClientSize(width, height);
 }
 
-int wxFrame::GetMinWidth() const
+wxSize wxFrame::GetMinSize() const
 {
-#if wxUSE_MENUS
-    if ( m_frameMenuBar )
-    {
-        return wxMax(m_frameMenuBar->GetBestSize().x, wxFrameBase::GetMinWidth());
-    }
-    else
-#endif // wxUSE_MENUS
-        return wxFrameBase::GetMinWidth();
-}
-
-int wxFrame::GetMinHeight() const
-{
-    int height = 0;
+    wxSize size = wxFrameBase::GetMinSize();
 
 #if wxUSE_MENUS
     if ( m_frameMenuBar )
     {
-        height += m_frameMenuBar->GetSize().y;
+        const wxSize sizeMenu = m_frameMenuBar->GetBestSize();
+        if ( sizeMenu.x > size.x )
+            size.x = sizeMenu.x;
+        size.y += sizeMenu.y;
     }
 #endif // wxUSE_MENUS
 
 #if wxUSE_TOOLBAR
     if ( m_frameToolBar )
     {
-        height += m_frameToolBar->GetSize().y;
+        size.y += m_frameToolBar->GetSize().y;
     }
 #endif // wxUSE_TOOLBAR
 
 #if wxUSE_STATUSBAR
     if ( m_frameStatusBar )
     {
-        height += m_frameStatusBar->GetSize().y;
+        size.y += m_frameStatusBar->GetSize().y;
     }
 #endif // wxUSE_STATUSBAR
 
-    if ( height )
-        return height + wxMax(0, wxFrameBase::GetMinHeight());
-    else
-        return wxFrameBase::GetMinHeight();
+    return size;
 }
 
 bool wxFrame::Enable(bool enable)