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