From e19a8aea8763d066ae59bc865f5bd786773a4ada Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 30 Mar 2007 15:27:08 +0000 Subject: [PATCH] removed virtual GetSelectedBitmap() from the base wxDC class, it only makes sense for wxMemoryDC git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45146 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/dc.h | 1 - include/wx/gtk/dcmemory.h | 9 ++++++--- src/gtk/dcclient.cpp | 10 +++++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/include/wx/gtk/dc.h b/include/wx/gtk/dc.h index a778ba23db..19f11b607c 100644 --- a/include/wx/gtk/dc.h +++ b/include/wx/gtk/dc.h @@ -95,7 +95,6 @@ public: virtual void ComputeScaleAndOrigin(); virtual GdkWindow* GetGDKWindow() const { return NULL; } - virtual wxBitmap GetSelectedBitmap() const { return wxNullBitmap; } protected: // implementation diff --git a/include/wx/gtk/dcmemory.h b/include/wx/gtk/dcmemory.h index 94de61a1f3..a0fb9d6c23 100644 --- a/include/wx/gtk/dcmemory.h +++ b/include/wx/gtk/dcmemory.h @@ -35,14 +35,17 @@ public: virtual void SetTextBackground( const wxColour &col ); // implementation - virtual wxBitmap GetSelectedBitmap() const { return m_selected; } + wxBitmap GetSelectedBitmap() const { return m_selected; } wxBitmap m_selected; protected: void DoGetSize( int *width, int *height ) const; virtual void DoSelect(const wxBitmap& bitmap); - virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const - { return subrect == NULL ? GetSelectedBitmap() : GetSelectedBitmap().GetSubBitmap(*subrect); } + virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const + { + wxBitmap bmp = GetSelectedBitmap(); + return subrect ? bmp.GetSubBitmap(*subrect) : bmp; + } private: void Init(); diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index 146afce404..81eaf12861 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -1217,8 +1217,14 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, xsrc = source->LogicalToDeviceX(xsrc); ysrc = source->LogicalToDeviceY(ysrc); + wxBitmap selected; wxMemoryDC *memDC = wxDynamicCast(source, wxMemoryDC); - wxBitmap selected = source->GetSelectedBitmap(); + if ( memDC ) + { + selected = memDC->GetSelectedBitmap(); + if ( !selected.IsOk() ) + return false; + } bool use_bitmap_method = false; bool is_mono = false; @@ -1229,8 +1235,6 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, ysrcMask = ysrc; } - if (memDC && !selected.Ok()) return false; - if (selected.Ok()) { is_mono = (selected.GetDepth() == 1); -- 2.45.2