// 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
/////////////////////////////////////////////////////////////////////////////
m_pDropTarget = (wxDropTarget *) NULL;
m_resizing = FALSE;
m_hasOwnStyle = FALSE;
+ m_scrollGC = (GdkGC*) NULL;
}
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 );
gtk_widget_show( m_wxwindow );
PostCreation();
-
+
Show( TRUE );
return TRUE;
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 );
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;
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 );
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 );
}
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
bool wxWindow::Validate()
{
- wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
wxNode *node = GetChildren()->First();
while (node)
bool wxWindow::TransferDataToWindow()
{
- wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+ wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
wxNode *node = GetChildren()->First();
while (node)
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;