]> git.saurik.com Git - wxWidgets.git/blob - src/mac/carbon/settings.cpp
Use fallback when passing -1 for point size (as allowed by other ports)
[wxWidgets.git] / src / mac / carbon / settings.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/mac/carbon/settings.cpp
3 // Purpose: wxSettings
4 // Author: Stefan Csomor
5 // Modified by:
6 // Created: 1998-01-01
7 // RCS-ID: $Id$
8 // Copyright: (c) Stefan Csomor
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #include "wx/wxprec.h"
13
14 #include "wx/settings.h"
15
16 #ifndef WX_PRECOMP
17 #include "wx/utils.h"
18 #include "wx/gdicmn.h"
19 #endif
20
21 #include "wx/mac/uma.h"
22
23 // ----------------------------------------------------------------------------
24 // wxSystemSettingsNative
25 // ----------------------------------------------------------------------------
26
27 // ----------------------------------------------------------------------------
28 // colours
29 // ----------------------------------------------------------------------------
30
31 wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
32 {
33 wxColour resultColor;
34 ThemeBrush colorBrushID;
35
36 switch ( index )
37 {
38 case wxSYS_COLOUR_WINDOW:
39 resultColor = *wxWHITE ;
40 break ;
41 case wxSYS_COLOUR_SCROLLBAR :
42 case wxSYS_COLOUR_BACKGROUND:
43 case wxSYS_COLOUR_ACTIVECAPTION:
44 case wxSYS_COLOUR_INACTIVECAPTION:
45 case wxSYS_COLOUR_MENU:
46 case wxSYS_COLOUR_WINDOWFRAME:
47 case wxSYS_COLOUR_ACTIVEBORDER:
48 case wxSYS_COLOUR_INACTIVEBORDER:
49 case wxSYS_COLOUR_BTNFACE:
50 case wxSYS_COLOUR_MENUBAR:
51 resultColor = wxColor( 0xDD, 0xDD, 0xDD );
52 break ;
53
54 case wxSYS_COLOUR_LISTBOX :
55 resultColor = *wxWHITE ;
56 break ;
57
58 case wxSYS_COLOUR_BTNSHADOW:
59 resultColor = wxColor( 0xBE, 0xBE, 0xBE );
60 break ;
61
62 case wxSYS_COLOUR_BTNTEXT:
63 case wxSYS_COLOUR_MENUTEXT:
64 case wxSYS_COLOUR_WINDOWTEXT:
65 case wxSYS_COLOUR_CAPTIONTEXT:
66 case wxSYS_COLOUR_INFOTEXT:
67 case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
68 resultColor = *wxBLACK;
69 break ;
70
71 case wxSYS_COLOUR_HIGHLIGHT:
72 {
73 #if 0
74 // NB: enable this case as desired
75 colorBrushID = kThemeBrushAlternatePrimaryHighlightColor;
76 #else
77 colorBrushID = kThemeBrushPrimaryHighlightColor;
78 #endif
79 resultColor = wxColor( wxMacCreateCGColorFromHITheme(colorBrushID) );
80 }
81 break ;
82
83 case wxSYS_COLOUR_BTNHIGHLIGHT:
84 case wxSYS_COLOUR_GRAYTEXT:
85 resultColor = wxColor( 0xCC, 0xCC, 0xCC );
86 break ;
87
88 case wxSYS_COLOUR_3DDKSHADOW:
89 resultColor = wxColor( 0x44, 0x44, 0x44 );
90 break ;
91
92 case wxSYS_COLOUR_3DLIGHT:
93 resultColor = wxColor( 0xCC, 0xCC, 0xCC );
94 break ;
95
96 case wxSYS_COLOUR_HIGHLIGHTTEXT :
97 #if 0
98 // NB: enable this case as desired
99 resultColor = *wxWHITE ;
100 #else
101 {
102 wxColour highlightcolor( wxMacCreateCGColorFromHITheme(kThemeBrushPrimaryHighlightColor) );
103 if ((highlightcolor.Red() + highlightcolor.Green() + highlightcolor.Blue() ) == 0)
104 resultColor = *wxWHITE ;
105 else
106 resultColor = *wxBLACK ;
107 }
108 #endif
109 break ;
110
111 case wxSYS_COLOUR_INFOBK :
112 // we don't have a way to detect tooltip color, so use the
113 // standard value used at least on 10.4:
114 resultColor = wxColour( 0xFF, 0xFF, 0xD3 ) ;
115 break ;
116 case wxSYS_COLOUR_APPWORKSPACE:
117 resultColor = wxColor( 0x80, 0x80, 0x80 ); ;
118 break ;
119
120 case wxSYS_COLOUR_HOTLIGHT:
121 case wxSYS_COLOUR_GRADIENTACTIVECAPTION:
122 case wxSYS_COLOUR_GRADIENTINACTIVECAPTION:
123 case wxSYS_COLOUR_MENUHILIGHT:
124 // TODO:
125 resultColor = *wxBLACK;
126 break ;
127
128 // case wxSYS_COLOUR_MAX:
129 default:
130 resultColor = *wxWHITE;
131 // wxCHECK_MSG( index >= wxSYS_COLOUR_MAX, false, _T("unknown system colour index") );
132 break ;
133 }
134
135 return resultColor;
136 }
137
138 // ----------------------------------------------------------------------------
139 // fonts
140 // ----------------------------------------------------------------------------
141
142 wxFont wxSystemSettingsNative::GetFont(wxSystemFont index)
143 {
144 switch (index)
145 {
146 case wxSYS_ANSI_VAR_FONT :
147 case wxSYS_SYSTEM_FONT :
148 case wxSYS_DEVICE_DEFAULT_FONT :
149 case wxSYS_DEFAULT_GUI_FONT :
150 return *wxSMALL_FONT ;
151 break ;
152
153 default :
154 break ;
155 }
156
157 return *wxNORMAL_FONT;
158 }
159
160 // ----------------------------------------------------------------------------
161 // system metrics/features
162 // ----------------------------------------------------------------------------
163
164 // Get a system metric, e.g. scrollbar size
165 int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(win))
166 {
167 int value;
168
169 switch ( index )
170 {
171 case wxSYS_MOUSE_BUTTONS:
172 // we emulate a two button mouse (ctrl + click = right button)
173 return 2;
174
175 // TODO case wxSYS_BORDER_X:
176 // TODO case wxSYS_BORDER_Y:
177 // TODO case wxSYS_CURSOR_X:
178 // TODO case wxSYS_CURSOR_Y:
179 // TODO case wxSYS_DCLICK_X:
180 // TODO case wxSYS_DCLICK_Y:
181 // TODO case wxSYS_DRAG_X:
182 // TODO case wxSYS_DRAG_Y:
183 // TODO case wxSYS_EDGE_X:
184 // TODO case wxSYS_EDGE_Y:
185
186 case wxSYS_HSCROLL_ARROW_X:
187 case wxSYS_HSCROLL_ARROW_Y:
188 case wxSYS_HTHUMB_X:
189 return 16;
190
191 // TODO case wxSYS_ICON_X:
192 // TODO case wxSYS_ICON_Y:
193 // TODO case wxSYS_ICONSPACING_X:
194 // TODO case wxSYS_ICONSPACING_Y:
195 // TODO case wxSYS_WINDOWMIN_X:
196 // TODO case wxSYS_WINDOWMIN_Y:
197
198 case wxSYS_SCREEN_X:
199 wxDisplaySize( &value, NULL );
200 return value;
201
202 case wxSYS_SCREEN_Y:
203 wxDisplaySize( NULL, &value );
204 return value;
205
206 // TODO case wxSYS_FRAMESIZE_X:
207 // TODO case wxSYS_FRAMESIZE_Y:
208 // TODO case wxSYS_SMALLICON_X:
209 // TODO case wxSYS_SMALLICON_Y:
210
211 case wxSYS_HSCROLL_Y:
212 case wxSYS_VSCROLL_X:
213 case wxSYS_VSCROLL_ARROW_X:
214 case wxSYS_VSCROLL_ARROW_Y:
215 case wxSYS_VTHUMB_Y:
216 return 16;
217
218 case wxSYS_PENWINDOWS_PRESENT:
219 return 0;
220
221 case wxSYS_SWAP_BUTTONS:
222 return 0;
223
224 // TODO: case wxSYS_CAPTION_Y:
225 // TODO: case wxSYS_MENU_Y:
226 // TODO: case wxSYS_NETWORK_PRESENT:
227 // TODO: case wxSYS_SHOW_SOUNDS:
228
229 case wxSYS_DCLICK_MSEC:
230 #ifdef __LP64__
231 // default on mac is 30 ticks, we shouldn't really use wxSYS_DCLICK_MSEC anyway
232 // but rather rely on the 'click-count' by the system delivered in a mouse event
233 return 500;
234 #else
235 return (int)(GetDblTime() * 1000. / 60.);
236 #endif
237 default:
238 // unsupported metric
239 break;
240 }
241
242 return -1;
243 }
244
245 bool wxSystemSettingsNative::HasFeature(wxSystemFeature index)
246 {
247 switch (index)
248 {
249 case wxSYS_CAN_ICONIZE_FRAME:
250 case wxSYS_CAN_DRAW_FRAME_DECORATIONS:
251 return true;
252
253 default:
254 return false;
255 }
256 }