1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/cursor.h
3 // Purpose:     wxCursor base header
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:
7 // Copyright:   (c) Julian Smart
8 // RCS-ID:      $Id: cursor.h 40865 2006-08-27 09:42:42Z VS $
9 // Licence:     wxWindows Licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_CURSOR_H_BASE_
13 #define _WX_CURSOR_H_BASE_
14 
15 #include "wx/defs.h"
16 
17 #if defined(__WXPALMOS__)
18     #include "wx/palmos/cursor.h"
19 #elif defined(__WXMSW__)
20     #include "wx/msw/cursor.h"
21 #elif defined(__WXMOTIF__)
22     #include "wx/motif/cursor.h"
23 #elif defined(__WXGTK20__)
24     #include "wx/gtk/cursor.h"
25 #elif defined(__WXGTK__)
26     #include "wx/gtk1/cursor.h"
27 #elif defined(__WXX11__)
28     #include "wx/x11/cursor.h"
29 #elif defined(__WXMGL__)
30     #include "wx/mgl/cursor.h"
31 #elif defined(__WXDFB__)
32     #include "wx/dfb/cursor.h"
33 #elif defined(__WXMAC__)
34     #include "wx/mac/cursor.h"
35 #elif defined(__WXCOCOA__)
36     #include "wx/cocoa/cursor.h"
37 #elif defined(__WXPM__)
38     #include "wx/os2/cursor.h"
39 #endif
40 
41 #include "wx/utils.h"
42 
43 /* This is a small class which can be used by all ports
44    to temporarily suspend the busy cursor. Useful in modal
45    dialogs.
46 
47    Actually that is not (any longer) quite true..  currently it is
48    only used in wxGTK Dialog::ShowModal() and now uses static
49    wxBusyCursor methods that are only implemented for wxGTK so far.
50    The BusyCursor handling code should probably be implemented in
51    common code somewhere instead of the separate implementations we
52    currently have.  Also the name BusyCursorSuspender is a little
53    misleading since it doesn't actually suspend the BusyCursor, just
54    masks one that is already showing.
55    If another call to wxBeginBusyCursor is made while this is active
56    the Busy Cursor will again be shown.  But at least now it doesn't
57    interfere with the state of wxIsBusy() -- RL
58 
59 */
60 class wxBusyCursorSuspender
61 {
62 public:
wxBusyCursorSuspender()63     wxBusyCursorSuspender()
64     {
65         if( wxIsBusy() )
66         {
67             wxSetCursor( wxBusyCursor::GetStoredCursor() );
68         }
69     }
~wxBusyCursorSuspender()70     ~wxBusyCursorSuspender()
71     {
72         if( wxIsBusy() )
73         {
74             wxSetCursor( wxBusyCursor::GetBusyCursor() );
75         }
76     }
77 };
78 #endif
79     // _WX_CURSOR_H_BASE_
80