]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/gtk/cursor.cpp
correct a bug in the MSW code using wxMask
[wxWidgets.git] / src / gtk / cursor.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: cursor.cpp
3// Purpose:
4// Author: Robert Roebling
5// Id: $Id$
6// Copyright: (c) 1998 Robert Roebling
7// Licence: wxWindows licence
8/////////////////////////////////////////////////////////////////////////////
9
10
11#ifdef __GNUG__
12#pragma implementation "cursor.h"
13#endif
14
15#include "wx/cursor.h"
16
17//-----------------------------------------------------------------------------
18// wxCursor
19//-----------------------------------------------------------------------------
20
21class wxCursorRefData: public wxObjectRefData
22{
23 public:
24
25 wxCursorRefData();
26 ~wxCursorRefData();
27
28 GdkCursor *m_cursor;
29};
30
31wxCursorRefData::wxCursorRefData()
32{
33 m_cursor = (GdkCursor *) NULL;
34}
35
36wxCursorRefData::~wxCursorRefData()
37{
38 if (m_cursor) gdk_cursor_destroy( m_cursor );
39}
40
41//-----------------------------------------------------------------------------
42
43#define M_CURSORDATA ((wxCursorRefData *)m_refData)
44
45IMPLEMENT_DYNAMIC_CLASS(wxCursor,wxObject)
46
47wxCursor::wxCursor()
48{
49}
50
51wxCursor::wxCursor( int cursorId )
52{
53 m_refData = new wxCursorRefData();
54
55 GdkCursorType gdk_cur = GDK_LEFT_PTR;
56 switch (cursorId)
57 {
58 case wxCURSOR_HAND: gdk_cur = GDK_HAND1; break;
59 case wxCURSOR_CROSS: gdk_cur = GDK_CROSSHAIR; break;
60 case wxCURSOR_SIZEWE: gdk_cur = GDK_SB_H_DOUBLE_ARROW; break;
61 case wxCURSOR_SIZENS: gdk_cur = GDK_SB_V_DOUBLE_ARROW; break;
62 case wxCURSOR_WAIT: gdk_cur = GDK_WATCH; break;
63 case wxCURSOR_WATCH: gdk_cur = GDK_WATCH; break;
64 case wxCURSOR_SIZING: gdk_cur = GDK_SIZING; break;
65 case wxCURSOR_SPRAYCAN: gdk_cur = GDK_SPRAYCAN; break;
66 case wxCURSOR_IBEAM: gdk_cur = GDK_XTERM; break;
67 case wxCURSOR_PENCIL: gdk_cur = GDK_PENCIL; break;
68 case wxCURSOR_NO_ENTRY: gdk_cur = GDK_PIRATE; break;
69 }
70
71 M_CURSORDATA->m_cursor = gdk_cursor_new( gdk_cur );
72
73/*
74 do that yourself
75
76 wxCURSOR_BULLSEYE,
77 wxCURSOR_CHAR,
78 wxCURSOR_LEFT_BUTTON,
79 wxCURSOR_MAGNIFIER,
80 wxCURSOR_MIDDLE_BUTTON,
81 wxCURSOR_NO_ENTRY,
82 wxCURSOR_PAINT_BRUSH,
83 wxCURSOR_POINT_LEFT,
84 wxCURSOR_POINT_RIGHT,
85 wxCURSOR_QUESTION_ARROW,
86 wxCURSOR_RIGHT_BUTTON,
87 wxCURSOR_SIZENESW,
88 wxCURSOR_SIZENS,
89 wxCURSOR_SIZENWSE,
90 wxCURSOR_SIZEWE,
91 wxCURSOR_BLANK
92,
93 wxCURSOR_CROSS_REVERSE,
94 wxCURSOR_DOUBLE_ARROW,
95 wxCURSOR_BASED_ARROW_UP,
96 wxCURSOR_BASED_ARROW_DOWN
97*/
98
99}
100
101wxCursor::wxCursor( const wxCursor &cursor )
102{
103 Ref( cursor );
104}
105
106wxCursor::~wxCursor()
107{
108}
109
110wxCursor& wxCursor::operator = ( const wxCursor& cursor )
111{
112 if (*this == cursor) return (*this);
113 Ref( cursor );
114 return *this;
115}
116
117bool wxCursor::operator == ( const wxCursor& cursor ) const
118{
119 return m_refData == cursor.m_refData;
120}
121
122bool wxCursor::operator != ( const wxCursor& cursor ) const
123{
124 return m_refData != cursor.m_refData;
125}
126
127bool wxCursor::Ok() const
128{
129 return (m_refData != NULL);
130}
131
132GdkCursor *wxCursor::GetCursor() const
133{
134 return M_CURSORDATA->m_cursor;
135}
136
137//-----------------------------------------------------------------------------
138// busy cursor routines
139//-----------------------------------------------------------------------------
140
141bool g_isBusy = FALSE;
142
143void wxEndBusyCursor()
144{
145 g_isBusy = FALSE;
146}
147
148void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) )
149{
150 g_isBusy = TRUE;
151}
152
153bool wxIsBusy()
154{
155 return g_isBusy;
156}
157
158void wxSetCursor( const wxCursor& cursor )
159{
160 extern wxCursor *g_globalCursor;
161 if (g_globalCursor) (*g_globalCursor) = cursor;
162
163 if (cursor.Ok()) {}
164}
165
166