]> git.saurik.com Git - wxWidgets.git/commitdiff
Try IDC_HAND first and then load "WXCURSOR_HAND" if it fails
authorRobin Dunn <robin@alldunn.com>
Wed, 1 Jun 2005 00:11:02 +0000 (00:11 +0000)
committerRobin Dunn <robin@alldunn.com>
Wed, 1 Jun 2005 00:11:02 +0000 (00:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/cursor.cpp

index 41120c1fc37725bddc5b0859e432bf663366b289..c0e03b7adddc405123a4d084083a5765064e267f 100644 (file)
@@ -311,10 +311,15 @@ wxCursor::wxCursor(int idCursor)
         { false, _T("WXCURSOR_RIGHT_ARROW")  }, // wxCURSOR_RIGHT_ARROW
         { false, _T("WXCURSOR_BULLSEYE")     }, // wxCURSOR_BULLSEYE
         {  true, IDC_ARROW                   }, // WXCURSOR_CHAR
+        
         // Displays as an I-beam on XP, so use a cursor file
 //        {  true, IDC_CROSS                   }, // WXCURSOR_CROSS
         {  false, _T("WXCURSOR_CROSS")       }, // WXCURSOR_CROSS
-        { false, _T("WXCURSOR_HAND")         }, // wxCURSOR_HAND
+
+        // See special handling below for wxCURSOR_HAND
+//        { false, _T("WXCURSOR_HAND")         }, // wxCURSOR_HAND
+        {  true, IDC_HAND                    }, // wxCURSOR_HAND
+        
         {  true, IDC_IBEAM                   }, // WXCURSOR_IBEAM
         {  true, IDC_ARROW                   }, // WXCURSOR_LEFT_BUTTON
         { false, _T("WXCURSOR_MAGNIFIER")    }, // wxCURSOR_MAGNIFIER
@@ -347,18 +352,25 @@ wxCursor::wxCursor(int idCursor)
                  _T("invalid cursor id in wxCursor() ctor") );
 
     const StdCursor& stdCursor = stdCursors[idCursor];
+    bool deleteLater = !stdCursor.isStd;
 
     HCURSOR hcursor = ::LoadCursor(stdCursor.isStd ? NULL : wxGetInstance(),
                                    stdCursor.name);
 
+    // IDC_HAND may not be available on some versions of Windows.
+    if ( !hcursor && idCursor == wxCURSOR_HAND)
+    {
+        hcursor = ::LoadCursor(wxGetInstance(), _T("WXCURSOR_HAND"));
+        deleteLater = true;
+    }
+    
     if ( !hcursor )
     {
         wxLogLastError(_T("LoadCursor"));
     }
     else
     {
-        m_refData = new wxCursorRefData(hcursor,
-                                        !stdCursor.isStd /* delete it later */);
+        m_refData = new wxCursorRefData(hcursor, deleteLater);
     }
 }