Переглянути джерело

UITree nodes with children will now toggleCollapsed when doubleclicked. When you doubleclick in the ExampleBrowser an example it will open automatically.

Joachim Meyer 11 роки тому
батько
коміт
8acb29da25

+ 16 - 6
IDE/Contents/Source/ExampleBrowserWindow.cpp

@@ -45,6 +45,7 @@ ExampleBrowserWindow::ExampleBrowserWindow() : UIWindow(L"Example Browser", 320,
 	templateContainer->getRootNode()->toggleCollapsed();
 	templateContainer->getRootNode()->toggleCollapsed();
 	
 	
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
+	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::EXECUTED_EVENT);
 	
 	
 	vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"Standalone/Examples/Lua", false);
 	vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"Standalone/Examples/Lua", false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
@@ -104,12 +105,21 @@ void ExampleBrowserWindow::handleEvent(Event *event) {
 		}
 		}
 	}
 	}
 	
 	
-	if(event->getEventType() == "UITreeEvent" && event->getEventCode() == UITreeEvent::SELECTED_EVENT) {
-		if(event->getDispatcher() == templateContainer->getRootNode()) {
-			UITreeEvent *treeEvent = (UITreeEvent*) event;
-			ExampleTemplateUserData *data = (ExampleTemplateUserData *)treeEvent->selection->getUserData();
-			if(data->type == 1)
-				templateFolder = data->templateFolder;
+	if(event->getEventType() == "UITreeEvent") {
+		if (event->getDispatcher() == templateContainer->getRootNode()) {
+			UITreeEvent *treeEvent = (UITreeEvent*)event;
+			if (event->getEventCode() == UITreeEvent::SELECTED_EVENT){
+				ExampleTemplateUserData *data = (ExampleTemplateUserData *)treeEvent->selection->getUserData();
+				if (data->type == 1)
+					templateFolder = data->templateFolder;
+			}
+			if (event->getEventCode() == UITreeEvent::EXECUTED_EVENT){
+				UITree *node = treeEvent->selection;
+				if (node) {
+					ExampleTemplateUserData *data = (ExampleTemplateUserData*)node->getUserData();
+					dispatchEvent(new UIEvent(), UIEvent::OK_EVENT);
+				}
+			}
 		}
 		}
 	}
 	}
 	
 	

+ 5 - 1
Modules/Contents/UI/Source/PolyUITree.cpp

@@ -196,7 +196,11 @@ void UITree::handleEvent(Event *event) {
 				}
 				}
 			break;						
 			break;						
 			case InputEvent::EVENT_DOUBLECLICK:
 			case InputEvent::EVENT_DOUBLECLICK:
-				dispatchEvent(new UITreeEvent(this), UITreeEvent::EXECUTED_EVENT);				
+				if (hasTreeChildren()){
+					toggleCollapsed();
+				} else {
+					dispatchEvent(new UITreeEvent(this), UITreeEvent::EXECUTED_EVENT);
+				}
 			break;
 			break;
 			default:				
 			default:				
 			break;
 			break;