示例#1
0
文件: textbox.cpp 项目: gfannes/nana
		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;
		}
示例#2
0
		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;
		}
示例#3
0
	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;
	}