aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-10-17 21:50:24 +0800
committerYuqian Yang <crupest@crupest.life>2025-10-17 21:50:24 +0800
commit728d592f4075ae78b67dab6911ada05875a470a3 (patch)
tree57a7232ea0a984b0344bc63a593c1dee65072d2f /src/platform/gui
parent045462a6aed2796976a2f5cf0042f9a0ac1493f7 (diff)
downloadcru-728d592f4075ae78b67dab6911ada05875a470a3.tar.gz
cru-728d592f4075ae78b67dab6911ada05875a470a3.tar.bz2
cru-728d592f4075ae78b67dab6911ada05875a470a3.zip
Fix macOS build.
Diffstat (limited to 'src/platform/gui')
-rw-r--r--src/platform/gui/osx/Clipboard.mm12
-rw-r--r--src/platform/gui/osx/ClipboardPrivate.h4
-rw-r--r--src/platform/gui/osx/InputMethod.mm4
-rw-r--r--src/platform/gui/osx/InputMethodPrivate.h4
-rw-r--r--src/platform/gui/osx/Keyboard.mm8
-rw-r--r--src/platform/gui/osx/Menu.mm4
-rw-r--r--src/platform/gui/osx/UiApplication.mm6
-rw-r--r--src/platform/gui/osx/Window.mm34
-rw-r--r--src/platform/gui/osx/WindowPrivate.h2
9 files changed, 40 insertions, 38 deletions
diff --git a/src/platform/gui/osx/Clipboard.mm b/src/platform/gui/osx/Clipboard.mm
index d87ab7e3..a09bca1c 100644
--- a/src/platform/gui/osx/Clipboard.mm
+++ b/src/platform/gui/osx/Clipboard.mm
@@ -13,30 +13,30 @@ OsxClipboard::OsxClipboard(cru::platform::gui::IUiApplication* ui_application,
OsxClipboard::~OsxClipboard() {}
-String OsxClipboard::GetText() { return p_->GetText(); }
+std::string OsxClipboard::GetText() { return p_->GetText(); }
-void OsxClipboard::SetText(String text) { p_->SetText(text); }
+void OsxClipboard::SetText(std::string text) { p_->SetText(text); }
namespace details {
OsxClipboardPrivate::OsxClipboardPrivate(NSPasteboard* pasteboard) : pasteboard_(pasteboard) {}
OsxClipboardPrivate::~OsxClipboardPrivate() {}
-String OsxClipboardPrivate::GetText() {
+std::string OsxClipboardPrivate::GetText() {
auto result = [pasteboard_ readObjectsForClasses:@[ NSString.class ] options:nil];
if (result == nil) {
CRU_LOG_TAG_WARN("Failed to get text from clipboard");
- return u"";
+ return "";
} else {
if (result.count == 0) {
- return u"";
+ return "";
} else {
return FromCFStringRef((CFStringRef)result[0]);
}
}
}
-void OsxClipboardPrivate::SetText(String text) {
+void OsxClipboardPrivate::SetText(std::string text) {
auto cf_string = ToCFString(text);
[pasteboard_ clearContents];
[pasteboard_ writeObjects:@[ (NSString*)cf_string.ref ]];
diff --git a/src/platform/gui/osx/ClipboardPrivate.h b/src/platform/gui/osx/ClipboardPrivate.h
index 41554297..5019ba17 100644
--- a/src/platform/gui/osx/ClipboardPrivate.h
+++ b/src/platform/gui/osx/ClipboardPrivate.h
@@ -17,8 +17,8 @@ class OsxClipboardPrivate : public Object {
~OsxClipboardPrivate();
public:
- String GetText();
- void SetText(String text);
+ std::string GetText();
+ void SetText(std::string text);
private:
NSPasteboard* pasteboard_;
diff --git a/src/platform/gui/osx/InputMethod.mm b/src/platform/gui/osx/InputMethod.mm
index c3532ab6..c17dab3d 100644
--- a/src/platform/gui/osx/InputMethod.mm
+++ b/src/platform/gui/osx/InputMethod.mm
@@ -24,7 +24,7 @@ void OsxInputMethodContextPrivate::RaiseCompositionEndEvent() {
}
void OsxInputMethodContextPrivate::RaiseCompositionEvent() { composition_event_.Raise(nullptr); }
-void OsxInputMethodContextPrivate::RaiseTextEvent(StringView text) { text_event_.Raise(text); }
+void OsxInputMethodContextPrivate::RaiseTextEvent(std::string text) { text_event_.Raise(text); }
void OsxInputMethodContextPrivate::PerformSel(SEL sel) {
// [window_->p_->GetNSWindow() performSelector:sel];
@@ -77,7 +77,7 @@ IEvent<std::nullptr_t>* OsxInputMethodContext::CompositionEvent() {
return &p_->composition_event_;
}
-IEvent<StringView>* OsxInputMethodContext::TextEvent() { return &p_->text_event_; }
+IEvent<std::string>* OsxInputMethodContext::TextEvent() { return &p_->text_event_; }
bool OsxInputMethodContext::IsEnabled() { return p_->is_enabled_; }
}
diff --git a/src/platform/gui/osx/InputMethodPrivate.h b/src/platform/gui/osx/InputMethodPrivate.h
index ac2d1bf4..39f3be02 100644
--- a/src/platform/gui/osx/InputMethodPrivate.h
+++ b/src/platform/gui/osx/InputMethodPrivate.h
@@ -24,7 +24,7 @@ class OsxInputMethodContextPrivate {
void RaiseCompositionStartEvent();
void RaiseCompositionEndEvent();
void RaiseCompositionEvent();
- void RaiseTextEvent(StringView text);
+ void RaiseTextEvent(std::string text);
Point GetCandidateWindowPosition() const { return candidate_window_point_; }
void SetCandidateWindowPosition(const Point& p) {
@@ -56,7 +56,7 @@ class OsxInputMethodContextPrivate {
Event<std::nullptr_t> composition_start_event_;
Event<std::nullptr_t> composition_event_;
Event<std::nullptr_t> composition_end_event_;
- Event<StringView> text_event_;
+ Event<std::string> text_event_;
bool is_enabled_ = false;
};
diff --git a/src/platform/gui/osx/Keyboard.mm b/src/platform/gui/osx/Keyboard.mm
index da4c85f0..ea1d2d4e 100644
--- a/src/platform/gui/osx/Keyboard.mm
+++ b/src/platform/gui/osx/Keyboard.mm
@@ -267,16 +267,16 @@ NSString* ConvertKeyCodeToKeyEquivalent(KeyCode key_code) {
NSEventModifierFlags ConvertKeyModifier(KeyModifier k) {
NSEventModifierFlags flags = 0;
- if (k & KeyModifiers::shift) {
+ if (k & KeyModifiers::Shift) {
flags |= NSEventModifierFlagShift;
}
- if (k & KeyModifiers::ctrl) {
+ if (k & KeyModifiers::Ctrl) {
flags |= NSEventModifierFlagControl;
}
- if (k & KeyModifiers::alt) {
+ if (k & KeyModifiers::Alt) {
flags |= NSEventModifierFlagOption;
}
- if (k & KeyModifiers::command) {
+ if (k & KeyModifiers::Command) {
flags |= NSEventModifierFlagCommand;
}
return flags;
diff --git a/src/platform/gui/osx/Menu.mm b/src/platform/gui/osx/Menu.mm
index 45beddee..0eea19ec 100644
--- a/src/platform/gui/osx/Menu.mm
+++ b/src/platform/gui/osx/Menu.mm
@@ -60,9 +60,9 @@ OsxMenuItem::OsxMenuItem(IUiApplication* ui_application) : OsxGuiResource(ui_app
OsxMenuItem::~OsxMenuItem() { delete p_; }
-String OsxMenuItem::GetTitle() { return FromCFStringRef((CFStringRef)[p_->menu_item_ title]); }
+std::string OsxMenuItem::GetTitle() { return FromCFStringRef((CFStringRef)[p_->menu_item_ title]); }
-void OsxMenuItem::SetTitle(String title) {
+void OsxMenuItem::SetTitle(std::string title) {
auto cf_title = ToCFString(title);
[p_->menu_item_ setTitle:(NSString*)(cf_title.ref)];
}
diff --git a/src/platform/gui/osx/UiApplication.mm b/src/platform/gui/osx/UiApplication.mm
index 7e744928..fca21075 100644
--- a/src/platform/gui/osx/UiApplication.mm
+++ b/src/platform/gui/osx/UiApplication.mm
@@ -177,7 +177,7 @@ graphics::IGraphicsFactory* OsxUiApplication::GetGraphicsFactory() {
return p_->quartz_graphics_factory_.get();
}
-std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options) {
+std::optional<std::string> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options) {
NSSavePanel* panel = [NSSavePanel savePanel];
[panel setTitle:(NSString*)ToCFString(options.title).ref];
[panel setPrompt:(NSString*)ToCFString(options.prompt).ref];
@@ -201,7 +201,7 @@ std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options
}
}
-std::optional<std::vector<String>> OsxUiApplication::ShowOpenDialog(OpenDialogOptions options) {
+std::optional<std::vector<std::string>> OsxUiApplication::ShowOpenDialog(OpenDialogOptions options) {
NSOpenPanel* panel = [NSOpenPanel openPanel];
[panel setTitle:(NSString*)ToCFString(options.title).ref];
[panel setPrompt:(NSString*)ToCFString(options.prompt).ref];
@@ -223,7 +223,7 @@ std::optional<std::vector<String>> OsxUiApplication::ShowOpenDialog(OpenDialogOp
auto model_result = [panel runModal];
if (model_result == NSModalResponseOK) {
- std::vector<String> result;
+ std::vector<std::string> result;
for (NSURL* url in [panel URLs]) {
result.push_back(FromCFStringRef((CFStringRef)[url path]));
}
diff --git a/src/platform/gui/osx/Window.mm b/src/platform/gui/osx/Window.mm
index 6559cf70..65d31ab8 100644
--- a/src/platform/gui/osx/Window.mm
+++ b/src/platform/gui/osx/Window.mm
@@ -10,6 +10,7 @@
#include "cru/platform/graphics/NullPainter.h"
#include "cru/platform/graphics/quartz/Convert.h"
#include "cru/platform/graphics/quartz/Painter.h"
+#include "cru/platform/gui/Input.h"
#include "cru/platform/gui/TimerHelper.h"
#include "cru/platform/gui/osx/Cursor.h"
#include "cru/platform/gui/osx/InputMethod.h"
@@ -29,7 +30,6 @@ constexpr int key_down_debug = 0;
}
using ::cru::FromCFStringRef;
-using ::cru::ToCFString;
using cru::platform::graphics::quartz::Convert;
namespace cru::platform::gui::osx {
namespace {
@@ -250,9 +250,9 @@ void OsxWindow::SetStyleFlag(WindowStyleFlag flag) {
}
}
-String OsxWindow::GetTitle() { return p_->title_; }
+std::string OsxWindow::GetTitle() { return p_->title_; }
-void OsxWindow::SetTitle(String title) {
+void OsxWindow::SetTitle(std::string title) {
p_->title_ = title;
if (p_->window_) {
@@ -401,13 +401,13 @@ namespace {
cru::platform::gui::KeyModifier GetKeyModifier(NSEvent* event) {
cru::platform::gui::KeyModifier key_modifier;
if (event.modifierFlags & NSEventModifierFlagControl)
- key_modifier |= cru::platform::gui::KeyModifiers::ctrl;
+ key_modifier |= cru::platform::gui::KeyModifiers::Ctrl;
if (event.modifierFlags & NSEventModifierFlagOption)
- key_modifier |= cru::platform::gui::KeyModifiers::alt;
+ key_modifier |= cru::platform::gui::KeyModifiers::Alt;
if (event.modifierFlags & NSEventModifierFlagShift)
- key_modifier |= cru::platform::gui::KeyModifiers::shift;
+ key_modifier |= cru::platform::gui::KeyModifiers::Shift;
if (event.modifierFlags & NSEventModifierFlagCommand)
- key_modifier |= cru::platform::gui::KeyModifiers::command;
+ key_modifier |= cru::platform::gui::KeyModifiers::Command;
return key_modifier;
}
} // namespace
@@ -504,28 +504,28 @@ cru::platform::gui::KeyModifier GetKeyModifier(NSEvent* event) {
auto key_modifier = GetKeyModifier(event);
cru::platform::Point p(event.locationInWindow.x, event.locationInWindow.y);
- _p->OnMouseDown(cru::platform::gui::mouse_buttons::left, p, key_modifier);
+ _p->OnMouseDown(cru::platform::gui::MouseButtons::Left, p, key_modifier);
}
- (void)mouseUp:(NSEvent*)event {
auto key_modifier = GetKeyModifier(event);
cru::platform::Point p(event.locationInWindow.x, event.locationInWindow.y);
- _p->OnMouseUp(cru::platform::gui::mouse_buttons::left, p, key_modifier);
+ _p->OnMouseUp(cru::platform::gui::MouseButtons::Left, p, key_modifier);
}
- (void)rightMouseDown:(NSEvent*)event {
auto key_modifier = GetKeyModifier(event);
cru::platform::Point p(event.locationInWindow.x, event.locationInWindow.y);
- _p->OnMouseDown(cru::platform::gui::mouse_buttons::right, p, key_modifier);
+ _p->OnMouseDown(cru::platform::gui::MouseButtons::Right, p, key_modifier);
}
- (void)rightMouseUp:(NSEvent*)event {
auto key_modifier = GetKeyModifier(event);
cru::platform::Point p(event.locationInWindow.x, event.locationInWindow.y);
- _p->OnMouseUp(cru::platform::gui::mouse_buttons::right, p, key_modifier);
+ _p->OnMouseUp(cru::platform::gui::MouseButtons::Right, p, key_modifier);
}
- (void)scrollWheel:(NSEvent*)event {
@@ -611,17 +611,17 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{
if (input_context->IsEnabled()) {
if (input_context_handle_codes.count(c) &&
- !(key_modifier & ~cru::platform::gui::KeyModifiers::shift)) {
+ !(key_modifier & ~cru::platform::gui::KeyModifiers::Shift)) {
handled = [[self inputContext] handleEvent:event];
} else if (input_context_handle_codes_when_has_text.count(c) && !key_modifier) {
if (!input_context->GetCompositionText().text.empty()) {
handled = [[self inputContext] handleEvent:event];
} else {
if (c == KeyCode::Return) {
- _input_context_p->RaiseTextEvent(u"\n");
+ _input_context_p->RaiseTextEvent("\n");
handled = true;
} else if (c == KeyCode::Space) {
- _input_context_p->RaiseTextEvent(u" ");
+ _input_context_p->RaiseTextEvent(" ");
handled = true;
}
}
@@ -688,9 +688,11 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{
cru::platform::gui::CompositionText composition_text;
composition_text.text = FromCFStringRef((CFStringRef)[_input_context_text string]);
- composition_text.selection.position = ss.IndexFromCodePointToCodeUnit(selectedRange.location);
+ composition_text.selection.position =
+ cru::string::Utf8IndexCodePointToCodeUnit(ss.data(), ss.size(), selectedRange.location);
composition_text.selection.count =
- ss.IndexFromCodePointToCodeUnit(selectedRange.location + selectedRange.length) -
+ cru::string::Utf8IndexCodePointToCodeUnit(ss.data(), ss.size(),
+ selectedRange.location + selectedRange.length) -
composition_text.selection.position;
_input_context_p->SetCompositionText(composition_text);
_input_context_p->RaiseCompositionEvent();
diff --git a/src/platform/gui/osx/WindowPrivate.h b/src/platform/gui/osx/WindowPrivate.h
index 478ce4e5..9e1b2a6c 100644
--- a/src/platform/gui/osx/WindowPrivate.h
+++ b/src/platform/gui/osx/WindowPrivate.h
@@ -83,7 +83,7 @@ class OsxWindowPrivate {
INativeWindow* parent_ = nullptr;
WindowStyleFlag style_flag_ = WindowStyleFlag{};
- String title_;
+ std::string title_;
Rect content_rect_;