Przeglądaj źródła

Fixes that if you clicked twice on an asset in the AssetBrowser, it would be viually deselected. You now can choose assets by doubleclicking them in the browser.

Joachim Meyer 11 lat temu
rodzic
commit
ad815096a0
1 zmienionych plików z 19 dodań i 9 usunięć
  1. 19 9
      IDE/Contents/Source/TextureBrowser.cpp

+ 19 - 9
IDE/Contents/Source/TextureBrowser.cpp

@@ -215,6 +215,7 @@ void AssetList::showFolder(String folderPath) {
 			if(hasExtension(entry.extension)) {
 			if(hasExtension(entry.extension)) {
 				AssetEntry *newEntry = new AssetEntry(entry.fullPath, entry.name, entry.extension, NULL);
 				AssetEntry *newEntry = new AssetEntry(entry.fullPath, entry.name, entry.extension, NULL);
 				newEntry->selectShape->addEventListener(this, InputEvent::EVENT_MOUSEDOWN);
 				newEntry->selectShape->addEventListener(this, InputEvent::EVENT_MOUSEDOWN);
+				newEntry->selectShape->addEventListener(this, InputEvent::EVENT_DOUBLECLICK);
 				assetEntries.push_back(newEntry);
 				assetEntries.push_back(newEntry);
 				newEntry->setPosition(xPos, yPos);
 				newEntry->setPosition(xPos, yPos);
 				xPos += 120;
 				xPos += 120;
@@ -244,14 +245,19 @@ void AssetList::handleEvent(Event *event) {
 		showFolder(currentFolderPath);
 		showFolder(currentFolderPath);
 	} else {
 	} else {
 		for(int i=0; i < assetEntries.size(); i++) {
 		for(int i=0; i < assetEntries.size(); i++) {
-			if(event->getDispatcher() == assetEntries[i]->selectShape && event->getEventCode() == InputEvent::EVENT_MOUSEDOWN) {
-				assetEntries[i]->selectShape->visible = true;
-				selectedPath = assetEntries[i]->assetPath;
-				if(currentEntry) {
-					currentEntry->selectShape->visible = false;
+			if (event->getDispatcher() == assetEntries[i]->selectShape) {
+				if (event->getEventCode() == InputEvent::EVENT_MOUSEDOWN){
+					if (currentEntry) {
+						currentEntry->selectShape->visible = false;
+					}
+					assetEntries[i]->selectShape->visible = true;
+					selectedPath = assetEntries[i]->assetPath;
+					currentEntry = assetEntries[i];
+					selectedResource = assetEntries[i]->resource;
+				}
+				if (event->getEventCode() == InputEvent::EVENT_DOUBLECLICK){
+					dispatchEvent(new UIEvent(), UIEvent::OK_EVENT);
 				}
 				}
-				currentEntry = assetEntries[i];
-                selectedResource = assetEntries[i]->resource;
 			}
 			}
 		}
 		}
 	}
 	}
@@ -281,9 +287,10 @@ AssetBrowser::AssetBrowser() : UIWindow(L"Asset Browser", 850, 500) {
 	
 	
 		
 		
 	assetList = new AssetList();
 	assetList = new AssetList();
-	
+	assetList->addEventListener(this, UIEvent::OK_EVENT);
+
 	listContainer = new UIScrollContainer(assetList, false, true, 640, 480-topPadding-padding-padding);
 	listContainer = new UIScrollContainer(assetList, false, true, 640, 480-topPadding-padding-padding);
-	listContainer->setPosition(220,topPadding+padding);		
+	listContainer->setPosition(220,topPadding+padding);
 	addChild(listContainer);
 	addChild(listContainer);
 
 
 	cancelButton = new UIButton(L"Cancel", 100);
 	cancelButton = new UIButton(L"Cancel", 100);
@@ -409,6 +416,9 @@ void AssetBrowser::handleEvent(Event *event) {
                 removeAllHandlers();
                 removeAllHandlers();
 			}									
 			}									
 		}
 		}
+		if (event->getEventCode() == UIEvent::OK_EVENT){
+			dispatchEvent(new UIEvent(), UIEvent::OK_EVENT);
+		}
 	}
 	}
 	
 	
 	if(event->getEventType() == "UITreeEvent" && event->getEventCode() == UITreeEvent::SELECTED_EVENT) {
 	if(event->getEventType() == "UITreeEvent" && event->getEventCode() == UITreeEvent::SELECTED_EVENT) {