diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-08-16 19:24:11 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-08-16 19:24:11 +0800 |
commit | 600307d3d0133accc3aaceed694e897ad48cd584 (patch) | |
tree | 21296dcabd1868872b0e2ab06c17ce1d6cbf1df3 /src/platform/gui/osx | |
parent | d868d7b0d463ede80b761f87f10d4e25f52989c3 (diff) | |
download | cru-600307d3d0133accc3aaceed694e897ad48cd584.tar.gz cru-600307d3d0133accc3aaceed694e897ad48cd584.tar.bz2 cru-600307d3d0133accc3aaceed694e897ad48cd584.zip |
Move Core Foundation string out of cru String. Still error.
Diffstat (limited to 'src/platform/gui/osx')
-rw-r--r-- | src/platform/gui/osx/Clipboard.mm | 9 | ||||
-rw-r--r-- | src/platform/gui/osx/Menu.mm | 11 | ||||
-rw-r--r-- | src/platform/gui/osx/UiApplication.mm | 33 | ||||
-rw-r--r-- | src/platform/gui/osx/Window.mm | 13 |
4 files changed, 36 insertions, 30 deletions
diff --git a/src/platform/gui/osx/Clipboard.mm b/src/platform/gui/osx/Clipboard.mm index deaaa387..b3469795 100644 --- a/src/platform/gui/osx/Clipboard.mm +++ b/src/platform/gui/osx/Clipboard.mm @@ -1,5 +1,6 @@ -#include "cru/base/log/Logger.h" #include "cru/platform/gui/osx/Clipboard.h" +#include "cru/base/Osx.h" +#include "cru/base/log/Logger.h" #include "ClipboardPrivate.h" @@ -30,15 +31,15 @@ String OsxClipboardPrivate::GetText() { if (result.count == 0) { return u""; } else { - return ::cru::String::FromCFStringRef((CFStringRef)result[0]); + return FromCFStringRef((CFStringRef)result[0]); } } } void OsxClipboardPrivate::SetText(String text) { - auto cf_string = text.ToCFStringRef(); + auto cf_string = ToCFStringRef(text); [pasteboard_ clearContents]; [pasteboard_ writeObjects:@[ (NSString*)cf_string.ref ]]; } -} +} // namespace details } // namespace cru::platform::gui::osx diff --git a/src/platform/gui/osx/Menu.mm b/src/platform/gui/osx/Menu.mm index 848af022..648bc392 100644 --- a/src/platform/gui/osx/Menu.mm +++ b/src/platform/gui/osx/Menu.mm @@ -1,7 +1,8 @@ #include "cru/platform/gui/osx/Menu.h" -#import "MenuPrivate.h" #include "KeyboardPrivate.h" +#import "MenuPrivate.h" +#include "cru/base/Osx.h" #import <AppKit/NSApplication.h> @@ -51,7 +52,7 @@ void OsxMenuPrivate::AttachToNative(NSMenu* native_menu) { items_.push_back(item); } } -} +} // namespace details OsxMenuItem::OsxMenuItem(IUiApplication* ui_application) : OsxGuiResource(ui_application) { p_ = new details::OsxMenuItemPrivate(this); @@ -59,10 +60,10 @@ OsxMenuItem::OsxMenuItem(IUiApplication* ui_application) : OsxGuiResource(ui_app OsxMenuItem::~OsxMenuItem() { delete p_; } -String OsxMenuItem::GetTitle() { return ::cru::String::FromCFStringRef((CFStringRef)[p_->menu_item_ title]); } +String OsxMenuItem::GetTitle() { return FromCFStringRef((CFStringRef)[p_->menu_item_ title]); } void OsxMenuItem::SetTitle(String title) { - auto cf_title = title.ToCFStringRef(); + auto cf_title = ToCFStringRef(title); [p_->menu_item_ setTitle:(NSString*)(cf_title.ref)]; } @@ -160,7 +161,7 @@ void OsxMenu::RemoveItemAt(int index) { p_->menu_ = nullptr; } } -} +} // namespace cru::platform::gui::osx @implementation CruOsxMenuItemClickHandler { cru::platform::gui::osx::details::OsxMenuItemPrivate* p_; diff --git a/src/platform/gui/osx/UiApplication.mm b/src/platform/gui/osx/UiApplication.mm index 32e825e0..2733e8af 100644 --- a/src/platform/gui/osx/UiApplication.mm +++ b/src/platform/gui/osx/UiApplication.mm @@ -1,16 +1,17 @@ #include "cru/platform/gui/osx/UiApplication.h" #include "ClipboardPrivate.h" +#include "cru/base/Osx.h" #include "cru/base/log/Logger.h" +#include "cru/platform/graphics/Factory.h" #include "cru/platform/graphics/quartz/Factory.h" +#include "cru/platform/gui/Base.h" +#include "cru/platform/gui/UiApplication.h" +#include "cru/platform/gui/Window.h" #include "cru/platform/gui/osx/Clipboard.h" #include "cru/platform/gui/osx/Cursor.h" #include "cru/platform/gui/osx/Menu.h" #include "cru/platform/gui/osx/Window.h" -#include "cru/platform/graphics/Factory.h" -#include "cru/platform/gui/Base.h" -#include "cru/platform/gui/UiApplication.h" -#include "cru/platform/gui/Window.h" #include <AppKit/NSApplication.h> #include <Foundation/NSRunLoop.h> @@ -70,7 +71,7 @@ void OsxUiApplicationPrivate::CallQuitHandlers() { handler(); } } -} +} // namespace details OsxUiApplication::OsxUiApplication() : OsxGuiResource(this), p_(new details::OsxUiApplicationPrivate(this)) { @@ -178,15 +179,15 @@ graphics::IGraphicsFactory* OsxUiApplication::GetGraphicsFactory() { std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options) { NSSavePanel* panel = [NSSavePanel savePanel]; - [panel setTitle:(NSString*)options.title.ToCFStringRef().ref]; - [panel setPrompt:(NSString*)options.prompt.ToCFStringRef().ref]; - [panel setMessage:(NSString*)options.message.ToCFStringRef().ref]; + [panel setTitle:(NSString*)ToCFStringRef(options.title).ref]; + [panel setPrompt:(NSString*)ToCFStringRef(options.prompt).ref]; + [panel setMessage:(NSString*)ToCFStringRef(options.message).ref]; NSMutableArray* allowed_content_types = [NSMutableArray array]; for (const auto& file_type : options.allowed_file_types) { [allowed_content_types - addObject:[UTType typeWithFilenameExtension:(NSString*)file_type.ToCFStringRef().ref]]; + addObject:[UTType typeWithFilenameExtension:(NSString*)ToCFStringRef(file_type).ref]]; } [panel setAllowedContentTypes:allowed_content_types]; @@ -194,7 +195,7 @@ std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options auto model_result = [panel runModal]; if (model_result == NSModalResponseOK) { - return ::cru::String::FromCFStringRef((CFStringRef)[[panel URL] path]); + return FromCFStringRef((CFStringRef)[[panel URL] path]); } else { return std::nullopt; } @@ -202,15 +203,15 @@ std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options std::optional<std::vector<String>> OsxUiApplication::ShowOpenDialog(OpenDialogOptions options) { NSOpenPanel* panel = [NSOpenPanel openPanel]; - [panel setTitle:(NSString*)options.title.ToCFStringRef().ref]; - [panel setPrompt:(NSString*)options.prompt.ToCFStringRef().ref]; - [panel setMessage:(NSString*)options.message.ToCFStringRef().ref]; + [panel setTitle:(NSString*)ToCFStringRef(options.title).ref]; + [panel setPrompt:(NSString*)ToCFStringRef(options.prompt).ref]; + [panel setMessage:(NSString*)ToCFStringRef(options.message).ref]; NSMutableArray* allowed_content_types = [NSMutableArray array]; for (const auto& file_type : options.allowed_file_types) { [allowed_content_types - addObject:[UTType typeWithFilenameExtension:(NSString*)file_type.ToCFStringRef().ref]]; + addObject:[UTType typeWithFilenameExtension:(NSString*)ToCFStringRef(file_type).ref]]; } [panel setAllowedContentTypes:allowed_content_types]; @@ -224,7 +225,7 @@ std::optional<std::vector<String>> OsxUiApplication::ShowOpenDialog(OpenDialogOp if (model_result == NSModalResponseOK) { std::vector<String> result; for (NSURL* url in [panel URLs]) { - result.push_back(::cru::String::FromCFStringRef((CFStringRef)[url path])); + result.push_back(FromCFStringRef((CFStringRef)[url path])); } return result; } else { @@ -237,7 +238,7 @@ void OsxUiApplication::UnregisterWindow(OsxWindow* window) { std::remove(p_->windows_.begin(), p_->windows_.end(), static_cast<INativeWindow*>(window)), p_->windows_.cend()); } -} +} // namespace cru::platform::gui::osx @implementation CruAppDelegate { cru::platform::gui::osx::details::OsxUiApplicationPrivate* _p; diff --git a/src/platform/gui/osx/Window.mm b/src/platform/gui/osx/Window.mm index 4e000c48..4279e73e 100644 --- a/src/platform/gui/osx/Window.mm +++ b/src/platform/gui/osx/Window.mm @@ -3,6 +3,7 @@ #include "CursorPrivate.h" #include "InputMethodPrivate.h" +#include "cru/base/Osx.h" #include "cru/base/Range.h" #include "cru/base/log/Logger.h" #include "cru/platform/Check.h" @@ -27,6 +28,8 @@ namespace { constexpr int key_down_debug = 0; } +using ::cru::FromCFStringRef; +using ::cru::ToCFStringRef; using cru::platform::graphics::quartz::Convert; namespace cru::platform::gui::osx { namespace { @@ -185,7 +188,7 @@ void OsxWindowPrivate::CreateWindow() { frame:Rect(Point{}, content_rect_.GetSize())]; [window_ setContentView:content_view]; - [window_ setTitle:(NSString*)title_.ToCFStringRef().ref]; + [window_ setTitle:(NSString*)ToCFStringRef(title_).ref]; draw_layer_ = CreateLayer(Convert(content_rect_.GetSize())); @@ -253,7 +256,7 @@ void OsxWindow::SetTitle(String title) { p_->title_ = title; if (p_->window_) { - [p_->window_ setTitle:(NSString*)title.ToCFStringRef().ref]; + [p_->window_ setTitle:(NSString*)ToCFStringRef(title).ref]; } } @@ -664,7 +667,7 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{ s = CFAttributedStringGetString(as); } - auto ss = ::cru::String::FromCFStringRef(s); + auto ss = FromCFStringRef(s); // cru::CRU_LOG_DEBUG(u"CruView", // u"Received setMarkedText string: {}, selected range: ({}, {}), " @@ -684,7 +687,7 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{ withAttributedString:[[NSAttributedString alloc] initWithString:(NSString*)s]]; cru::platform::gui::CompositionText composition_text; - composition_text.text = ::cru::String::FromCFStringRef((CFStringRef)[_input_context_text string]); + composition_text.text = FromCFStringRef((CFStringRef)[_input_context_text string]); composition_text.selection.position = ss.IndexFromCodePointToCodeUnit(selectedRange.location); composition_text.selection.count = ss.IndexFromCodePointToCodeUnit(selectedRange.location + selectedRange.length) - @@ -725,7 +728,7 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{ _input_context_text = nil; _input_context_p->SetCompositionText(cru::platform::gui::CompositionText()); - auto ss = ::cru::String::FromCFStringRef(s); + auto ss = FromCFStringRef(s); // cru::CRU_LOG_DEBUG(u"CruView", u"Finish composition: {}, replacement range: ({}, {})", ss, // replacementRange.location, replacementRange.length); |