textbox& textbox::append(const nana::string& text, bool at_caret) { auto editor = get_drawer_trigger().editor(); if(editor) { if(at_caret == false) editor->move_caret_end(); editor->put(text); API::update_window(this->handle()); } return *this; }
textbox& textbox::append(const std::string& text, bool at_caret) { internal_scope_guard lock; auto editor = get_drawer_trigger().editor(); if(editor) { if(at_caret == false) editor->move_caret_end(); editor->put(to_wstring(text)); API::update_window(this->handle()); } return *this; }
bool text_entry::on_key_down(const window_key_event_params& params) { bool is_trapped = false; if (is_focused()) { //don't trap when ALT is down, this would prevent ALT-TAB if (!params.is_alt_down()) { is_trapped = true; if (params.is_ctrl_down()) { if (params.is_shift_down()) { if (params._key == keyboard_key::LEFT) { move_caret_left_to_next_word(params.is_shift_down()); } else if (params._key == keyboard_key::RIGHT) { move_caret_right_to_next_word(params.is_shift_down()); } else { is_trapped = false; } } else { if (params._key == keyboard_key::C) { copy_text_to_clipboard(params._clipboard); } else if (params._key == keyboard_key::X) { cut_text_to_clipboard(params._clipboard); } else if (params._key == keyboard_key::V) { paste_text_from_clipboard(params._clipboard); } else { is_trapped = false; } } } else { if (params._key == keyboard_key::BACKSPACE) { handle_backspace_key_down(); } else if (params._key == keyboard_key::DEL) { handle_delete_key_down(); } else if (params._key == keyboard_key::HOME) { move_caret_home(params.is_shift_down()); } else if (params._key == keyboard_key::END) { move_caret_end(params.is_shift_down()); } else if (params._key == keyboard_key::LEFT) { move_caret_left(1, params.is_shift_down()); } else if (params._key == keyboard_key::RIGHT) { move_caret_right(1, params.is_shift_down()); } else if (params._key == keyboard_key::ENTER) { if (_should_trap_enter) { try_apply_changes(); move_caret_end(false); } else { is_trapped = false; } } else { //NOTE: trap all keys, needs to by symmetrical with on_char_received(). Alphanumeric keys //where being picked up by other windows even though on_char_received() was trapping the event. is_trapped = is_alpha_numeric(params._key) || (params._key == keyboard_key::SPACE); } } } } return is_trapped; }