Bläddra i källkod

Fixed undo/redo

Ivan Safrin 13 år sedan
förälder
incheckning
3522705f07

+ 5 - 4
Core/Contents/Source/PolyCocoaCore.mm

@@ -378,15 +378,16 @@ bool CocoaCore::checkSpecialKeyEvents(PolyKEY key) {
 		return true;
 		return true;
 	}
 	}
 	
 	
-	if(key == KEY_z  && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
-		dispatchEvent(new Event(), Core::EVENT_UNDO);
-		return true;
-	}
 	
 	
 	if(key == KEY_z  && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER)) && (input->getKeyState(KEY_LSHIFT) || input->getKeyState(KEY_RSHIFT))) {
 	if(key == KEY_z  && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER)) && (input->getKeyState(KEY_LSHIFT) || input->getKeyState(KEY_RSHIFT))) {
 		dispatchEvent(new Event(), Core::EVENT_REDO);
 		dispatchEvent(new Event(), Core::EVENT_REDO);
 		return true;
 		return true;
 	}
 	}
+		
+	if(key == KEY_z  && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
+		dispatchEvent(new Event(), Core::EVENT_UNDO);
+		return true;
+	}
 	
 	
 	if(key == KEY_v && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
 	if(key == KEY_v && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
 		dispatchEvent(new Event(), Core::EVENT_PASTE);
 		dispatchEvent(new Event(), Core::EVENT_PASTE);

+ 7 - 1
Modules/Contents/UI/Source/PolyUITextInput.cpp

@@ -622,6 +622,10 @@ String UITextInput::getText() {
 }
 }
 
 
 void UITextInput::updateCaretPosition() {
 void UITextInput::updateCaretPosition() {
+
+	if(lineOffset > lines.size()-1)
+		lineOffset = lines.size()-1;
+
 	caretImagePosition = padding;
 	caretImagePosition = padding;
 	if(caretPosition == 0) {
 	if(caretPosition == 0) {
 		caretImagePosition = padding;
 		caretImagePosition = padding;
@@ -1011,6 +1015,8 @@ void UITextInput::setUndoState(UITextInputUndoState state) {
 	if(state.hasSelection) {
 	if(state.hasSelection) {
 		setSelection(lineOffset, state.selectionLine, caretPosition, state.selectionCaretPosition);
 		setSelection(lineOffset, state.selectionLine, caretPosition, state.selectionCaretPosition);
 	}
 	}
+	
+	showLine(state.lineOffset, false);
 }
 }
 
 
 void UITextInput::Undo() {
 void UITextInput::Undo() {
@@ -1383,7 +1389,7 @@ void UITextInput::readjustBuffer() {
 		
 		
 void UITextInput::handleEvent(Event *event) {
 void UITextInput::handleEvent(Event *event) {
 
 
-	if(event->getDispatcher() == core) {
+	if(event->getDispatcher() == core && hasFocus) {
 		switch(event->getEventCode()) {
 		switch(event->getEventCode()) {
 			case Core::EVENT_UNDO:
 			case Core::EVENT_UNDO:
 				Undo();
 				Undo();