]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/toplevel.cpp
Use gtk_init_check instead of gtk_init so that we can racefully exit
[wxWidgets.git] / src / gtk / toplevel.cpp
index 52c47e327f40701caafc6e3bcc8ce89844c53022..b4a0ed8489592ba1856e716e9705b6fa0d14a76f 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "toplevel.h"
 #endif
 
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
 #ifdef __VMS
 #define XIconifyWindow XICONIFYWINDOW
 #endif
@@ -32,6 +35,7 @@
 #include "wx/dcclient.h"
 #include "wx/gtk/private.h"
 #include "wx/timer.h"
+#include "wx/settings.h"
 
 #include <glib.h>
 #include <gdk/gdk.h>
@@ -323,14 +327,8 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent,
     // always create a frame of some reasonable, even if arbitrary, size (at
     // least for MSW compatibility)
     wxSize size = sizeOrig;
-    if ( size.x == -1 || size.y == -1 )
-    {
-        wxSize sizeDpy = wxGetDisplaySize();
-        if ( size.x == -1 )
-            size.x = sizeDpy.x / 3;
-        if ( size.y == -1 )
-            size.y = sizeDpy.y / 5;
-    }
+    size.x = WidthDefault(size.x);
+    size.y = HeightDefault(size.y);
 
     wxTopLevelWindows.Append( this );
 
@@ -649,6 +647,16 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
         maxWidth = GetMaxWidth(),
         maxHeight = GetMaxHeight();
 
+#ifdef __WXGPE__
+    // GPE's window manager doesn't like size hints
+    // at all, esp. when the user has to use the
+    // virtual keyboard.
+    minWidth = -1;
+    minHeight = -1;
+    maxWidth = -1;
+    maxHeight = -1;
+#endif
+    
     if ((minWidth != -1) && (m_width < minWidth)) m_width = minWidth;
     if ((minHeight != -1) && (m_height < minHeight)) m_height = minHeight;
     if ((maxWidth != -1) && (m_width > maxWidth)) m_width = maxWidth;
@@ -730,6 +738,16 @@ void wxTopLevelWindowGTK::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y),
         maxWidth = GetMaxWidth(),
         maxHeight = GetMaxHeight();
 
+#ifdef __WXGPE__
+    // GPE's window manager doesn't like size hints
+    // at all, esp. when the user has to use the
+    // virtual keyboard.
+    minWidth = -1;
+    minHeight = -1;
+    maxWidth = -1;
+    maxHeight = -1;
+#endif
+    
     if ((minWidth != -1) && (m_width < minWidth)) m_width = minWidth;
     if ((minHeight != -1) && (m_height < minHeight)) m_height = minHeight;
     if ((maxWidth != -1) && (m_width > maxWidth)) m_width = maxWidth;
@@ -989,7 +1007,7 @@ static bool do_shape_combine_region(GdkWindow* window, const wxRegion& region)
         gdk_window_shape_combine_region(window, region.GetRegion(), 0, 0);
 #else
         wxBitmap bmp = region.ConvertToBitmap();
-        bmp.SetMask(new wxMask(bmp, *wxWHITE));
+        bmp.SetMask(new wxMask(bmp, *wxBLACK));
         GdkBitmap* mask = bmp.GetMask()->GetBitmap();
         gdk_window_shape_combine_mask(window, mask, 0, 0);
 #endif
@@ -1002,6 +1020,9 @@ static bool do_shape_combine_region(GdkWindow* window, const wxRegion& region)
 
 bool wxTopLevelWindowGTK::SetShape(const wxRegion& region)
 {
+    wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), FALSE,
+                 _T("Shaped windows must be created with the wxFRAME_SHAPED style."));
+
     GdkWindow *window = NULL;
     if (m_wxwindow)
     {