Ver Fonte

Arrow-key nav no longer opens files in PolycodeProjectBrowser as a side-effect -- use the enter key, right arrow key, or single-click mouse.

Ethan M há 12 anos atrás
pai
commit
3eb424e4da
1 ficheiros alterados com 19 adições e 3 exclusões
  1. 19 3
      IDE/Contents/Source/PolycodeIDEApp.cpp

+ 19 - 3
IDE/Contents/Source/PolycodeIDEApp.cpp

@@ -183,6 +183,8 @@ PolycodeIDEApp::PolycodeIDEApp(PolycodeView *view) : EventDispatcher() {
 
 
 	needsRedraw = false;
 	needsRedraw = false;
 	lastConnected = false;
 	lastConnected = false;
+	
+	CoreServices::getInstance()->getCore()->getInput()->addEventListener(this, InputEvent::EVENT_KEYDOWN);
 }
 }
 
 
 void PolycodeIDEApp::renameFile() {
 void PolycodeIDEApp::renameFile() {
@@ -591,7 +593,8 @@ void PolycodeIDEApp::handleEvent(Event *event) {
 		}
 		}
 		
 		
 		if(event->getEventCode() == Event::CHANGE_EVENT) {
 		if(event->getEventCode() == Event::CHANGE_EVENT) {
-			BrowserUserData *selectedData = frame->getProjectBrowser()->getSelectedData();
+			PolycodeProjectBrowser *pb = frame->getProjectBrowser();
+			BrowserUserData *selectedData = pb->getSelectedData();
 						
 						
 			if(selectedData->type == 3) {
 			if(selectedData->type == 3) {
 				projectManager->activeFolder = selectedData->parentProject->getRootFolder();
 				projectManager->activeFolder = selectedData->parentProject->getRootFolder();
@@ -614,7 +617,8 @@ void PolycodeIDEApp::handleEvent(Event *event) {
 			if(selectedData->type == 0)
 			if(selectedData->type == 0)
 				return;			
 				return;			
 			
 			
-			if(selectedData) {
+			// don't open the editor if the selection was made by UITreeContainer arrow-key navigation
+			if (selectedData && pb->treeContainer->getRootNode()->getSelectedNode()->isSelectedByKey() == false) {
 				openFile(selectedData->fileEntry);
 				openFile(selectedData->fileEntry);
 			}
 			}
 		}
 		}
@@ -766,7 +770,19 @@ void PolycodeIDEApp::handleEvent(Event *event) {
 			
 			
 			frame->hideModal();			
 			frame->hideModal();			
 		}
 		}
-	}	
+	}
+	
+	// open an editor/file if project browser has focus and user hits enter or right-arrow key
+	if (event->getDispatcher() == CoreServices::getInstance()->getCore()->getInput()) {
+		if (event->getEventCode() == InputEvent::EVENT_KEYDOWN && frame->getProjectBrowser()->treeContainer->hasFocus) {
+			InputEvent *inEvent = (InputEvent*)event;
+			if (inEvent->keyCode() == KEY_RETURN || inEvent->keyCode() == KEY_RIGHT) {
+				BrowserUserData *selectedData = frame->getProjectBrowser()->getSelectedData();
+				if (selectedData)
+					openFile(selectedData->fileEntry);
+			}
+		}
+	}
 }
 }
 
 
 void PolycodeIDEApp::saveConfigFile() {
 void PolycodeIDEApp::saveConfigFile() {