m_windowDC = (wxDC*) NULL;
m_window = (wxWindow*) NULL;
m_fullScreen = false;
+#ifdef wxHAS_NATIVE_OVERLAY
+ m_dcOverlay = NULL;
+#else
m_pBackingBitmap = (wxBitmap*) NULL;
+#endif
}
#if WXWIN_COMPATIBILITY_2_6
{
wxFont font(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
- long w = 0, h = 0;
+ wxCoord w = 0, h = 0;
wxScreenDC dc;
dc.SetFont(font);
dc.GetTextExtent(str, & w, & h);
bool fullScreen,
wxRect* rect)
{
- wxASSERT_MSG( (window != 0), wxT("Window must not be null in BeginDrag."));
+ wxCHECK_MSG( window, false, wxT("Window must not be null in BeginDrag."));
// The image should be offset by this amount
m_offset = hotspot;
m_isDirty = false;
m_isDirty = false;
- if (window)
- {
- window->CaptureMouse();
+ window->CaptureMouse();
- if (m_cursor.Ok())
- {
- m_oldCursor = window->GetCursor();
- window->SetCursor(m_cursor);
- }
+ if (m_cursor.Ok())
+ {
+ m_oldCursor = window->GetCursor();
+ window->SetCursor(m_cursor);
}
// Make a copy of the window so we can repair damage done as the image is
}
}
+#ifndef wxHAS_NATIVE_OVERLAY
wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap);
if (!backing->Ok() || (backing->GetWidth() < clientSize.x || backing->GetHeight() < clientSize.y))
(*backing) = wxBitmap(clientSize.x, clientSize.y);
+#endif // !wxHAS_NATIVE_OVERLAY
if (!m_fullScreen)
{
if (m_windowDC)
{
+#ifdef wxHAS_NATIVE_OVERLAY
+ m_overlay.Reset();
+#else
m_windowDC->DestroyClippingRegion();
+#endif
delete m_windowDC;
m_windowDC = (wxDC*) NULL;
}
+#ifndef wxHAS_NATIVE_OVERLAY
m_repairBitmap = wxNullBitmap;
+#endif
return true;
}
// This is where we restore the backing bitmap, in case
// something has changed on the window.
+#ifndef wxHAS_NATIVE_OVERLAY
wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap);
wxMemoryDC memDC;
memDC.SelectObject(* backing);
//memDC.Blit(0, 0, m_boundingRect.width, m_boundingRect.height, m_windowDC, m_boundingRect.x, m_boundingRect.y);
memDC.SelectObject(wxNullBitmap);
+#endif // !wxHAS_NATIVE_OVERLAY
RedrawImage(m_position - m_offset, m_position - m_offset, false, true);
}
}
// More efficient: erase and redraw simultaneously if possible
-bool wxGenericDragImage::RedrawImage(const wxPoint& oldPos, const wxPoint& newPos,
+bool wxGenericDragImage::RedrawImage(const wxPoint& oldPos,
+ const wxPoint& newPos,
bool eraseOld, bool drawNew)
{
if (!m_windowDC)
return false;
+#ifdef wxHAS_NATIVE_OVERLAY
+ wxUnusedVar(oldPos);
+
+ wxDCOverlay dcoverlay( m_overlay, (wxWindowDC*) m_windowDC ) ;
+ if ( eraseOld )
+ dcoverlay.Clear() ;
+ if (drawNew)
+ DoDrawImage(*m_windowDC, newPos);
+#else // !wxHAS_NATIVE_OVERLAY
wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap);
if (!backing->Ok())
return false;
memDCTemp.SelectObject(wxNullBitmap);
memDC.SelectObject(wxNullBitmap);
+#endif // wxHAS_NATIVE_OVERLAY/!wxHAS_NATIVE_OVERLAY
return true;
}