]> git.saurik.com Git - wxWidgets.git/commitdiff
synched Clear() and SetBackgroundColour()
authorRobert Roebling <robert@roebling.de>
Fri, 5 Feb 1999 14:58:50 +0000 (14:58 +0000)
committerRobert Roebling <robert@roebling.de>
Fri, 5 Feb 1999 14:58:50 +0000 (14:58 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1609 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/dcclient.h
include/wx/gtk1/dcclient.h
samples/image/image.cpp
src/gtk/dcclient.cpp
src/gtk/window.cpp
src/gtk1/dcclient.cpp
src/gtk1/window.cpp

index 4f4999affbd93757b832f6fdced3d828dbbab8f1..eb2ed88ec7bf25a19932a72128c1cbc53f227119 100644 (file)
@@ -101,6 +101,7 @@ public:
   GdkGC        *m_bgGC;
   GdkColormap  *m_cmap;
   bool          m_isMemDC;
+  wxWindow     *m_owner;
 
   void SetUpDC();
   void Destroy();
index 4f4999affbd93757b832f6fdced3d828dbbab8f1..eb2ed88ec7bf25a19932a72128c1cbc53f227119 100644 (file)
@@ -101,6 +101,7 @@ public:
   GdkGC        *m_bgGC;
   GdkColormap  *m_cmap;
   bool          m_isMemDC;
+  wxWindow     *m_owner;
 
   void SetUpDC();
   void Destroy();
index 74cb31a6c75b6bf444cb98c96104cb0c005163ba..33e4408a763fee57faddd418ddb74edf951d8caa 100644 (file)
@@ -144,8 +144,6 @@ void MyCanvas::CreateAntiAliasedBitmap()
   wxMemoryDC dc;
   dc.SelectObject( bitmap );
   
-  dc.SetPen( *wxTRANSPARENT_PEN );
-  
   dc.Clear();
   
   dc.SetFont( wxFont( 24, wxDECORATIVE, wxDEFAULT, wxDEFAULT ) );
index 244ab12552b4c1bc68905141bb450e89aad354e4..2dec4c304d5781cf2f2242c593658384b5069c88 100644 (file)
@@ -96,6 +96,7 @@ wxWindowDC::wxWindowDC()
     m_bgGC = (GdkGC *) NULL;
     m_cmap = (GdkColormap *) NULL;
     m_isMemDC = FALSE;
+    m_owner = (wxWindow *)NULL;
 }
 
 wxWindowDC::wxWindowDC( wxWindow *window )
@@ -105,6 +106,7 @@ wxWindowDC::wxWindowDC( wxWindow *window )
     m_textGC = (GdkGC *) NULL;
     m_bgGC = (GdkGC *) NULL;
     m_cmap = (GdkColormap *) NULL;
+    m_owner = (wxWindow *)NULL;
   
     if (!window) return;
     GtkWidget *widget = window->m_wxwindow;
@@ -119,7 +121,15 @@ wxWindowDC::wxWindowDC( wxWindow *window )
     m_isMemDC = FALSE;
         
     SetUpDC();
+
+    /* this must be done after SetUpDC, bacause SetUpDC calls the
+       repective SetBrush, SetPen, SetBackground etc functions
+       to set up the DC. SetBackground call m_owner->SetBackground
+       and this might not be desired as the standard dc background
+       is white whereas a window might assume gray to be the
+       standard (as e.g. wxStatusBar) */
     
+    m_owner = window;
 }
 
 wxWindowDC::~wxWindowDC()
@@ -758,7 +768,7 @@ void wxWindowDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(u
     x = XLOG2DEV(x);
     y = YLOG2DEV(y);
 
-    // CMB 21/5/98: draw text background if mode is wxSOLID
+    /* CMB 21/5/98: draw text background if mode is wxSOLID */
     if (m_backgroundMode == wxSOLID)
     {
         long width = gdk_string_width( font, text );
@@ -769,9 +779,9 @@ void wxWindowDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(u
     }
     gdk_draw_string( m_window, font, m_textGC, x, y + font->ascent, text );
 
-    // CMB 17/7/98: simple underline: ignores scaling and underlying
-    // X font's XA_UNDERLINE_POSITION and XA_UNDERLINE_THICKNESS
-    // properties (see wxXt implementation)
+    /* CMB 17/7/98: simple underline: ignores scaling and underlying
+       X font's XA_UNDERLINE_POSITION and XA_UNDERLINE_THICKNESS
+       properties (see wxXt implementation) */
     if (m_font.GetUnderlined())
     {
         long width = gdk_string_width( font, text );
@@ -941,8 +951,8 @@ void wxWindowDC::SetBrush( const wxBrush &brush )
 
 void wxWindowDC::SetBackground( const wxBrush &brush )
 {
-   // CMB 21/7/98: Added SetBackground. Sets background brush
-   // for Clear() and bg colour for shapes filled with cross-hatch brush
+   /* CMB 21/7/98: Added SetBackground. Sets background brush
+    * for Clear() and bg colour for shapes filled with cross-hatch brush */
    
     wxCHECK_RET( Ok(), "invalid window dc" );
   
@@ -952,6 +962,11 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
   
     if (!m_backgroundBrush.Ok()) return;
   
+    if (m_owner)
+    {
+        m_owner->SetBackgroundColour( m_backgroundBrush.GetColour() );
+    }
+  
     m_backgroundBrush.GetColour().CalcPixel( m_cmap );
     gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() );
     gdk_gc_set_background( m_penGC, m_backgroundBrush.GetColour().GetColor() );
@@ -961,11 +976,11 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
     GdkFill fillStyle = GDK_SOLID;
     switch (m_backgroundBrush.GetStyle())
     {
-      case wxSOLID:
-      case wxTRANSPARENT:
-        break;
-      default:
-        fillStyle = GDK_STIPPLED;
+        case wxSOLID:
+        case wxTRANSPARENT:
+            break;
+        default:
+            fillStyle = GDK_STIPPLED;
     }
  
     gdk_gc_set_fill( m_bgGC, fillStyle );
@@ -979,7 +994,7 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
     {
         int num = m_backgroundBrush.GetStyle() - wxBDIAGONAL_HATCH;
         gdk_gc_set_stipple( m_bgGC, hatches[num] );
-     }
+    }
 }
 
 void wxWindowDC::SetLogicalFunction( int function )
index 787c96e000d970ecdbec3e53716c2ec5d651ffa3..4c95e23186057419e92d426b4986588ff58a1a78 100644 (file)
@@ -2536,7 +2536,6 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
         GdkWindow *window = m_wxwindow->window;
         m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
         gdk_window_set_background( window, m_backgroundColour.GetColor() );
-        gdk_window_clear( window );
     }
 
     wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
index 244ab12552b4c1bc68905141bb450e89aad354e4..2dec4c304d5781cf2f2242c593658384b5069c88 100644 (file)
@@ -96,6 +96,7 @@ wxWindowDC::wxWindowDC()
     m_bgGC = (GdkGC *) NULL;
     m_cmap = (GdkColormap *) NULL;
     m_isMemDC = FALSE;
+    m_owner = (wxWindow *)NULL;
 }
 
 wxWindowDC::wxWindowDC( wxWindow *window )
@@ -105,6 +106,7 @@ wxWindowDC::wxWindowDC( wxWindow *window )
     m_textGC = (GdkGC *) NULL;
     m_bgGC = (GdkGC *) NULL;
     m_cmap = (GdkColormap *) NULL;
+    m_owner = (wxWindow *)NULL;
   
     if (!window) return;
     GtkWidget *widget = window->m_wxwindow;
@@ -119,7 +121,15 @@ wxWindowDC::wxWindowDC( wxWindow *window )
     m_isMemDC = FALSE;
         
     SetUpDC();
+
+    /* this must be done after SetUpDC, bacause SetUpDC calls the
+       repective SetBrush, SetPen, SetBackground etc functions
+       to set up the DC. SetBackground call m_owner->SetBackground
+       and this might not be desired as the standard dc background
+       is white whereas a window might assume gray to be the
+       standard (as e.g. wxStatusBar) */
     
+    m_owner = window;
 }
 
 wxWindowDC::~wxWindowDC()
@@ -758,7 +768,7 @@ void wxWindowDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(u
     x = XLOG2DEV(x);
     y = YLOG2DEV(y);
 
-    // CMB 21/5/98: draw text background if mode is wxSOLID
+    /* CMB 21/5/98: draw text background if mode is wxSOLID */
     if (m_backgroundMode == wxSOLID)
     {
         long width = gdk_string_width( font, text );
@@ -769,9 +779,9 @@ void wxWindowDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(u
     }
     gdk_draw_string( m_window, font, m_textGC, x, y + font->ascent, text );
 
-    // CMB 17/7/98: simple underline: ignores scaling and underlying
-    // X font's XA_UNDERLINE_POSITION and XA_UNDERLINE_THICKNESS
-    // properties (see wxXt implementation)
+    /* CMB 17/7/98: simple underline: ignores scaling and underlying
+       X font's XA_UNDERLINE_POSITION and XA_UNDERLINE_THICKNESS
+       properties (see wxXt implementation) */
     if (m_font.GetUnderlined())
     {
         long width = gdk_string_width( font, text );
@@ -941,8 +951,8 @@ void wxWindowDC::SetBrush( const wxBrush &brush )
 
 void wxWindowDC::SetBackground( const wxBrush &brush )
 {
-   // CMB 21/7/98: Added SetBackground. Sets background brush
-   // for Clear() and bg colour for shapes filled with cross-hatch brush
+   /* CMB 21/7/98: Added SetBackground. Sets background brush
+    * for Clear() and bg colour for shapes filled with cross-hatch brush */
    
     wxCHECK_RET( Ok(), "invalid window dc" );
   
@@ -952,6 +962,11 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
   
     if (!m_backgroundBrush.Ok()) return;
   
+    if (m_owner)
+    {
+        m_owner->SetBackgroundColour( m_backgroundBrush.GetColour() );
+    }
+  
     m_backgroundBrush.GetColour().CalcPixel( m_cmap );
     gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() );
     gdk_gc_set_background( m_penGC, m_backgroundBrush.GetColour().GetColor() );
@@ -961,11 +976,11 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
     GdkFill fillStyle = GDK_SOLID;
     switch (m_backgroundBrush.GetStyle())
     {
-      case wxSOLID:
-      case wxTRANSPARENT:
-        break;
-      default:
-        fillStyle = GDK_STIPPLED;
+        case wxSOLID:
+        case wxTRANSPARENT:
+            break;
+        default:
+            fillStyle = GDK_STIPPLED;
     }
  
     gdk_gc_set_fill( m_bgGC, fillStyle );
@@ -979,7 +994,7 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
     {
         int num = m_backgroundBrush.GetStyle() - wxBDIAGONAL_HATCH;
         gdk_gc_set_stipple( m_bgGC, hatches[num] );
-     }
+    }
 }
 
 void wxWindowDC::SetLogicalFunction( int function )
index 787c96e000d970ecdbec3e53716c2ec5d651ffa3..4c95e23186057419e92d426b4986588ff58a1a78 100644 (file)
@@ -2536,7 +2536,6 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
         GdkWindow *window = m_wxwindow->window;
         m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
         gdk_window_set_background( window, m_backgroundColour.GetColor() );
-        gdk_window_clear( window );
     }
 
     wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );