X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e412f8928f8cc7d2f21e093f0305137736e9c639..033a5ff5c71ee7e787a3bc7e9be55ca0f5d80fa1:/src/generic/dragimgg.cpp diff --git a/src/generic/dragimgg.cpp b/src/generic/dragimgg.cpp index cb744af382..e4b50c9f34 100644 --- a/src/generic/dragimgg.cpp +++ b/src/generic/dragimgg.cpp @@ -69,13 +69,13 @@ void wxGenericDragImage::Init() { m_isDirty = false; m_isShown = false; - m_windowDC = (wxDC*) NULL; - m_window = (wxWindow*) NULL; + m_windowDC = NULL; + m_window = NULL; m_fullScreen = false; -#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS +#ifdef wxHAS_NATIVE_OVERLAY m_dcOverlay = NULL; #else - m_pBackingBitmap = (wxBitmap*) NULL; + m_pBackingBitmap = NULL; #endif } @@ -172,7 +172,7 @@ bool wxGenericDragImage::Create(const wxString& str, const wxCursor& cursor) { 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); @@ -187,7 +187,7 @@ bool wxGenericDragImage::Create(const wxString& str, const wxCursor& cursor) dc2.SetFont(font); dc2.SetBackground(* wxWHITE_BRUSH); dc2.Clear(); - dc2.SetBackgroundMode(wxTRANSPARENT); + dc2.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT); dc2.SetTextForeground(* wxLIGHT_GREY); dc2.DrawText(str, 0, 0); dc2.DrawText(str, 1, 0); @@ -236,7 +236,7 @@ bool wxGenericDragImage::BeginDrag(const wxPoint& hotspot, 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; @@ -249,17 +249,14 @@ bool wxGenericDragImage::BeginDrag(const wxPoint& hotspot, m_isDirty = false; m_isDirty = false; - if (window) + if (m_cursor.Ok()) { - window->CaptureMouse(); - - if (m_cursor.Ok()) - { - m_oldCursor = window->GetCursor(); - window->SetCursor(m_cursor); - } + m_oldCursor = window->GetCursor(); + window->SetCursor(m_cursor); } + window->CaptureMouse(); + // Make a copy of the window so we can repair damage done as the image is // dragged. @@ -288,14 +285,12 @@ bool wxGenericDragImage::BeginDrag(const wxPoint& hotspot, } } -#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS - // nothing to setup here -#else +#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 +#endif // !wxHAS_NATIVE_OVERLAY if (!m_fullScreen) { @@ -358,18 +353,15 @@ bool wxGenericDragImage::EndDrag() if (m_windowDC) { -#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS +#ifdef wxHAS_NATIVE_OVERLAY m_overlay.Reset(); #else m_windowDC->DestroyClippingRegion(); #endif - delete m_windowDC; - m_windowDC = (wxDC*) NULL; + wxDELETE(m_windowDC); } -#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS - // nothing to do for overlays -#else +#ifndef wxHAS_NATIVE_OVERLAY m_repairBitmap = wxNullBitmap; #endif @@ -380,7 +372,7 @@ bool wxGenericDragImage::EndDrag() // is non-NULL, or in screen coordinates if NULL. bool wxGenericDragImage::Move(const wxPoint& pt) { - wxASSERT_MSG( (m_windowDC != (wxDC*) NULL), wxT("No window DC in wxGenericDragImage::Move()") ); + wxASSERT_MSG( (m_windowDC != NULL), wxT("No window DC in wxGenericDragImage::Move()") ); wxPoint pt2(pt); if (m_fullScreen) @@ -404,7 +396,7 @@ bool wxGenericDragImage::Move(const wxPoint& pt) bool wxGenericDragImage::Show() { - wxASSERT_MSG( (m_windowDC != (wxDC*) NULL), wxT("No window DC in wxGenericDragImage::Show()") ); + wxASSERT_MSG( (m_windowDC != NULL), wxT("No window DC in wxGenericDragImage::Show()") ); // Show at the current position @@ -413,9 +405,7 @@ bool wxGenericDragImage::Show() // This is where we restore the backing bitmap, in case // something has changed on the window. -#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS - // overlay will be set up in the drawing routine -#else +#ifndef wxHAS_NATIVE_OVERLAY wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap); wxMemoryDC memDC; memDC.SelectObject(* backing); @@ -424,7 +414,7 @@ bool wxGenericDragImage::Show() //memDC.Blit(0, 0, m_boundingRect.width, m_boundingRect.height, m_windowDC, m_boundingRect.x, m_boundingRect.y); memDC.SelectObject(wxNullBitmap); -#endif +#endif // !wxHAS_NATIVE_OVERLAY RedrawImage(m_position - m_offset, m_position - m_offset, false, true); } @@ -444,7 +434,7 @@ bool wxGenericDragImage::UpdateBackingFromWindow(wxDC& windowDC, wxMemoryDC& des bool wxGenericDragImage::Hide() { - wxASSERT_MSG( (m_windowDC != (wxDC*) NULL), wxT("No window DC in wxGenericDragImage::Hide()") ); + wxASSERT_MSG( (m_windowDC != NULL), wxT("No window DC in wxGenericDragImage::Hide()") ); // Repair the old position @@ -460,19 +450,22 @@ bool wxGenericDragImage::Hide() } // 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; -#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS +#ifdef wxHAS_NATIVE_OVERLAY + wxUnusedVar(oldPos); + wxDCOverlay dcoverlay( m_overlay, (wxWindowDC*) m_windowDC ) ; if ( eraseOld ) dcoverlay.Clear() ; if (drawNew) DoDrawImage(*m_windowDC, newPos); -#else +#else // !wxHAS_NATIVE_OVERLAY wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap); if (!backing->Ok()) return false; @@ -538,7 +531,8 @@ bool wxGenericDragImage::RedrawImage(const wxPoint& oldPos, const wxPoint& newPo memDCTemp.SelectObject(wxNullBitmap); memDC.SelectObject(wxNullBitmap); -#endif +#endif // wxHAS_NATIVE_OVERLAY/!wxHAS_NATIVE_OVERLAY + return true; }