Просмотр исходного кода

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

Joachim Meyer 11 лет назад
Родитель
Сommit
8acb29da25

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

@@ -45,6 +45,7 @@ ExampleBrowserWindow::ExampleBrowserWindow() : UIWindow(L"Example Browser", 320,
 	templateContainer->getRootNode()->toggleCollapsed();
 	
 	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);
 	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;						
 			case InputEvent::EVENT_DOUBLECLICK:
-				dispatchEvent(new UITreeEvent(this), UITreeEvent::EXECUTED_EVENT);				
+				if (hasTreeChildren()){
+					toggleCollapsed();
+				} else {
+					dispatchEvent(new UITreeEvent(this), UITreeEvent::EXECUTED_EVENT);
+				}
 			break;
 			default:				
 			break;