Vadim Zeitlin pushed to branch master at wxWidgets / wxWidgets
Commits:
f8219ee8 by Stefan Csomor at 2025-10-05T14:55:36+02:00
OSX iOS support appearance colours (#25853)
* bringing cocoa and ios implementations closer, adding appearance to ios colours
* using native appearance colors in src/osx/iphone/
settings.mm
* add common native type WXColor into wx space, resolving to either NSColor or UIColor
- - - - -
18a60c98 by Stefan Csomor at 2025-10-05T14:56:22+02:00
Drawing Sample adaptions for building under iOS (#25855)
* bracket code in drawing sample so that iOS can build it too, adding a simple keyboard navigation for iphone
- - - - -
24 changed files:
- Makefile.in
- build/bakefiles/files.bkl
- build/cmake/files.cmake
- build/files
- build/osx/fix_xcode_ids.py
- build/osx/wxcocoa.xcodeproj/project.pbxproj
- build/osx/wxiphone.xcodeproj/project.pbxproj
- include/wx/defs.h
- include/wx/osx/cocoa/private/markuptoattr.h
- include/wx/osx/core/colour.h
- include/wx/osx/core/private.h
- samples/drawing/drawing.cpp
- src/osx/carbon/
colordlgosx.mm
- src/osx/carbon/
fontdlgosx.mm
- src/osx/carbon/
utilscocoa.mm
- src/osx/cocoa/
colour.mm
- src/osx/cocoa/
dataview.mm
- src/osx/cocoa/
datetimectrl.mm
- src/osx/cocoa/
nonownedwnd.mm
- src/osx/cocoa/
textctrl.mm
- src/osx/cocoa/
window.mm
- src/osx/core/colour.cpp
- + src/osx/iphone/
colour.mm
- src/osx/iphone/
settings.mm
Changes:
=====================================
Makefile.in
=====================================
@@ -5606,6 +5606,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS = \
monodll_iphone_anybutton.o \
monodll_iphone_button.o \
monodll_iphone_checkbox.o \
+ monodll_iphone_colour.o \
monodll_iphone_dialog.o \
monodll_iphone_evtloop.o \
monodll_iphone_gauge.o \
@@ -7384,6 +7385,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_1 = \
monolib_iphone_anybutton.o \
monolib_iphone_button.o \
monolib_iphone_checkbox.o \
+ monolib_iphone_colour.o \
monolib_iphone_dialog.o \
monolib_iphone_evtloop.o \
monolib_iphone_gauge.o \
@@ -9308,6 +9310,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_2 = \
coredll_iphone_anybutton.o \
coredll_iphone_button.o \
coredll_iphone_checkbox.o \
+ coredll_iphone_colour.o \
coredll_iphone_dialog.o \
coredll_iphone_evtloop.o \
coredll_iphone_gauge.o \
@@ -10814,6 +10817,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_3 = \
corelib_iphone_anybutton.o \
corelib_iphone_button.o \
corelib_iphone_checkbox.o \
+ corelib_iphone_colour.o \
corelib_iphone_dialog.o \
corelib_iphone_evtloop.o \
corelib_iphone_gauge.o \
@@ -16118,6 +16122,9 @@ monodll_iphone_button.o: $(srcdir)/src/osx/iphone/
button.mm $(MONODLL_ODEP)
monodll_iphone_checkbox.o: $(srcdir)/src/osx/iphone/
checkbox.mm $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
checkbox.mm
+monodll_iphone_colour.o: $(srcdir)/src/osx/iphone/
colour.mm $(MONODLL_ODEP)
+ $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
colour.mm
+
monodll_iphone_dialog.o: $(srcdir)/src/osx/iphone/
dialog.mm $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
dialog.mm
@@ -20888,6 +20895,9 @@ monolib_iphone_button.o: $(srcdir)/src/osx/iphone/
button.mm $(MONOLIB_ODEP)
monolib_iphone_checkbox.o: $(srcdir)/src/osx/iphone/
checkbox.mm $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
checkbox.mm
+monolib_iphone_colour.o: $(srcdir)/src/osx/iphone/
colour.mm $(MONOLIB_ODEP)
+ $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
colour.mm
+
monolib_iphone_dialog.o: $(srcdir)/src/osx/iphone/
dialog.mm $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
dialog.mm
@@ -26327,6 +26337,9 @@ coredll_iphone_button.o: $(srcdir)/src/osx/iphone/
button.mm $(COREDLL_ODEP)
coredll_iphone_checkbox.o: $(srcdir)/src/osx/iphone/
checkbox.mm $(COREDLL_ODEP)
$(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
checkbox.mm
+coredll_iphone_colour.o: $(srcdir)/src/osx/iphone/
colour.mm $(COREDLL_ODEP)
+ $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
colour.mm
+
coredll_iphone_dialog.o: $(srcdir)/src/osx/iphone/
dialog.mm $(COREDLL_ODEP)
$(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
dialog.mm
@@ -30068,6 +30081,9 @@ corelib_iphone_button.o: $(srcdir)/src/osx/iphone/
button.mm $(CORELIB_ODEP)
corelib_iphone_checkbox.o: $(srcdir)/src/osx/iphone/
checkbox.mm $(CORELIB_ODEP)
$(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
checkbox.mm
+corelib_iphone_colour.o: $(srcdir)/src/osx/iphone/
colour.mm $(CORELIB_ODEP)
+ $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
colour.mm
+
corelib_iphone_dialog.o: $(srcdir)/src/osx/iphone/
dialog.mm $(CORELIB_ODEP)
$(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/
dialog.mm
=====================================
build/bakefiles/files.bkl
=====================================
@@ -2377,6 +2377,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/osx/iphone/
anybutton.mm
src/osx/iphone/
button.mm
src/osx/iphone/
checkbox.mm
+ src/osx/iphone/
colour.mm
src/osx/iphone/
dialog.mm
src/osx/iphone/
evtloop.mm
src/osx/iphone/
gauge.mm
=====================================
build/cmake/files.cmake
=====================================
@@ -2231,6 +2231,7 @@ set(OSX_IPHONE_SRC
src/osx/iphone/
anybutton.mm
src/osx/iphone/
button.mm
src/osx/iphone/
checkbox.mm
+ src/osx/iphone/
colour.mm
src/osx/iphone/
dialog.mm
src/osx/iphone/
evtloop.mm
src/osx/iphone/
gauge.mm
=====================================
build/files
=====================================
@@ -2232,6 +2232,7 @@ OSX_IPHONE_SRC =
src/osx/iphone/
anybutton.mm
src/osx/iphone/
button.mm
src/osx/iphone/
checkbox.mm
+ src/osx/iphone/
colour.mm
src/osx/iphone/
dialog.mm
src/osx/iphone/
evtloop.mm
src/osx/iphone/
gauge.mm
=====================================
build/osx/fix_xcode_ids.py
=====================================
@@ -39,7 +39,7 @@ def insertBuildFileEntry(filePath, fileRefId):
global strIn
print("\tInsert PBXBuildFile for '%s'..." % filePath)
- matchBuildFileSection = re.search("/\* Begin PBXBuildFile section \*/\n", strIn)
+ matchBuildFileSection = re.search(r"/\* Begin PBXBuildFile section \*/\n", strIn)
dirName, fileName = os.path.split(filePath)
fileInSources = fileName + " in Sources"
@@ -58,7 +58,7 @@ def insertFileRefEntry(filePath, id=0):
global strIn
print("\tInsert PBXFileReference for '%s'..." % filePath)
- matchFileRefSection = re.search("/\* Begin PBXFileReference section \*/\n", strIn)
+ matchFileRefSection = re.search(r"/\* Begin PBXFileReference section \*/\n", strIn)
dirName, fileName = os.path.split(filePath)
if id == 0:
id = toUuid(fileName)
@@ -76,7 +76,7 @@ def insertSourcesBuildPhaseEntry(id, fileName, insertBeforeFileName, startSearch
global strIn
print("\tInsert PBXSourcesBuildPhase for '%s'..." % fileName)
- matchBuildPhase = re.compile(".+ /\* " + insertBeforeFileName + " in Sources \*/,") \
+ matchBuildPhase = re.compile(r".+ /\* " + insertBeforeFileName + r" in Sources \*/,") \
.search(strIn, startSearchPos)
insert = "\t\t\t\t%s /* %s in Sources */,\n" % (id, fileName)
strIn = strIn[:matchBuildPhase.start()] \
@@ -174,7 +174,7 @@ def processContent():
global strIn
global idDict
- rc = re.compile(".+ (?P<path1>[\w/.]+(\.cpp|\.cxx|\.c))(?P<path2>\w+/[\w/.]+).+")
+ rc = re.compile(r".+ (?P<path1>[\w/.]+(\.cpp|\.cxx|\.c))(?P<path2>\w+/[\w/.]+).+")
matchLine = rc.search(strIn)
while matchLine:
line = matchLine.group(0)
@@ -221,10 +221,10 @@ def processContent():
startSearchIndex = insertSourcesBuildPhaseEntry(buildPhaseId[i], fileName1, fileName2, startSearchIndex)
# insert both paths in the group they belong to
- matchGroupStart = re.search("/\* %s \*/ = {" % dir2, strIn)
+ matchGroupStart = re.search(r"/\* %s \*/ = {" % dir2, strIn)
endGroupIndex = strIn.find("};", matchGroupStart.start())
- for matchGroupLine in re.compile(".+" + idMask + " /\* (.+) \*/,").finditer(strIn, matchGroupStart.start(),
+ for matchGroupLine in re.compile(".+" + idMask + r" /\* (.+) \*/,").finditer(strIn, matchGroupStart.start(),
endGroupIndex):
if matchGroupLine.group(1) > fileName1:
print("\tInsert paths in PBXGroup '%s', just before '%s'..." % (dir2, matchGroupLine.group(1)))
@@ -266,7 +266,7 @@ def processContent():
# 890123456789ABCDEF012345 /* Name */ = {
# Capture the first comment between /* and */ (file/section name) as a group
- rc = re.compile("\s+(" + idMask + ") /\* (.+) \*/ = {.*$", re.MULTILINE)
+ rc = re.compile(r"\s+(" + idMask + r") /\* (.+) \*/ = {.*$", re.MULTILINE)
dict = rc.findall(strIn)
for s in dict:
=====================================
build/osx/wxcocoa.xcodeproj/project.pbxproj
=====================================
The diff for this file was not included because it is too large.
=====================================
build/osx/wxiphone.xcodeproj/project.pbxproj
=====================================
The diff for this file was not included because it is too large.
=====================================
include/wx/defs.h
=====================================
@@ -2803,6 +2803,7 @@ DECLARE_WXCOCOA_OBJC_CLASS(WKWebView);
typedef WX_NSWindow WXWindow;
typedef WX_NSEvent WXEvent;
typedef WX_NSView WXWidget;
+typedef WX_NSColor WXColor;
typedef WX_NSImage WXImage;
typedef WX_NSMenu WXHMENU;
typedef WX_NSOpenGLPixelFormat WXGLPixelFormat;
@@ -2812,6 +2813,7 @@ typedef WX_WKWebView OSXWebViewPtr;
#elif wxOSX_USE_IPHONE
+DECLARE_WXCOCOA_OBJC_CLASS(UIColor);
DECLARE_WXCOCOA_OBJC_CLASS(UIMenu);
DECLARE_WXCOCOA_OBJC_CLASS(UIMenuItem);
DECLARE_WXCOCOA_OBJC_CLASS(UIWindow);
@@ -2829,6 +2831,7 @@ DECLARE_WXCOCOA_OBJC_CLASS(UIPasteboard);
typedef WX_UIWindow WXWindow;
typedef WX_UIEvent WXEvent;
typedef WX_UIView WXWidget;
+typedef WX_UIColor WXColor;
typedef WX_UIImage WXImage;
typedef WX_UIMenu WXHMENU;
typedef WX_EAGLContext WXGLContext;
=====================================
include/wx/osx/cocoa/private/markuptoattr.h
=====================================
@@ -115,14 +115,14 @@ public:
if ( attr.foreground.IsOk() )
{
[m_attrString addAttribute:NSForegroundColorAttributeName
- value:attr.foreground.OSXGetNSColor()
+ value:attr.foreground.OSXGetWXColor()
range:range];
}
if ( attr.background.IsOk() )
{
[m_attrString addAttribute:NSBackgroundColorAttributeName
- value:attr.background.OSXGetNSColor()
+ value:attr.background.OSXGetWXColor()
range:range];
}
}
=====================================
include/wx/osx/core/colour.h
=====================================
@@ -58,20 +58,33 @@ public:
void GetRGBColor( RGBColor *col ) const;
#endif
+ // This ctor does not take ownership of the color.
+ explicit wxColour(WXColor color);
+
+ WXColor OSXGetWXColor() const;
+ WXImage OSXGetWXPatternImage() const;
+#if WXWIN_COMPATIBILITY_3_2
#if wxOSX_USE_COCOA
// NSColor Cocoa
// -------------
- // This ctor does not take ownership of the color.
- explicit wxColour(WX_NSColor color);
- WX_NSColor OSXGetNSColor() const;
- WX_NSImage OSXGetNSPatternImage() const;
+ WX_NSColor OSXGetNSColor() const
+ {
+ return OSXGetWXColor();
+ }
+ WX_NSImage OSXGetNSPatternImage() const
+ {
+ return OSXGetWXPatternImage();
+ }
+#endif
#endif
-protected :
virtual void
InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a) override;
+ virtual void
+ InitRGBA(float r, float g, float b, float a);
+
virtual wxGDIRefData *CreateGDIRefData() const override;
wxNODISCARD virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const override;
@@ -98,9 +111,20 @@ public:
wxNODISCARD virtual wxColourRefData* Clone() const = 0;
+ virtual WXColor GetWXColor() const = 0;
+ virtual WXImage GetWXPatternImage() const = 0;
+
+#if WXWIN_COMPATIBILITY_3_2
#if wxOSX_USE_COCOA
- virtual WX_NSColor GetNSColor() const;
- virtual WX_NSImage GetNSPatternImage() const;
+ virtual WX_NSColor GetNSColor() const
+ {
+ return GetWXColor();
+ }
+ virtual WX_NSImage GetNSPatternImage() const
+ {
+ return GetWXPatternImage();
+ }
+#endif
#endif
};
=====================================
include/wx/osx/core/private.h
=====================================
@@ -124,6 +124,9 @@ WXDLLIMPEXP_CORE double wxOSXGetMainScreenContentScaleFactor();
// UI
+WXColor WXDLLIMPEXP_CORE wxOSXGetWXColorFromCGColor(CGColorRef col);
+WXImage WXDLLIMPEXP_CORE wxOSXGetWXImageFromCGColor(CGColorRef col);
+
CGSize WXDLLIMPEXP_CORE wxOSXGetImageSize(WXImage image);
CGImageRef WXDLLIMPEXP_CORE wxOSXCreateCGImageFromImage( WXImage nsimage, double *scale = nullptr );
CGImageRef WXDLLIMPEXP_CORE wxOSXGetCGImageFromImage( WXImage nsimage, CGRect* r, CGContextRef cg);
=====================================
samples/drawing/drawing.cpp
=====================================
@@ -36,6 +36,7 @@
#include "wx/filename.h"
#include "wx/metafile.h"
#include "wx/settings.h"
+#include "wx/stdpaths.h"
#if wxUSE_SVG
#include "wx/dcsvg.h"
#endif
@@ -273,12 +274,18 @@ public:
void OnBuffer(wxCommandEvent& event);
void OnCopy(wxCommandEvent& event);
+#if wxUSE_FILEDLG
void OnSave(wxCommandEvent& event);
+#endif
void OnShow(wxCommandEvent &event);
void OnMoveMouse(wxCommandEvent &event);
void OnOption(wxCommandEvent &event);
void OnBoundingBox(wxCommandEvent& evt);
void OnBoundingBoxUpdateUI(wxUpdateUIEvent& evt);
+#if defined(__WXOSX__) && wxOSX_USE_IPHONE
+ // for iOS versions with no app menubar
+ void OnKeyDown(wxKeyEvent &event);
+#endif
#if wxUSE_COLOURDLG
wxColour SelectColour();
@@ -461,6 +468,7 @@ bool MyApp::LoadImages()
pathList.Add("..");
pathList.Add("../drawing");
pathList.Add("../../../samples/drawing");
+ pathList.Add(wxStandardPaths::Get().GetResourcesDir());
wxString path = pathList.FindValidPath("pat4.bmp");
if ( !path )
@@ -1874,7 +1882,8 @@ void MyCanvas::DrawSystemColours(wxDC& dc)
{ wxSYS_COLOUR_SCROLLBAR, "wxSYS_COLOUR_SCROLLBAR" },
{ wxSYS_COLOUR_WINDOWFRAME, "wxSYS_COLOUR_WINDOWFRAME" },
{ wxSYS_COLOUR_WINDOWTEXT, "wxSYS_COLOUR_WINDOWTEXT" },
- { wxSYS_COLOUR_WINDOW, "wxSYS_COLOUR_WINDOW" }
+ { wxSYS_COLOUR_WINDOW, "wxSYS_COLOUR_WINDOW" },
+ { wxSYS_COLOUR_GRIDLINES, "wxSYS_COLOUR_GRIDLINES" }
};
for (int i = 0; i < wxSYS_COLOUR_MAX; i++)
@@ -2376,6 +2385,7 @@ void MyCanvas::OnMouseCaptureLost(wxMouseCaptureLostEvent& WXUNUSED(event))
void MyCanvas::UseGraphicRenderer(wxGraphicsRenderer* renderer)
{
m_renderer = renderer;
+ #if wxUSE_STATUSBAR
if (renderer)
{
int major, minor, micro;
@@ -2388,6 +2398,7 @@ void MyCanvas::UseGraphicRenderer(wxGraphicsRenderer* renderer)
{
m_owner->SetStatusText(wxEmptyString, 1);
}
+#endif
Refresh();
}
@@ -2510,7 +2521,9 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU (File_Buffer, MyFrame::OnBuffer)
EVT_MENU (File_Copy, MyFrame::OnCopy)
+#if wxUSE_FILEDLG
EVT_MENU (File_Save, MyFrame::OnSave)
+#endif
EVT_MENU (File_BBox, MyFrame::OnBoundingBox)
EVT_UPDATE_UI (File_BBox, MyFrame::OnBoundingBoxUpdateUI)
@@ -2518,6 +2531,10 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(LogicalOrigin_MoveMouse, MyFrame::OnMoveMouse)
EVT_MENU_RANGE(MenuOption_First, MenuOption_Last, MyFrame::OnOption)
+
+#if defined(__WXOSX__) && wxOSX_USE_IPHONE
+ EVT_KEY_DOWN(MyFrame::OnKeyDown)
+#endif
wxEND_EVENT_TABLE()
// frame constructor
@@ -2527,6 +2544,7 @@ MyFrame::MyFrame(const wxString& title)
// set the frame icon
SetIcon(wxICON(sample));
+#if wxUSE_MENUBAR
wxMenu *menuScreen = new wxMenu;
menuScreen->Append(File_ShowDefault, "&Default screen\tF1");
menuScreen->Append(File_ShowText, "&Text screen\tF2");
@@ -2680,6 +2698,7 @@ MyFrame::MyFrame(const wxString& title)
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
+#endif
#if wxUSE_STATUSBAR
CreateStatusBar(2);
@@ -2707,8 +2726,9 @@ MyFrame::MyFrame(const wxString& title)
m_canvas = new MyCanvas( this );
m_canvas->SetScrollbars( 10, 10, 100, 450 );
-
+#ifndef wxOSX_USE_IPHONE
SetSize(FromDIP(wxSize(800, 700)));
+#endif
Center(wxBOTH);
}
@@ -2757,6 +2777,7 @@ void MyFrame::OnCopy(wxCommandEvent& WXUNUSED(event))
#endif
}
+#if wxUSE_FILEDLG
void MyFrame::OnSave(wxCommandEvent& WXUNUSED(event))
{
wxString wildCard = "Bitmap image (*.bmp)|*.bmp;*.BMP";
@@ -2861,6 +2882,7 @@ void MyFrame::OnSave(wxCommandEvent& WXUNUSED(event))
}
}
}
+#endif // wxUSE_FILEDLG
void MyFrame::OnShow(wxCommandEvent& event)
{
@@ -2897,6 +2919,38 @@ void MyFrame::OnMoveMouse(wxCommandEvent& WXUNUSED(event))
m_canvas->WarpPointer(100, 100);
}
+#if defined(__WXOSX__) && wxOSX_USE_IPHONE
+void MyFrame::OnKeyDown(wxKeyEvent& event)
+{
+ int currentPage = m_canvas->GetPage();
+
+ switch ( event.GetKeyCode() )
+ {
+ case WXK_LEFT:
+ currentPage--;
+ if ( currentPage < MenuShow_First )
+ currentPage = MenuShow_Last;
+ break;
+ case WXK_RIGHT:
+ currentPage++;
+ if ( currentPage > MenuShow_Last )
+ currentPage = MenuShow_First;
+ break;
+ default:
+ event.Skip();
+ return;
+ }
+ if ( currentPage == File_ShowAlpha || currentPage == File_ShowGraphics )
+ {
+ if ( !m_canvas->HasRenderer() )
+ m_canvas->UseGraphicRenderer(wxGraphicsRenderer::GetDefaultRenderer());
+ // Disable selecting wxDC, if necessary.
+ }
+
+ m_canvas->ToShow(currentPage);
+}
+#endif
+
void MyFrame::OnOption(wxCommandEvent& event)
{
switch (event.GetId())
=====================================
src/osx/carbon/
colordlgosx.mm
=====================================
@@ -107,7 +107,7 @@ bool wxColourDialog::Create(wxWindow *parent, const wxColourData *data)
[[NSColorPanel sharedColorPanel] setShowsAlpha:m_colourData.GetChooseAlpha() ? YES : NO];
if(m_colourData.GetColour().IsOk())
- [[NSColorPanel sharedColorPanel] setColor:m_colourData.GetColour().OSXGetNSColor()];
+ [[NSColorPanel sharedColorPanel] setColor:m_colourData.GetColour().OSXGetWXColor()];
else
[[NSColorPanel sharedColorPanel] setColor:[NSColor blackColor]];
=====================================
src/osx/carbon/
fontdlgosx.mm
=====================================
@@ -256,7 +256,7 @@ int RunMixedFontDialog(wxFontDialog* dialog)
[[NSFontManager sharedFontManager] setSelectedAttributes:attributes isMultiple:false];
if(fontdata.m_fontColour.IsOk())
- [[NSColorPanel sharedColorPanel] setColor: fontdata.m_fontColour.OSXGetNSColor()];
+ [[NSColorPanel sharedColorPanel] setColor: fontdata.m_fontColour.OSXGetWXColor()];
else
[[NSColorPanel sharedColorPanel] setColor:[NSColor blackColor]];
#endif
=====================================
src/osx/carbon/
utilscocoa.mm
=====================================
@@ -163,6 +163,25 @@ WXWindow wxOSXGetKeyWindow()
// NSImage Utils
// ----------------------------------------------------------------------------
+WXColor wxOSXGetWXColorFromCGColor(CGColorRef col)
+{
+#if wxOSX_USE_COCOA
+ return [NSColor colorWithCGColor:col];
+#elif wxOSX_USE_IPHONE
+ return [UIColor colorWithCGColor:col];
+#else
+ return 0;
+#endif
+}
+
+WXImage wxOSXGetWXImageFromCGColor(CGColorRef /*col*/)
+{
+// CGPatternRef pattern = CGColorGetPattern(col);
+// is the internal pattern, but right now there are no conversion APIs
+
+ return nullptr;
+}
+
#if wxOSX_USE_IPHONE
wxBitmapBundle wxOSXCreateSystemBitmapBundle(const wxString& name, const wxString &client, const wxSize& size)
=====================================
src/osx/cocoa/
colour.mm
=====================================
@@ -17,7 +17,8 @@
class wxNSColorRefData : public wxColourRefData
{
public:
- wxNSColorRefData(WX_NSColor color);
+ wxNSColorRefData(CGFloat r, CGFloat g, CGFloat b, CGFloat a);
+ wxNSColorRefData(WXColor color);
wxNSColorRefData(const wxNSColorRefData& other);
@@ -34,8 +35,8 @@ public:
virtual wxColourRefData* Clone() const override { return new wxNSColorRefData(*this); }
- virtual WX_NSColor GetNSColor() const override;
- virtual WX_NSImage GetNSPatternImage() const override;
+ virtual WXColor GetWXColor() const override;
+ virtual WXImage GetWXPatternImage() const override;
private:
static CGFloat GetCGColorComponent(CGColorRef col, int rgbaIndex);
WX_NSColor m_nsColour;
@@ -43,7 +44,12 @@ private:
wxDECLARE_NO_ASSIGN_CLASS(wxNSColorRefData);
};
-wxNSColorRefData::wxNSColorRefData(WX_NSColor color)
+wxNSColorRefData::wxNSColorRefData(CGFloat r, CGFloat g, CGFloat b, CGFloat a = 1.0)
+{
+ m_nsColour = [[NSColor colorWithRed:r green:g blue:b alpha:a] retain];
+}
+
+wxNSColorRefData::wxNSColorRefData(WXColor color)
{
m_nsColour = [color retain];
}
@@ -58,7 +64,7 @@ wxNSColorRefData::~wxNSColorRefData()
[m_nsColour release];
}
-WX_NSColor wxNSColorRefData::GetNSColor() const
+WX_NSColor wxNSColorRefData::GetWXColor() const
{
return m_nsColour;
}
@@ -161,7 +167,7 @@ CGColorRef wxNSColorRefData::GetCGColor() const
return [m_nsColour CGColor];
}
-WX_NSImage wxNSColorRefData::GetNSPatternImage() const
+WX_NSImage wxNSColorRefData::GetWXPatternImage() const
{
NSColor* colPat = [m_nsColour colorUsingColorSpaceName:NSPatternColorSpace];
if ( colPat )
@@ -176,18 +182,19 @@ WX_NSImage wxNSColorRefData::GetNSPatternImage() const
return nullptr;
}
-WX_NSColor wxColourRefData::GetNSColor() const
+wxGDIRefData* wxColour::CreateGDIRefData() const
{
- wxOSXEffectiveAppearanceSetter helper;
- return [NSColor colorWithCalibratedRed:Red() green:Green() blue:Blue() alpha:Alpha() ];
+ return new wxNSColorRefData(0.0, 0.0, 0.0);
}
-WX_NSImage wxColourRefData::GetNSPatternImage() const
+wxColour::wxColour(WX_NSColor col)
{
- return nullptr;
+ m_refData = new wxNSColorRefData(col);
}
-wxColour::wxColour(WX_NSColor col)
+wxColour::wxColour(CGColorRef col)
{
- m_refData = new wxNSColorRefData(col);
+ m_refData = new wxNSColorRefData([[NSColor colorWithCGColor:col] retain]);
+ // as per contract CGColorRef is not retained
+ CGColorRelease(col);
}
=====================================
src/osx/cocoa/
dataview.mm
=====================================
@@ -2850,7 +2850,7 @@ void wxDataViewRenderer::SetAttr(const wxDataViewItemAttr& attr)
data->SaveOriginalTextColour([(id)cell textColor]);
}
- colText = attr.GetColour().OSXGetNSColor();
+ colText = attr.GetColour().OSXGetWXColor();
}
}
@@ -2863,7 +2863,7 @@ void wxDataViewRenderer::SetAttr(const wxDataViewItemAttr& attr)
if ( !data->GetOriginalBackgroundColour() )
data->SaveOriginalBackgroundColour([(id)cell backgroundColor]);
- colBack = attr.GetBackgroundColour().OSXGetNSColor();
+ colBack = attr.GetBackgroundColour().OSXGetWXColor();
}
}
}
=====================================
src/osx/cocoa/
datetimectrl.mm
=====================================
@@ -138,7 +138,7 @@ public:
{
wxWindow* const wxpeer = GetWXPeer();
if ( wxpeer )
- [nsdatePicker setTextColor: wxpeer->GetForegroundColour().OSXGetNSColor()];
+ [nsdatePicker setTextColor: wxpeer->GetForegroundColour().OSXGetWXColor()];
else
[nsdatePicker setTextColor: [NSColor controlTextColor]];
}
=====================================
src/osx/cocoa/
nonownedwnd.mm
=====================================
@@ -1015,7 +1015,7 @@ bool wxNonOwnedWindowCocoaImpl::SetTransparent(wxByte alpha)
bool wxNonOwnedWindowCocoaImpl::SetBackgroundColour(const wxColour& col )
{
- [m_macWindow setBackgroundColor:col.OSXGetNSColor()];
+ [m_macWindow setBackgroundColor:col.OSXGetWXColor()];
return true;
}
=====================================
src/osx/cocoa/
textctrl.mm
=====================================
@@ -1320,9 +1320,9 @@ void wxNSTextViewControl::SetStyle(long start,
if ( style.HasFont() )
[attrs setValue:style.GetFont().OSXGetNSFont() forKey:NSFontAttributeName];
if ( style.HasBackgroundColour() )
- [attrs setValue:style.GetBackgroundColour().OSXGetNSColor() forKey:NSBackgroundColorAttributeName];
+ [attrs setValue:style.GetBackgroundColour().OSXGetWXColor() forKey:NSBackgroundColorAttributeName];
if ( style.HasTextColour() )
- [attrs setValue:style.GetTextColour().OSXGetNSColor() forKey:NSForegroundColorAttributeName];
+ [attrs setValue:style.GetTextColour().OSXGetWXColor() forKey:NSForegroundColorAttributeName];
if ( style.HasFontUnderlined() )
{
int underlineStyle = NSUnderlineStyleNone;
@@ -1345,7 +1345,7 @@ void wxNSTextViewControl::SetStyle(long start,
wxColour colour = style.GetUnderlineColour();
if ( colour.IsOk() )
{
- [attrs setValue:colour.OSXGetNSColor() forKey:NSUnderlineColorAttributeName];
+ [attrs setValue:colour.OSXGetWXColor() forKey:NSUnderlineColorAttributeName];
}
}
[m_textView setTypingAttributes:attrs];
@@ -1359,10 +1359,10 @@ void wxNSTextViewControl::SetStyle(long start,
[storage addAttribute:NSFontAttributeName value:style.GetFont().OSXGetNSFont() range:range];
if ( style.HasBackgroundColour() )
- [storage addAttribute:NSBackgroundColorAttributeName value:style.GetBackgroundColour().OSXGetNSColor() range:range];
+ [storage addAttribute:NSBackgroundColorAttributeName value:style.GetBackgroundColour().OSXGetWXColor() range:range];
if ( style.HasTextColour() )
- [storage addAttribute:NSForegroundColorAttributeName value:style.GetTextColour().OSXGetNSColor() range:range];
+ [storage addAttribute:NSForegroundColorAttributeName value:style.GetTextColour().OSXGetWXColor() range:range];
if( style.HasFontUnderlined() )
{
@@ -1387,7 +1387,7 @@ void wxNSTextViewControl::SetStyle(long start,
wxColour colour = style.GetUnderlineColour();
if ( colour.IsOk() )
{
- [dict setValue:colour.OSXGetNSColor() forKey:NSUnderlineColorAttributeName];
+ [dict setValue:colour.OSXGetWXColor() forKey:NSUnderlineColorAttributeName];
}
[storage addAttributes:dict range:range];
[dict release];
=====================================
src/osx/cocoa/
window.mm
=====================================
@@ -3530,7 +3530,7 @@ void wxWidgetCocoaImpl::SetBackgroundColour( const wxColour &col )
if ( toplevel == nullptr || toplevel->GetShape().IsEmpty() )
[targetView setBackgroundColor:
- col.IsOk() ? col.OSXGetNSColor() : nil];
+ col.IsOk() ? col.OSXGetWXColor() : nil];
}
}
}
@@ -3594,7 +3594,7 @@ void wxWidgetCocoaImpl::SetLabel( const wxString& title )
if ( col.IsOk() )
{
[attrString addAttribute:NSForegroundColorAttributeName
- value:col.OSXGetNSColor()
+ value:col.OSXGetWXColor()
range:NSMakeRange(0, [attrString length])];
}
@@ -3888,7 +3888,7 @@ void wxWidgetCocoaImpl::SetForegroundColour(const wxColour& col)
if ([targetView respondsToSelector:@selector(setTextColor:)])
{
- [targetView setTextColor: col.IsOk() ? col.OSXGetNSColor() : nil];
+ [targetView setTextColor: col.IsOk() ? col.OSXGetWXColor() : nil];
}
}
=====================================
src/osx/core/colour.cpp
=====================================
@@ -20,6 +20,8 @@
CGColorSpaceRef wxMacGetGenericRGBColorSpace();
+// wxCGColorRefData is used for preserving precise channel values
+
class wxCGColorRefData : public wxColourRefData
{
public:
@@ -44,6 +46,8 @@ public:
virtual wxColourRefData* Clone() const override { return new wxCGColorRefData(*this); }
+ WXColor GetWXColor() const override;
+ WXImage GetWXPatternImage() const override;
private:
wxCFRef<CGColorRef> m_cgColour;
@@ -139,23 +143,34 @@ wxCGColorRefData::wxCGColorRefData(CGColorRef col)
}
}
-#define M_COLDATA static_cast<wxCGColorRefData*>(m_refData)
+WXColor wxCGColorRefData::GetWXColor() const
+{
+ return wxOSXGetWXColorFromCGColor(m_cgColour);
+}
+
+WXImage wxCGColorRefData::GetWXPatternImage() const
+{
+ return wxOSXGetWXImageFromCGColor(m_cgColour);
+}
+
+#define M_COLDATA static_cast<wxColourRefData*>(m_refData)
#if wxOSX_USE_COCOA_OR_CARBON
wxColour::wxColour(const RGBColor& col)
{
- CGFloat components[4] = { (CGFloat)(col.red / 65535.0), (CGFloat)(col.green / 65535.0),
- (CGFloat)(col.blue / 65535.0), (CGFloat)1.0 };
- m_refData = new wxCGColorRefData(components);
+ InitRGBA((float)(col.red / 65535.0), (float)(col.green / 65535.0),
+ (float)(col.blue / 65535.0), (float)1.0 );
}
#endif
+#if !wxOSX_USE_COCOA_OR_IPHONE
wxColour::wxColour(CGColorRef col)
{
wxASSERT_MSG(col != nullptr, "Invalid CoreGraphics Color");
m_refData = new wxCGColorRefData(col);
}
+#endif
wxColour::ChannelType wxColour::Red() const
{
@@ -210,28 +225,18 @@ CGColorRef wxColour::GetCGColor() const
return M_COLDATA->GetCGColor();
}
-#if wxOSX_USE_COCOA
-WX_NSColor wxColour::OSXGetNSColor() const
+WXColor wxColour::OSXGetWXColor() const
{
wxCHECK_MSG( IsOk(), nullptr, "invalid colour" );
- return M_COLDATA->GetNSColor();
+ return M_COLDATA->GetWXColor();
}
-WX_NSImage wxColour::OSXGetNSPatternImage() const
+WXImage wxColour::OSXGetWXPatternImage() const
{
wxCHECK_MSG( IsOk(), nullptr, "invalid colour" );
- return M_COLDATA->GetNSPatternImage();
-}
-#endif
-
-void wxColour::InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a)
-{
- AllocExclusive();
-
- CGFloat components[4] = { (CGFloat)(r / 255.0), (CGFloat)(g / 255.0), (CGFloat)(b / 255.0), (CGFloat)(a / 255.0) };
- M_COLDATA->Init(components);
+ return M_COLDATA->GetWXPatternImage();
}
bool wxColour::operator==(const wxColour& other) const
@@ -245,13 +250,18 @@ bool wxColour::operator==(const wxColour& other) const
return CGColorEqualToColor(GetCGColor(), other.GetCGColor());
}
-wxGDIRefData* wxColour::CreateGDIRefData() const
+wxGDIRefData* wxColour::CloneGDIRefData(const wxGDIRefData* data) const
{
- // black
- return new wxCGColorRefData(0.0, 0.0, 0.0);
+ return static_cast<const wxColourRefData*>(data)->Clone();
}
-wxGDIRefData* wxColour::CloneGDIRefData(const wxGDIRefData* data) const
+void wxColour::InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a)
{
- return static_cast<const wxColourRefData*>(data)->Clone();
+ InitRGBA((float)(r / 255.0), (float)(g / 255.0), (float)(b / 255.0), (float)(a / 255.0));
+}
+
+void wxColour::InitRGBA(float r, float g, float b, float a)
+{
+ UnRef();
+ m_refData = new wxCGColorRefData(r,g,b,a);
}
=====================================
src/osx/iphone/
colour.mm
=====================================
@@ -0,0 +1,195 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/osx/iphone/
colour.mm
+// Purpose: Conversions between UIColor and wxColour
+// Author: Stefan Csomor
+// Created: 2025-10-02
+// Copyright: (c) 2025 Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#include "wx/colour.h"
+
+#include "wx/osx/private.h"
+#include "wx/osx/private/available.h"
+
+class wxUIColorRefData : public wxColourRefData
+{
+public:
+ wxUIColorRefData(CGFloat r, CGFloat g, CGFloat b, CGFloat a);
+ wxUIColorRefData(WXColor color);
+
+ wxUIColorRefData(const wxUIColorRefData& other);
+
+ virtual ~wxUIColorRefData();
+
+ virtual CGFloat Red() const override;
+ virtual CGFloat Green() const override;
+ virtual CGFloat Blue() const override;
+ virtual CGFloat Alpha() const override;
+
+ virtual bool IsSolid() const override;
+
+ CGColorRef GetCGColor() const override;
+
+ virtual wxColourRefData* Clone() const override { return new wxUIColorRefData(*this); }
+
+ virtual WXColor GetWXColor() const override;
+ virtual WXImage GetWXPatternImage() const override;
+private:
+ static CGFloat GetCGColorComponent(CGColorRef col, int rgbaIndex);
+ WX_UIColor m_uiColour;
+
+ wxDECLARE_NO_ASSIGN_CLASS(wxUIColorRefData);
+};
+
+
+wxUIColorRefData::wxUIColorRefData(CGFloat r, CGFloat g, CGFloat b, CGFloat a)
+{
+ m_uiColour = [[UIColor colorWithRed:r green:g blue:b alpha:a] retain];
+}
+
+wxUIColorRefData::wxUIColorRefData(WXColor color)
+{
+ m_uiColour = [color retain];
+}
+
+wxUIColorRefData::wxUIColorRefData(const wxUIColorRefData& other)
+{
+ m_uiColour = [other.m_uiColour retain];
+}
+
+wxUIColorRefData::~wxUIColorRefData()
+{
+ [m_uiColour release];
+}
+
+WXColor wxUIColorRefData::GetWXColor() const
+{
+ return m_uiColour;
+}
+
+CGFloat wxUIColorRefData::GetCGColorComponent(CGColorRef col, int rgbaIndex)
+{
+ CGFloat value = 0.0;
+
+ if ( col )
+ {
+ wxCFRef<CGColorRef> rgbacol;
+ CGColorSpaceModel model = CGColorSpaceGetModel(CGColorGetColorSpace(col));
+ size_t noComp = CGColorGetNumberOfComponents(col);
+ const CGFloat* components = CGColorGetComponents(col);
+
+ bool isRGB = true;
+
+ if (model == kCGColorSpaceModelMonochrome)
+ {
+ wxASSERT_MSG(1 <= noComp && noComp <= 2, "Monochrome Color unexpected components");
+ // is alpha is requested look into component if available
+ if ( rgbaIndex == 3 )
+ value = noComp > 1 ? components[1] : 1.0;
+ else
+ value = components[0];
+ isRGB = false;
+ }
+ else if (model != kCGColorSpaceModelRGB)
+ {
+ if ( WX_IS_MACOS_OR_IOS_AVAILABLE(10, 11, 9, 0) )
+ {
+ rgbacol = CGColorCreateCopyByMatchingToColorSpace(wxMacGetGenericRGBColorSpace(), kCGRenderingIntentDefault, col, nullptr);
+ noComp = CGColorGetNumberOfComponents(rgbacol);
+ components = CGColorGetComponents(rgbacol);
+ }
+ else
+ {
+ isRGB = false;
+ }
+ }
+
+ if (isRGB)
+ {
+ wxASSERT_MSG(3 <= noComp && noComp <= 4, "RGB Color unexpected components");
+ // is alpha is requested look into component if available
+ if ( rgbaIndex == 3 )
+ value = noComp == 4 ? components[3] : 1.0;
+ else
+ value = components[rgbaIndex];
+ }
+ }
+
+ return value;
+}
+
+CGFloat wxUIColorRefData::Red() const
+{
+ UITraitCollection* traitCollection = [UIScreen mainScreen].traitCollection;
+ CGFloat component = 0.0;
+ if ( [[m_uiColour resolvedColorWithTraitCollection:traitCollection] getRed:&component green:NULL blue:NULL alpha:NULL] )
+ return component;
+
+ return GetCGColorComponent([m_uiColour CGColor], 0);
+}
+
+CGFloat wxUIColorRefData::Green() const
+{
+ UITraitCollection* traitCollection = [UIScreen mainScreen].traitCollection;
+ CGFloat component = 0.0;
+ if ( [[m_uiColour resolvedColorWithTraitCollection:traitCollection] getRed:NULL green:&component blue:NULL alpha:NULL] )
+ return component;
+
+ return GetCGColorComponent([m_uiColour CGColor], 1);
+}
+
+CGFloat wxUIColorRefData::Blue() const
+{
+ UITraitCollection* traitCollection = [UIScreen mainScreen].traitCollection;
+ CGFloat component = 0.0;
+ if ( [[m_uiColour resolvedColorWithTraitCollection:traitCollection] getRed:NULL green:NULL blue:&component alpha:NULL] )
+ return component;
+
+ return GetCGColorComponent([m_uiColour CGColor], 2);
+}
+
+CGFloat wxUIColorRefData::Alpha() const
+{
+ UITraitCollection* traitCollection = [UIScreen mainScreen].traitCollection;
+ CGFloat component = 0.0;
+ if ( [[m_uiColour resolvedColorWithTraitCollection:traitCollection] getRed:NULL green:NULL blue:NULL alpha:&component] )
+ return component;
+
+ return GetCGColorComponent([m_uiColour CGColor], 3);
+}
+
+bool wxUIColorRefData::IsSolid() const
+{
+ return true;
+// return [m_uiColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] != nil;
+}
+
+CGColorRef wxUIColorRefData::GetCGColor() const
+{
+ return [m_uiColour CGColor];
+}
+
+WXImage wxUIColorRefData::GetWXPatternImage() const
+{
+ return nullptr;
+}
+
+wxGDIRefData* wxColour::CreateGDIRefData() const
+{
+ return new wxUIColorRefData(0.0, 0.0, 0.0, 1.0);
+}
+
+wxColour::wxColour(WXColor col)
+{
+ m_refData = new wxUIColorRefData(col);
+}
+
+wxColour::wxColour(CGColorRef col)
+{
+ m_refData = new wxUIColorRefData([[UIColor colorWithCGColor:col] retain]);
+ // as per contract CGColorRef is not retained
+ CGColorRelease(col);
+}
=====================================
src/osx/iphone/
settings.mm
=====================================
@@ -18,9 +18,55 @@
#endif
#include "wx/osx/core/private.h"
+#include "wx/osx/private/available.h"
#include "UIKit/UIKit.h"
+#import <Foundation/Foundation.h>
+
+
+static int wxOSXGetUserDefault(NSString* key, int defaultValue)
+{
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ if (!defaults)
+ {
+ return defaultValue;
+ }
+
+ id setting = [defaults objectForKey: key];
+ if (!setting)
+ {
+ return defaultValue;
+ }
+
+ return [setting intValue];
+}
+
+// ----------------------------------------------------------------------------
+// wxSystemAppearance
+// ----------------------------------------------------------------------------
+
+wxString wxSystemAppearance::GetName() const
+{
+ UITraitCollection* traitCollection = [UIScreen mainScreen].traitCollection;
+ if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark)
+ return wxS("Dark");
+ else if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleLight)
+ return wxS("Light");
+ else
+ return wxS("Unspecified");
+}
+
+bool wxSystemAppearance::IsDark() const
+{
+ UITraitCollection* traitCollection = [UIScreen mainScreen].traitCollection;
+ if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark)
+ return true;
+
+ return false;
+}
+
+
// ----------------------------------------------------------------------------
// wxSystemSettingsNative
// ----------------------------------------------------------------------------
@@ -31,15 +77,12 @@
wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
{
- wxColour resultColor;
-#if wxOSX_USE_COCOA_OR_CARBON
- ThemeBrush colorBrushID;
-#endif
+ UIColor* sysColor = nil;
switch ( index )
{
case wxSYS_COLOUR_WINDOW:
- resultColor = *wxWHITE;
+ sysColor = [UIColor systemBackgroundColor];
break ;
case wxSYS_COLOUR_SCROLLBAR :
case wxSYS_COLOUR_BACKGROUND:
@@ -51,15 +94,15 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
case wxSYS_COLOUR_INACTIVEBORDER:
case wxSYS_COLOUR_BTNFACE:
case wxSYS_COLOUR_MENUBAR:
- resultColor = wxColour( 0xBE, 0xBE, 0xBE ) ;
+ sysColor = [UIColor systemFillColor];
break ;
case wxSYS_COLOUR_LISTBOX :
- resultColor = *wxWHITE ;
+ sysColor = [UIColor whiteColor];
break ;
case wxSYS_COLOUR_BTNSHADOW:
- resultColor = wxColour( 0xBE, 0xBE, 0xBE );
+ sysColor = [UIColor systemFillColor];
break ;
case wxSYS_COLOUR_BTNTEXT:
@@ -69,40 +112,40 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
case wxSYS_COLOUR_INFOTEXT:
case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
case wxSYS_COLOUR_LISTBOXTEXT:
- resultColor = *wxBLACK;
+ sysColor = [UIColor labelColor];
break ;
case wxSYS_COLOUR_HIGHLIGHT:
{
- resultColor = wxColor( 0xCC, 0xCC, 0xFF );
+ sysColor = [UIColor lightTextColor];
}
break ;
case wxSYS_COLOUR_BTNHIGHLIGHT:
case wxSYS_COLOUR_GRAYTEXT:
- resultColor = wxColor( 0xCC, 0xCC, 0xCC );
+ sysColor = [UIColor lightTextColor];
break ;
case wxSYS_COLOUR_3DDKSHADOW:
- resultColor = wxColor( 0x44, 0x44, 0x44 );
+ sysColor = [UIColor darkTextColor];
break ;
case wxSYS_COLOUR_3DLIGHT:
- resultColor = wxColor( 0xCC, 0xCC, 0xCC );
+ sysColor = [UIColor lightTextColor];
break ;
case wxSYS_COLOUR_HIGHLIGHTTEXT :
case wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT :
- resultColor = *wxWHITE ;
+ sysColor = [UIColor whiteColor];
break ;
case wxSYS_COLOUR_INFOBK :
// we don't have a way to detect tooltip color, so use the
// standard value used at least on 10.4:
- resultColor = wxColour( 0xFF, 0xFF, 0xD3 ) ;
+ sysColor = [UIColor systemFillColor];
break ;
case wxSYS_COLOUR_APPWORKSPACE:
- resultColor = wxColor( 0x80, 0x80, 0x80 ); ;
+ sysColor = [UIColor systemBackgroundColor];
break ;
case wxSYS_COLOUR_HOTLIGHT:
@@ -110,15 +153,21 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
case wxSYS_COLOUR_GRADIENTINACTIVECAPTION:
case wxSYS_COLOUR_MENUHILIGHT:
// TODO:
- resultColor = *wxBLACK;
+ sysColor = [UIColor whiteColor];
break ;
default:
- resultColor = *wxWHITE;
+ if(index>=wxSYS_COLOUR_MAX)
+ {
+ wxFAIL_MSG(wxT("Invalid system colour index"));
+ return wxColour();
+ }
+
+ sysColor = [UIColor whiteColor];
break ;
}
- return resultColor;
+ return wxColour(sysColor);
}
// ----------------------------------------------------------------------------
@@ -248,8 +297,3 @@ bool wxSystemSettingsNative::HasFeature(wxSystemFeature index)
return false;
}
}
-
-bool wxSystemAppearance::IsDark() const
-{
- return false;
-}
View it on GitLab:
https://gitlab.com/wxwidgets/wxwidgets/-/compare/9e5b420c970fe922051955f1fa1ed35216fffc1a...18a60c9875c15c0fc9843a2f366c1462f3879289
--
View it on GitLab:
https://gitlab.com/wxwidgets/wxwidgets/-/compare/9e5b420c970fe922051955f1fa1ed35216fffc1a...18a60c9875c15c0fc9843a2f366c1462f3879289
You're receiving this email because of your account on
gitlab.com.