diff options
| -rw-r--r-- | engines/sci/event.cpp | 2 | ||||
| -rw-r--r-- | engines/sci/graphics/controls.cpp | 10 | 
2 files changed, 10 insertions, 2 deletions
| diff --git a/engines/sci/event.cpp b/engines/sci/event.cpp index 5923e501cf..3234ab68ff 100644 --- a/engines/sci/event.cpp +++ b/engines/sci/event.cpp @@ -149,7 +149,7 @@ SciEvent EventManager::getScummVMEvent() {  		found = em->pollEvent(ev);  	} -	if (found && !ev.synthetic && ev.type != Common::EVENT_MOUSEMOVE) { +	if (found && ev.type != Common::EVENT_MOUSEMOVE) {  		int modifiers = em->getModifierState();  		// We add the modifier key status to buckybits diff --git a/engines/sci/graphics/controls.cpp b/engines/sci/graphics/controls.cpp index 5891413be8..6cdf2e4e9d 100644 --- a/engines/sci/graphics/controls.cpp +++ b/engines/sci/graphics/controls.cpp @@ -150,7 +150,7 @@ void GfxControls::kernelTexteditChange(reg_t controlObject, reg_t eventObject) {  	uint16 maxChars = readSelectorValue(_segMan, controlObject, SELECTOR(max));  	reg_t textReference = readSelector(_segMan, controlObject, SELECTOR(text));  	Common::String text; -	uint16 textSize, eventType, eventKey = 0; +	uint16 textSize, eventType, eventKey = 0, modifiers = 0;  	bool textChanged = false;  	bool textAddChar = false;  	Common::Rect rect; @@ -169,6 +169,7 @@ void GfxControls::kernelTexteditChange(reg_t controlObject, reg_t eventObject) {  			break;  		case SCI_EVENT_KEYBOARD:  			eventKey = readSelectorValue(_segMan, eventObject, SELECTOR(message)); +			modifiers = readSelectorValue(_segMan, eventObject, SELECTOR(modifiers));  			switch (eventKey) {  			case SCI_KEY_BACKSPACE:  				if (cursorPos > 0) { @@ -196,6 +197,13 @@ void GfxControls::kernelTexteditChange(reg_t controlObject, reg_t eventObject) {  					cursorPos++; textChanged = true;  				}  				break; +			case 3:	// a bit odd, but this is what is returned when Control - C is pressed +				if (modifiers & SCI_KEYMOD_CTRL) { +					// Control-C erases the whole line +					cursorPos = 0; text.clear(); +					textChanged = true; +				} +				break;  			default:  				if (eventKey > 31 && eventKey < 256 && textSize < maxChars) {  					// insert pressed character | 
