From: Václav Slavík Date: Sat, 31 May 2003 17:30:00 +0000 (+0000) Subject: support SetBackgroundMode and SetTextBackground with GTK+2 X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/76b204675b65bbe6004bd372f84c4d0f9e48782d support SetBackgroundMode and SetTextBackground with GTK+2 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20783 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index a0edbd5c1a..43183328f9 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -1451,6 +1451,8 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) #endif pango_layout_set_text( m_layout, (const char*) data, strlen( (const char*) data )); + int w,h; + if (m_scaleY != 1.0) { // If there is a user or actually any scale applied to @@ -1464,6 +1466,14 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) // actually apply scaled font pango_layout_set_font_description( m_layout, m_fontdesc ); + + pango_layout_get_pixel_size( m_layout, &w, &h ); + if ( m_backgroundMode == wxSOLID ) + { + gdk_gc_set_foreground(m_textGC, m_textBackgroundColour.GetColor()); + gdk_draw_rectangle(m_window, m_textGC, TRUE, x, y, w, h); + gdk_gc_set_foreground(m_textGC, m_textForegroundColour.GetColor()); + } // Draw layout. gdk_draw_layout( m_window, m_textGC, x, y, m_layout ); @@ -1476,19 +1486,17 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) } else { - // Draw layout. - gdk_draw_layout( m_window, m_textGC, x, y, m_layout ); + pango_layout_get_pixel_size( m_layout, &w, &h ); + if ( m_backgroundMode == wxSOLID ) + { + gdk_gc_set_foreground(m_textGC, m_textBackgroundColour.GetColor()); + gdk_draw_rectangle(m_window, m_textGC, TRUE, x, y, w, h); + gdk_gc_set_foreground(m_textGC, m_textForegroundColour.GetColor()); + } + // Draw layout. + gdk_draw_layout( m_window, m_textGC, x, y, m_layout ); } -#if 0 - // Measure layout - int w,h; - pango_layout_get_pixel_size( m_layout, &w, &h ); -#else - int w = 10; - int h = 10; -#endif - wxCoord width = w; wxCoord height = h; diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp index a0edbd5c1a..43183328f9 100644 --- a/src/gtk1/dcclient.cpp +++ b/src/gtk1/dcclient.cpp @@ -1451,6 +1451,8 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) #endif pango_layout_set_text( m_layout, (const char*) data, strlen( (const char*) data )); + int w,h; + if (m_scaleY != 1.0) { // If there is a user or actually any scale applied to @@ -1464,6 +1466,14 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) // actually apply scaled font pango_layout_set_font_description( m_layout, m_fontdesc ); + + pango_layout_get_pixel_size( m_layout, &w, &h ); + if ( m_backgroundMode == wxSOLID ) + { + gdk_gc_set_foreground(m_textGC, m_textBackgroundColour.GetColor()); + gdk_draw_rectangle(m_window, m_textGC, TRUE, x, y, w, h); + gdk_gc_set_foreground(m_textGC, m_textForegroundColour.GetColor()); + } // Draw layout. gdk_draw_layout( m_window, m_textGC, x, y, m_layout ); @@ -1476,19 +1486,17 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) } else { - // Draw layout. - gdk_draw_layout( m_window, m_textGC, x, y, m_layout ); + pango_layout_get_pixel_size( m_layout, &w, &h ); + if ( m_backgroundMode == wxSOLID ) + { + gdk_gc_set_foreground(m_textGC, m_textBackgroundColour.GetColor()); + gdk_draw_rectangle(m_window, m_textGC, TRUE, x, y, w, h); + gdk_gc_set_foreground(m_textGC, m_textForegroundColour.GetColor()); + } + // Draw layout. + gdk_draw_layout( m_window, m_textGC, x, y, m_layout ); } -#if 0 - // Measure layout - int w,h; - pango_layout_get_pixel_size( m_layout, &w, &h ); -#else - int w = 10; - int h = 10; -#endif - wxCoord width = w; wxCoord height = h;