Jelajahi Sumber

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 tahun lalu
induk
melakukan
ad815096a0
1 mengubah file dengan 19 tambahan dan 9 penghapusan
  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)) {
 				AssetEntry *newEntry = new AssetEntry(entry.fullPath, entry.name, entry.extension, NULL);
 				newEntry->selectShape->addEventListener(this, InputEvent::EVENT_MOUSEDOWN);
+				newEntry->selectShape->addEventListener(this, InputEvent::EVENT_DOUBLECLICK);
 				assetEntries.push_back(newEntry);
 				newEntry->setPosition(xPos, yPos);
 				xPos += 120;
@@ -244,14 +245,19 @@ void AssetList::handleEvent(Event *event) {
 		showFolder(currentFolderPath);
 	} else {
 		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->addEventListener(this, UIEvent::OK_EVENT);
+
 	listContainer = new UIScrollContainer(assetList, false, true, 640, 480-topPadding-padding-padding);
-	listContainer->setPosition(220,topPadding+padding);		
+	listContainer->setPosition(220,topPadding+padding);
 	addChild(listContainer);
 
 	cancelButton = new UIButton(L"Cancel", 100);
@@ -409,6 +416,9 @@ void AssetBrowser::handleEvent(Event *event) {
                 removeAllHandlers();
 			}									
 		}
+		if (event->getEventCode() == UIEvent::OK_EVENT){
+			dispatchEvent(new UIEvent(), UIEvent::OK_EVENT);
+		}
 	}
 	
 	if(event->getEventType() == "UITreeEvent" && event->getEventCode() == UITreeEvent::SELECTED_EVENT) {