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