mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Standardize IME callbacks for off-screen rendering (issue #1675)
This commit is contained in:
@ -781,46 +781,96 @@ void CEF_CALLBACK browser_host_set_windowless_frame_rate(
|
||||
frame_rate);
|
||||
}
|
||||
|
||||
cef_text_input_context_t CEF_CALLBACK browser_host_get_nstext_input_context(
|
||||
void CEF_CALLBACK browser_host_ime_set_composition(
|
||||
struct _cef_browser_host_t* self, const cef_string_t* text,
|
||||
size_t underlinesCount, cef_composition_underline_t const* underlines,
|
||||
const cef_range_t* replacement_range,
|
||||
const cef_range_t* selection_range) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
// Verify param: replacement_range; type: simple_byref_const
|
||||
DCHECK(replacement_range);
|
||||
if (!replacement_range)
|
||||
return;
|
||||
// Verify param: selection_range; type: simple_byref_const
|
||||
DCHECK(selection_range);
|
||||
if (!selection_range)
|
||||
return;
|
||||
// Unverified params: text, underlines
|
||||
|
||||
// Translate param: underlines; type: simple_vec_byref_const
|
||||
std::vector<CefCompositionUnderline > underlinesList;
|
||||
if (underlinesCount > 0) {
|
||||
for (size_t i = 0; i < underlinesCount; ++i) {
|
||||
CefCompositionUnderline underlinesVal = underlines[i];
|
||||
underlinesList.push_back(underlinesVal);
|
||||
}
|
||||
}
|
||||
// Translate param: replacement_range; type: simple_byref_const
|
||||
CefRange replacement_rangeVal = replacement_range?*replacement_range:CefRange(
|
||||
);
|
||||
// Translate param: selection_range; type: simple_byref_const
|
||||
CefRange selection_rangeVal = selection_range?*selection_range:CefRange();
|
||||
|
||||
// Execute
|
||||
CefBrowserHostCppToC::Get(self)->ImeSetComposition(
|
||||
CefString(text),
|
||||
underlinesList,
|
||||
replacement_rangeVal,
|
||||
selection_rangeVal);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_host_ime_commit_text(struct _cef_browser_host_t* self,
|
||||
const cef_string_t* text, const cef_range_t* replacement_range,
|
||||
int relative_cursor_pos) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
// Verify param: replacement_range; type: simple_byref_const
|
||||
DCHECK(replacement_range);
|
||||
if (!replacement_range)
|
||||
return;
|
||||
// Unverified params: text
|
||||
|
||||
// Translate param: replacement_range; type: simple_byref_const
|
||||
CefRange replacement_rangeVal = replacement_range?*replacement_range:CefRange(
|
||||
);
|
||||
|
||||
// Execute
|
||||
CefBrowserHostCppToC::Get(self)->ImeCommitText(
|
||||
CefString(text),
|
||||
replacement_rangeVal,
|
||||
relative_cursor_pos);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_host_ime_finish_composing_text(
|
||||
struct _cef_browser_host_t* self, int keep_selection) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
|
||||
// Execute
|
||||
CefBrowserHostCppToC::Get(self)->ImeFinishComposingText(
|
||||
keep_selection?true:false);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_host_ime_cancel_composition(
|
||||
struct _cef_browser_host_t* self) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return NULL;
|
||||
|
||||
// Execute
|
||||
cef_text_input_context_t _retval = CefBrowserHostCppToC::Get(
|
||||
self)->GetNSTextInputContext();
|
||||
|
||||
// Return type: simple
|
||||
return _retval;
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_host_handle_key_event_before_text_input_client(
|
||||
struct _cef_browser_host_t* self, cef_event_handle_t keyEvent) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
|
||||
// Execute
|
||||
CefBrowserHostCppToC::Get(self)->HandleKeyEventBeforeTextInputClient(
|
||||
keyEvent);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_host_handle_key_event_after_text_input_client(
|
||||
struct _cef_browser_host_t* self, cef_event_handle_t keyEvent) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
|
||||
// Execute
|
||||
CefBrowserHostCppToC::Get(self)->HandleKeyEventAfterTextInputClient(
|
||||
keyEvent);
|
||||
CefBrowserHostCppToC::Get(self)->ImeCancelComposition();
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_host_drag_target_drag_enter(
|
||||
@ -1008,11 +1058,11 @@ CefBrowserHostCppToC::CefBrowserHostCppToC() {
|
||||
browser_host_get_windowless_frame_rate;
|
||||
GetStruct()->set_windowless_frame_rate =
|
||||
browser_host_set_windowless_frame_rate;
|
||||
GetStruct()->get_nstext_input_context = browser_host_get_nstext_input_context;
|
||||
GetStruct()->handle_key_event_before_text_input_client =
|
||||
browser_host_handle_key_event_before_text_input_client;
|
||||
GetStruct()->handle_key_event_after_text_input_client =
|
||||
browser_host_handle_key_event_after_text_input_client;
|
||||
GetStruct()->ime_set_composition = browser_host_ime_set_composition;
|
||||
GetStruct()->ime_commit_text = browser_host_ime_commit_text;
|
||||
GetStruct()->ime_finish_composing_text =
|
||||
browser_host_ime_finish_composing_text;
|
||||
GetStruct()->ime_cancel_composition = browser_host_ime_cancel_composition;
|
||||
GetStruct()->drag_target_drag_enter = browser_host_drag_target_drag_enter;
|
||||
GetStruct()->drag_target_drag_over = browser_host_drag_target_drag_over;
|
||||
GetStruct()->drag_target_drag_leave = browser_host_drag_target_drag_leave;
|
||||
|
@ -350,6 +350,46 @@ void CEF_CALLBACK render_handler_on_scroll_offset_changed(
|
||||
y);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK render_handler_on_ime_composition_range_changed(
|
||||
struct _cef_render_handler_t* self, cef_browser_t* browser,
|
||||
const cef_range_t* selected_range, size_t character_boundsCount,
|
||||
cef_rect_t const* character_bounds) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
// Verify param: browser; type: refptr_diff
|
||||
DCHECK(browser);
|
||||
if (!browser)
|
||||
return;
|
||||
// Verify param: selected_range; type: simple_byref_const
|
||||
DCHECK(selected_range);
|
||||
if (!selected_range)
|
||||
return;
|
||||
// Verify param: character_bounds; type: simple_vec_byref_const
|
||||
DCHECK(character_boundsCount == 0 || character_bounds);
|
||||
if (character_boundsCount > 0 && !character_bounds)
|
||||
return;
|
||||
|
||||
// Translate param: selected_range; type: simple_byref_const
|
||||
CefRange selected_rangeVal = selected_range?*selected_range:CefRange();
|
||||
// Translate param: character_bounds; type: simple_vec_byref_const
|
||||
std::vector<CefRect > character_boundsList;
|
||||
if (character_boundsCount > 0) {
|
||||
for (size_t i = 0; i < character_boundsCount; ++i) {
|
||||
CefRect character_boundsVal = character_bounds[i];
|
||||
character_boundsList.push_back(character_boundsVal);
|
||||
}
|
||||
}
|
||||
|
||||
// Execute
|
||||
CefRenderHandlerCppToC::Get(self)->OnImeCompositionRangeChanged(
|
||||
CefBrowserCToCpp::Wrap(browser),
|
||||
selected_rangeVal,
|
||||
character_boundsList);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
@ -368,6 +408,8 @@ CefRenderHandlerCppToC::CefRenderHandlerCppToC() {
|
||||
GetStruct()->update_drag_cursor = render_handler_update_drag_cursor;
|
||||
GetStruct()->on_scroll_offset_changed =
|
||||
render_handler_on_scroll_offset_changed;
|
||||
GetStruct()->on_ime_composition_range_changed =
|
||||
render_handler_on_ime_composition_range_changed;
|
||||
}
|
||||
|
||||
template<> CefRefPtr<CefRenderHandler> CefCppToC<CefRenderHandlerCppToC,
|
||||
|
Reference in New Issue
Block a user