]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dragimag.cpp
Disable wxUSE_ENH_METAFILE for wxGTK builds.
[wxWidgets.git] / src / msw / dragimag.cpp
index bed8aea3fe8932f1f585ada291ac75a4c57cf9a8..067d67608df63d181fedcc7ef80f9412582861e5 100644 (file)
@@ -96,6 +96,44 @@ void wxDragImage::Init()
     m_fullScreen = false;
 }
 
+#if WXWIN_COMPATIBILITY_2_8
+wxDragImage::wxDragImage(const wxBitmap& image, const wxCursor& cursor, const wxPoint& WXUNUSED(cursorHotspot))
+{
+    Init();
+
+    Create(image, cursor);
+}
+
+wxDragImage::wxDragImage(const wxIcon& image, const wxCursor& cursor, const wxPoint& WXUNUSED(cursorHotspot))
+{
+    Init();
+
+    Create(image, cursor);
+}
+
+wxDragImage::wxDragImage(const wxString& str, const wxCursor& cursor, const wxPoint& WXUNUSED(cursorHotspot))
+{
+    Init();
+
+    Create(str, cursor);
+}
+
+bool wxDragImage::Create(const wxBitmap& image, const wxCursor& cursor, const wxPoint& WXUNUSED(cursorHotspot))
+{
+    return Create(image, cursor);
+}
+
+bool wxDragImage::Create(const wxIcon& image, const wxCursor& cursor, const wxPoint& WXUNUSED(cursorHotspot))
+{
+    return Create(image, cursor);
+}
+
+bool wxDragImage::Create(const wxString& str, const wxCursor& cursor, const wxPoint& WXUNUSED(cursorHotspot))
+{
+    return Create(str, cursor);
+}
+#endif // WXWIN_COMPATIBILITY_2_8
+
 // Attributes
 ////////////////////////////////////////////////////////////////////////////
 
@@ -250,7 +288,13 @@ bool wxDragImage::Create(const wxTreeCtrl& treeCtrl, wxTreeItemId& id)
         ImageList_Destroy(GetHimageList());
     m_hImageList = (WXHIMAGELIST)
         TreeView_CreateDragImage(GetHwndOf(&treeCtrl), (HTREEITEM) id.m_pItem);
-    return m_hImageList != 0;
+    if ( !m_hImageList )
+    {
+        // fall back on just the item text if there is no image
+        return Create(treeCtrl.GetItemText(id));
+    }
+
+    return true;
 }
 #endif
 
@@ -261,8 +305,17 @@ bool wxDragImage::Create(const wxListCtrl& listCtrl, long id)
     if ( m_hImageList )
         ImageList_Destroy(GetHimageList());
     POINT pt;
-    pt.x = 0; pt.y = 0;
-    m_hImageList = (WXHIMAGELIST) ListView_CreateDragImage((HWND) listCtrl.GetHWND(), id, & pt);
+    pt.x =
+    pt.y = 0;
+    m_hImageList = (WXHIMAGELIST)
+        ListView_CreateDragImage(GetHwndOf(&listCtrl), id, &pt);
+
+    if ( !m_hImageList )
+    {
+        // as for wxTreeCtrl, fall back on dragging just the item text
+        return Create(listCtrl.GetItemText(id));
+    }
+
     return true;
 }
 #endif
@@ -286,7 +339,7 @@ bool wxDragImage::BeginDrag(const wxPoint& hotspot, wxWindow* window, bool fullS
         return false;
     }
 
-    if (m_cursor.Ok())
+    if (m_cursor.IsOk())
     {
 #if wxUSE_SIMPLER_DRAGIMAGE
         m_oldCursor = window->GetCursor();
@@ -337,7 +390,7 @@ bool wxDragImage::BeginDrag(const wxPoint& hotspot, wxWindow* window, bool fullS
     }
 
 #if !wxUSE_SIMPLER_DRAGIMAGE
-    if (m_cursor.Ok())
+    if (m_cursor.IsOk())
         ::ShowCursor(FALSE);
 #endif
 
@@ -360,7 +413,7 @@ bool wxDragImage::BeginDrag(const wxPoint& hotspot, wxWindow* window, wxWindow*
 
     wxSize sz = fullScreenRect->GetSize();
 
-    if (fullScreenRect->GetParent() && !fullScreenRect->IsKindOf(CLASSINFO(wxFrame)))
+    if (fullScreenRect->GetParent() && !wxDynamicCast(fullScreenRect, wxFrame))
         fullScreenRect->GetParent()->ClientToScreen(& x, & y);
 
     rect.x = x; rect.y = y;
@@ -382,7 +435,7 @@ bool wxDragImage::EndDrag()
     }
 
 #if wxUSE_SIMPLER_DRAGIMAGE
-    if (m_cursor.Ok() && m_oldCursor.Ok())
+    if (m_cursor.IsOk() && m_oldCursor.IsOk())
         m_window->SetCursor(m_oldCursor);
 #else
     ::ShowCursor(TRUE);