]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/toplevel.cpp
added more properties
[wxWidgets.git] / src / gtk / toplevel.cpp
index 278629e5fa4a30c4804afd2e6b02d5e95e8ee774..33ef92100e65caacc22ca1fcc194efee4c346fc3 100644 (file)
@@ -237,8 +237,13 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
                                 (int)alloc->height );
 */
 
+        // Tell the wxWindow class about the new size
         win->m_width = alloc->width;
         win->m_height = alloc->height;
+        
+        if (win->m_mainWidget)
+            GTK_PIZZA(win->m_mainWidget)->m_width = win->m_width;
+        
         win->GtkUpdateSize();
     }
 }
@@ -559,6 +564,8 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent,
     GTK_WIDGET_UNSET_FLAGS( m_mainWidget, GTK_CAN_FOCUS );
     gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
 
+    GTK_PIZZA(m_mainWidget)->m_width = m_width;
+        
     if (m_miniEdge == 0) // wxMiniFrame has its own version.
     {
        // For m_mainWidget themes
@@ -852,6 +859,9 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
     }
     if (width != -1) m_width = width;
     if (height != -1) m_height = height;
+    
+    if (m_mainWidget)
+        GTK_PIZZA(m_mainWidget)->m_width = m_width;
 
 /*
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
@@ -915,18 +925,16 @@ void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const
 
     if (height)
     {
-        *height = m_height;
-    
-        // mini edge
-        *height -= m_miniEdge*2 + m_miniTitle;
+        *height = m_height - 2 * m_miniEdge + m_miniTitle;
+        if (*height < 0)
+            *height = 0;
     }
     if (width)
     {
-        *width = m_width;
-    
-        *width -= m_miniEdge*2;
+        *width = m_width - 2 * m_miniEdge;
+        if (*width < 0)
+            *width = 0;
     }
-    
 }
 
 void wxTopLevelWindowGTK::DoSetClientSize( int width, int height )
@@ -1021,7 +1029,12 @@ void wxTopLevelWindowGTK::GtkOnSize()
         int client_y = m_miniEdge + m_miniTitle;
         int client_w = m_width - 2*m_miniEdge;
         int client_h = m_height - 2*m_miniEdge - m_miniTitle;
+        if (client_w < 0)
+            client_w = 0;
+        if (client_h < 0)
+            client_h = 0;
 
+        // Let the parent perform the resize
         gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
                               m_wxwindow,
                               client_x, client_y, client_w, client_h );