]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/window.cpp
minor changes for windows compilability
[wxWidgets.git] / src / gtk / window.cpp
index 54f342377a6d4eb17121511ec25038616864edf1..f220749ead717a3c0817dab5a3581f812ef2c2f4 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        window.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -914,6 +913,7 @@ wxWindow::wxWindow()
   m_pDropTarget = (wxDropTarget *) NULL;
   m_resizing = FALSE;
   m_hasOwnStyle = FALSE;
+  m_scrollGC = (GdkGC*) NULL;
 }
 
 bool wxWindow::Create( wxWindow *parent, wxWindowID id,
@@ -983,7 +983,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
 
   m_wxwindow = gtk_myfixed_new();
 
-  if (m_wxwindow) GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
+  GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
 
   if (m_windowStyle & wxTAB_TRAVERSAL == wxTAB_TRAVERSAL)
     GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
@@ -1015,7 +1015,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
   gtk_widget_show( m_wxwindow );
 
   PostCreation();
-
+  
   Show( TRUE );
 
   return TRUE;
@@ -1032,6 +1032,8 @@ wxWindow::~wxWindow()
 
   DestroyChildren();
 
+  if (m_scrollGC) gdk_gc_unref( m_scrollGC );
+    
   if (m_wxwindow) gtk_widget_destroy( m_wxwindow );
 
   if (m_widget) gtk_widget_destroy( m_widget );
@@ -1096,7 +1098,7 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
   if (m_cursor == NULL)
     m_cursor = new wxCursor( wxCURSOR_ARROW );
   m_font = *wxSWISS_FONT;
-  m_backgroundColour = wxWHITE;
+//  m_backgroundColour = wxWHITE;
   m_foregroundColour = wxBLACK;
   m_windowStyle = style;
   m_windowName = name;
@@ -1130,11 +1132,7 @@ void wxWindow::PostCreation()
 
   if (m_widget && m_parent) gtk_widget_realize( m_widget );
 
-  if (m_wxwindow)
-  {
-    gtk_widget_realize( m_wxwindow );
-    gdk_gc_set_exposures( m_wxwindow->style->fg_gc[0], TRUE );
-  }
+  if (m_wxwindow) gtk_widget_realize( m_wxwindow );
 
   SetCursor( *wxSTANDARD_CURSOR );
 
@@ -1939,7 +1937,7 @@ bool wxWindow::IsExposed( const wxRect& rect ) const
 
 void wxWindow::Clear()
 {
-  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  wxCHECK_RET( m_widget != NULL, "invalid window" );
 
   if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window );
 }
@@ -1949,21 +1947,23 @@ wxColour wxWindow::GetBackgroundColour() const
   return m_backgroundColour;
 }
 
-void wxWindow::SetBackgroundColourHelper(const wxColour& colour,
-                                         GdkWindow *window)
+void wxWindow::SetBackgroundColourHelper( GdkWindow *window )
 {
-  m_backgroundColour = colour;
-  m_backgroundColour.CalcPixel( gdk_window_get_colormap(window) );
+  if (!m_backgroundColour.Ok()) return;
+  
+  m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
   gdk_window_set_background( window, m_backgroundColour.GetColor() );
   gdk_window_clear( window );
 }
 
 void wxWindow::SetBackgroundColour( const wxColour &colour )
 {
-  wxASSERT_MSG( m_widget != NULL, "invalid window" );
+  wxCHECK_RET( m_widget != NULL, "invalid window" );
 
+  m_backgroundColour = colour;
+  
   GtkWidget *widget = m_wxwindow == NULL ? m_widget : m_wxwindow;
-  SetBackgroundColourHelper( colour, widget->window );
+  SetBackgroundColourHelper( widget->window );
 }
 
 wxColour wxWindow::GetForegroundColour() const
@@ -1978,7 +1978,7 @@ void wxWindow::SetForegroundColour( const wxColour &colour )
 
 bool wxWindow::Validate()
 {
-  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
 
   wxNode *node = GetChildren()->First();
   while (node)
@@ -1993,7 +1993,7 @@ bool wxWindow::Validate()
 
 bool wxWindow::TransferDataToWindow()
 {
-  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
 
   wxNode *node = GetChildren()->First();
   while (node)
@@ -2429,7 +2429,14 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
     int d_y = 0;
     if (dx > 0) d_x = dx;
     if (dy > 0) d_y = dy;
-    gdk_window_copy_area( m_wxwindow->window, m_wxwindow->style->fg_gc[0], d_x, d_y,
+    
+    if (!m_scrollGC)
+    {
+      m_scrollGC = gdk_gc_new( m_wxwindow->window );
+      gdk_gc_set_exposures( m_scrollGC, TRUE );
+    }
+    
+    gdk_window_copy_area( m_wxwindow->window, m_scrollGC, d_x, d_y,
       m_wxwindow->window, s_x, s_y, w, h );
 
     wxRect rect;