]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/window.cpp
crash in some very special case when arrows were used to move around fixed
[wxWidgets.git] / src / gtk / window.cpp
index cc76aac9fb05ec56585499bd839fcd3fb1957eea..91c07fb36d1721d6d588fa823d71385bf8b4e6f5 100644 (file)
@@ -9,7 +9,7 @@
 
 
 #ifdef __GNUG__
-#pragma implementation "window.h"
+    #pragma implementation "window.h"
 #endif
 
 #include "wx/defs.h"
 #include "wx/utils.h"
 #include "wx/dialog.h"
 #include "wx/msgdlg.h"
+
 #if wxUSE_DRAG_AND_DROP
-#include "wx/dnd.h"
+    #include "wx/dnd.h"
 #endif
+
 #if wxUSE_TOOLTIPS
-#include "wx/tooltip.h"
+    #include "wx/tooltip.h"
 #endif
+
 #include "wx/menu.h"
 #include "wx/statusbr.h"
 #include "wx/intl.h"
@@ -1526,14 +1529,6 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
 
 wxWindow::~wxWindow()
 {
-    // Remove potential dangling pointer
-    if (GetParent() && GetParent()->IsKindOf(CLASSINFO(wxPanel)))
-    {
-        wxPanel* panel = (wxPanel*) GetParent();
-        if (panel->GetLastFocus() == this)
-            panel->SetLastFocus((wxWindow*) NULL);
-    }
-
     m_hasVMT = FALSE;
 
 #if wxUSE_DRAG_AND_DROP
@@ -1691,6 +1686,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
 
 void wxWindow::PostCreation()
 {
+    wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+    
     if (m_wxwindow)
     {
         gtk_signal_connect( GTK_OBJECT(m_wxwindow), "expose_event",
@@ -1702,7 +1699,8 @@ void wxWindow::PostCreation()
 
     ConnectWidget( GetConnectWidget() );
 
-    if (m_widget && m_parent) gtk_widget_realize( m_widget );
+    /* we force the creation of wxFrame and wxDialog in the respective code */
+    if (m_parent) gtk_widget_realize( m_widget );
 
     if (m_wxwindow) gtk_widget_realize( m_wxwindow );
 
@@ -1803,7 +1801,7 @@ void wxWindow::AdjustForParentClientOrigin( int& x, int& y, int sizeFlags )
     }
 }
 
-void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
+void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
 {
     wxASSERT_MSG( (m_widget != NULL), "invalid window" );
     wxASSERT_MSG( (m_parent != NULL), "wxWindow::SetSize requires parent.\n" );
@@ -1888,16 +1886,6 @@ void wxWindow::OnInternalIdle()
     UpdateWindowUI();
 }
 
-void wxWindow::SetSize( int width, int height )
-{
-    SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING );
-}
-
-void wxWindow::Move( int x, int y )
-{
-    SetSize( x, y, -1, -1, wxSIZE_USE_EXISTING );
-}
-
 void wxWindow::GetSize( int *width, int *height ) const
 {
     wxCHECK_RET( (m_widget != NULL), "invalid window" );
@@ -1906,7 +1894,7 @@ void wxWindow::GetSize( int *width, int *height ) const
     if (height) (*height) = m_height;
 }
 
-void wxWindow::SetClientSize( int width, int height )
+void wxWindow::DoSetClientSize( int width, int height )
 {
     wxCHECK_RET( (m_widget != NULL), "invalid window" );