X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b389a12d03d1485d6297a031be44d90ad64623c4..f93849e67739f80cf1b5802dd7537446128ae1db:/src/os2/cursor.cpp?ds=sidebyside diff --git a/src/os2/cursor.cpp b/src/os2/cursor.cpp index be4238b9b2..1f14052c8c 100644 --- a/src/os2/cursor.cpp +++ b/src/os2/cursor.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp +// Name: src/os2/cursor.cpp // Purpose: wxCursor class // Author: David Webster // Modified by: @@ -12,18 +12,20 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" #include "wx/cursor.h" -#include "wx/icon.h" + +#ifndef WX_PRECOMP + #include + #include "wx/list.h" + #include "wx/utils.h" + #include "wx/app.h" + #include "wx/icon.h" + #include "wx/image.h" + #include "wx/log.h" #endif #include "wx/os2/private.h" -#include "wx/image.h" +#include "wx/os2/wxrsc.h" #include "assert.h" @@ -34,7 +36,7 @@ wxCursorRefData::wxCursorRefData(void) m_nWidth = 32; m_nHeight = 32; m_hCursor = 0 ; - m_bDestroyCursor = FALSE; + m_bDestroyCursor = false; } void wxCursorRefData::Free() @@ -52,39 +54,26 @@ wxCursor::wxCursor(void) { } -wxCursor::wxCursor( - const char WXUNUSED(bits)[] -, int WXUNUSED(width) -, int WXUNUSED(height) -, int WXUNUSED(hotSpotX) -, int WXUNUSED(hotSpotY) -, const char WXUNUSED(maskBits)[] -) -{ -} - -wxCursor::wxCursor( - const wxImage& rImage -) +wxCursor::wxCursor(const wxImage& rImage) { - wxImage vImage32 = rImage.Scale(32,32); - int nWidth = vImage32.GetWidth(); - int nHeight = vImage32.GetHeight(); + wxImage vImage32 = rImage.Scale(32,32); + int nWidth = vImage32.GetWidth(); + int nHeight = vImage32.GetHeight(); // // Need a bitmap handle somehow // - HBITMAP hBitmap = wxBitmap(vImage32).GetHBITMAP(); - int nHotSpotX = vImage32.GetOptionInt(wxCUR_HOTSPOT_X); - int nHotSpotY = vImage32.GetOptionInt(wxCUR_HOTSPOT_Y); + HBITMAP hBitmap = wxBitmap(vImage32).GetHBITMAP(); + int nHotSpotX = vImage32.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X); + int nHotSpotY = vImage32.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y); if (nHotSpotX < 0 || nHotSpotX >= nWidth) - nHotSpotX = 0; + nHotSpotX = 0; if (nHotSpotY < 0 || nHotSpotY >= nHeight) - nHotSpotY = 0; + nHotSpotY = 0; - wxCursorRefData* pRefData = new wxCursorRefData; + wxCursorRefData* pRefData = new wxCursorRefData; m_refData = pRefData; pRefData->m_hCursor = (WXHCURSOR) ::WinCreatePointer( HWND_DESKTOP @@ -96,31 +85,29 @@ wxCursor::wxCursor( } // end of wxCursor::wxCursor -wxCursor::wxCursor( - const wxString& rsCursorFile -, long lFlags -, int nHotSpotX -, int nHotSpotY -) +wxCursor::wxCursor( const wxString& WXUNUSED(rsCursorFile), + wxBitmapType type, + int WXUNUSED(nHotSpotX), + int WXUNUSED(nHotSpotY) ) { - wxCursorRefData* pRefData = new wxCursorRefData; + wxCursorRefData* pRefData = new wxCursorRefData; pRefData = new wxCursorRefData; m_refData = pRefData; - pRefData->m_bDestroyCursor = FALSE; - if (lFlags == wxBITMAP_TYPE_CUR_RESOURCE) + pRefData->m_bDestroyCursor = false; + if (type == wxBITMAP_TYPE_CUR_RESOURCE) { pRefData->m_hCursor = (WXHCURSOR) ::WinLoadPointer( HWND_DESKTOP ,0 - ,(ULONG)lFlags // if OS/2 this should be the resource Id + ,(ULONG)type // if OS/2 this should be the resource Id ); } + else + wxLogError("Invalid cursor bitmap type '%d'", type); } // end of wxCursor::wxCursor // Cursors by stock number -wxCursor::wxCursor( - int nCursorType -) +void wxCursor::InitFromStock(wxStockCursor nCursorType) { wxCursorRefData* pRefData = new wxCursorRefData; @@ -134,6 +121,7 @@ wxCursor::wxCursor( ); break; + case wxCURSOR_WATCH: case wxCURSOR_WAIT: pRefData->m_hCursor = (WXHCURSOR) ::WinQuerySysPointer( HWND_DESKTOP ,(ULONG)SPTR_WAIT @@ -219,10 +207,10 @@ wxCursor::wxCursor( break; case wxCURSOR_NO_ENTRY: - pRefData->m_hCursor = (WXHCURSOR) ::WinLoadPointer( HWND_DESKTOP - ,0 - ,(ULONG)wxCURSOR_NO_ENTRY - ); + pRefData->m_hCursor = (WXHCURSOR) ::WinQuerySysPointer( HWND_DESKTOP + ,(ULONG)SPTR_ILLEGAL + ,FALSE + ); break; case wxCURSOR_LEFT_BUTTON: @@ -253,13 +241,6 @@ wxCursor::wxCursor( ); break; - case wxCURSOR_WATCH: - pRefData->m_hCursor = (WXHCURSOR) ::WinLoadPointer( HWND_DESKTOP - ,0 - ,(ULONG)wxCURSOR_WATCH - ); - break; - case wxCURSOR_SPRAYCAN: pRefData->m_hCursor = (WXHCURSOR) ::WinLoadPointer( HWND_DESKTOP ,0 @@ -310,6 +291,10 @@ wxCursor::wxCursor( ); break; } + // + // No need to destroy the stock cursors + // + ((wxCursorRefData *)m_refData)->m_bDestroyCursor = false; } // end of wxCursor::wxCursor // Global cursor setting @@ -325,4 +310,3 @@ void wxSetCursor(const wxCursor& cursor) (*g_globalCursor) = cursor; } } -