]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/topluniv.cpp
minor additions to wxCmdLineParser tests
[wxWidgets.git] / src / univ / topluniv.cpp
index 959e5f278aafb75d8dc5f655304a4116a4e1ed8c..fff2e484cde6b9e27d07cefeaeeef686122288d8 100644 (file)
 #endif
 
 #include "wx/defs.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/dcclient.h"
+    #include "wx/settings.h"
+#endif
+
 #include "wx/toplevel.h"
 #include "wx/univ/renderer.h"
-#include "wx/dcclient.h"
 #include "wx/bitmap.h"
 #include "wx/image.h"
 #include "wx/cshelp.h"
@@ -70,10 +75,9 @@ bool wxTopLevelWindow::Create(wxWindow *parent,
     long styleOrig = 0,
          exstyleOrig = 0;
 
+    // FIXME -- wxUniv should provide a way to force non-native decorations!
     if ( ms_drawDecorations == -1 )
-        ms_drawDecorations = TRUE;
-        // FIXME_MGL -- this is temporary; we assume for now that native TLW
-        //              can't do decorations, which is not true
+        ms_drawDecorations = !wxSystemSettings::HasFrameDecorations();
 
     if ( ms_drawDecorations )
     {
@@ -93,15 +97,6 @@ bool wxTopLevelWindow::Create(wxWindow *parent,
                                          size, style, name) )
         return FALSE;
 
-    // FIXME: to be removed as soon as wxTLW/wxFrame/wxDialog creation code in
-    //        wxMSW is rationalized
-#ifdef __WXMSW__
-    extern const wxChar *wxFrameClassName;
-    if ( !MSWCreate(id, NULL, wxFrameClassName, this, title,
-                    pos.x, pos.y, size.x, size.y, style) )
-        return FALSE;
-#endif // __WXMSW__
-
     if ( ms_drawDecorations )
     {
         m_windowStyle = styleOrig;
@@ -144,7 +139,12 @@ long wxTopLevelWindow::GetDecorationsStyle() const
         if ( m_windowStyle & wxMINIMIZE_BOX )
             style |= wxTOPLEVEL_BUTTON_ICONIZE;
         if ( m_windowStyle & wxMAXIMIZE_BOX )
-            style |= wxTOPLEVEL_BUTTON_MAXIMIZE;
+        {
+            if ( IsMaximized() )
+                style |= wxTOPLEVEL_BUTTON_RESTORE;
+            else
+                style |= wxTOPLEVEL_BUTTON_MAXIMIZE;
+        }
 #if wxUSE_HELP
         if ( m_exStyle & (wxFRAME_EX_CONTEXTHELP | wxDIALOG_EX_CONTEXTHELP))
             style |= wxTOPLEVEL_BUTTON_HELP;
@@ -264,25 +264,27 @@ long wxTopLevelWindow::HitTest(const wxPoint& pt) const
 void wxTopLevelWindow::SetIcon(const wxIcon& icon)
 {
     wxTopLevelWindowNative::SetIcon(icon);
-    if ( !m_renderer ) return;
-
-    wxSize size = m_renderer->GetFrameIconSize();
 
-    if ( !icon.Ok() || size.x == -1  )
-        m_titlebarIcon = icon;
-    else
+    if ( ms_drawDecorations && m_renderer )
     {
-        wxBitmap bmp1;
-        bmp1.CopyFromIcon(icon);
-        if ( !bmp1.Ok() )
-            m_titlebarIcon = wxNullIcon;
-        else if ( bmp1.GetWidth() == size.x && bmp1.GetHeight() == size.y )
+        wxSize size = m_renderer->GetFrameIconSize();
+
+        if ( !icon.Ok() || size.x == -1  )
             m_titlebarIcon = icon;
         else
         {
-            wxImage img = bmp1.ConvertToImage();
-            img.Rescale(size.x, size.y);
-            m_titlebarIcon.CopyFromBitmap(wxBitmap(img));
+            wxBitmap bmp1;
+            bmp1.CopyFromIcon(icon);
+            if ( !bmp1.Ok() )
+                m_titlebarIcon = wxNullIcon;
+            else if ( bmp1.GetWidth() == size.x && bmp1.GetHeight() == size.y )
+                m_titlebarIcon = icon;
+            else
+            {
+                wxImage img = bmp1.ConvertToImage();
+                img.Rescale(size.x, size.y);
+                m_titlebarIcon.CopyFromBitmap(wxBitmap(img));
+            }
         }
     }
 }