X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eebe401675d1c558516d20506a4e43cccb36d182..732a176cf3cd4e9c1ff2383b097895dabb427749:/include/wx/cursor.h diff --git a/include/wx/cursor.h b/include/wx/cursor.h index f163125fa6..66d8899419 100644 --- a/include/wx/cursor.h +++ b/include/wx/cursor.h @@ -1,43 +1,108 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/cursor.h +// Purpose: wxCursor base header +// Author: Julian Smart +// Modified by: +// Created: +// Copyright: (c) Julian Smart +// RCS-ID: $Id$ +// Licence: wxWindows Licence +///////////////////////////////////////////////////////////////////////////// + #ifndef _WX_CURSOR_H_BASE_ #define _WX_CURSOR_H_BASE_ +#include "wx/defs.h" + +/* + wxCursor classes should have the following public API: + +class WXDLLIMPEXP_CORE wxCursor : public wxGDIObject +{ +public: + wxCursor(); + wxCursor(const wxImage& image); + wxCursor(const wxString& name, + wxBitmapType type = wxCURSOR_DEFAULT_TYPE, + int hotSpotX = 0, int hotSpotY = 0); + wxCursor(wxStockCursor id) { InitFromStock(id); } +#if WXWIN_COMPATIBILITY_2_8 + wxCursor(int id) { InitFromStock((wxStockCursor)id); } +#endif + virtual ~wxCursor(); +}; + +*/ + #if defined(__WXMSW__) -#include "wx/msw/cursor.h" + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_CUR_RESOURCE + #include "wx/msw/cursor.h" #elif defined(__WXMOTIF__) -#include "wx/motif/cursor.h" + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_XBM + #include "wx/motif/cursor.h" +#elif defined(__WXGTK20__) + #ifdef __WINDOWS__ + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_CUR_RESOURCE + #else + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_XPM + #endif + #include "wx/gtk/cursor.h" #elif defined(__WXGTK__) -#include "wx/gtk/cursor.h" -#elif defined(__WXQT__) -#include "wx/qt/cursor.h" + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_XPM + #include "wx/gtk1/cursor.h" +#elif defined(__WXX11__) + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_XPM + #include "wx/x11/cursor.h" +#elif defined(__WXDFB__) + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_CUR_RESOURCE + #include "wx/dfb/cursor.h" #elif defined(__WXMAC__) -#include "wx/mac/cursor.h" + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_MACCURSOR_RESOURCE + #include "wx/osx/cursor.h" +#elif defined(__WXCOCOA__) + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_MACCURSOR_RESOURCE + #include "wx/cocoa/cursor.h" #elif defined(__WXPM__) -#include "wx/os2/cursor.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/cursor.h" + #define wxCURSOR_DEFAULT_TYPE wxBITMAP_TYPE_CUR_RESOURCE + #include "wx/os2/cursor.h" #endif #include "wx/utils.h" + /* This is a small class which can be used by all ports to temporarily suspend the busy cursor. Useful in modal dialogs. + + Actually that is not (any longer) quite true.. currently it is + only used in wxGTK Dialog::ShowModal() and now uses static + wxBusyCursor methods that are only implemented for wxGTK so far. + The BusyCursor handling code should probably be implemented in + common code somewhere instead of the separate implementations we + currently have. Also the name BusyCursorSuspender is a little + misleading since it doesn't actually suspend the BusyCursor, just + masks one that is already showing. + If another call to wxBeginBusyCursor is made while this is active + the Busy Cursor will again be shown. But at least now it doesn't + interfere with the state of wxIsBusy() -- RL + */ class wxBusyCursorSuspender { public: - wxBusyCursorSuspender() - { - m_wasBusy = wxIsBusy(); - if(m_wasBusy) - wxEndBusyCursor(); - } - ~wxBusyCursorSuspender() - { - if(m_wasBusy) - wxBeginBusyCursor(); - } - private: - bool m_wasBusy; + wxBusyCursorSuspender() + { + if( wxIsBusy() ) + { + wxSetCursor( wxBusyCursor::GetStoredCursor() ); + } + } + ~wxBusyCursorSuspender() + { + if( wxIsBusy() ) + { + wxSetCursor( wxBusyCursor::GetBusyCursor() ); + } + } }; #endif // _WX_CURSOR_H_BASE_