From 2e4ddea65bca9c86e349372a367fc22f197fec1d Mon Sep 17 00:00:00 2001 From: Lioncache Date: Tue, 2 Dec 2025 19:44:33 -0500 Subject: [PATCH] CResourceBrowser: Allow navigating directories with the Enter keys Previously the resource browser required you to double click on everything in order to interact with it (going into directories, or launching handlers for particular files, etc). This is kinda stinky workflow-wise long-term when flipping between assets; so we can make the interface a little less mouse-centric by allowing the use of the enter keys to also perform the same behavior. --- .../ResourceBrowser/CResourceBrowser.cpp | 33 +++++++++++++++++++ src/Editor/ResourceBrowser/CResourceBrowser.h | 1 + 2 files changed, 34 insertions(+) diff --git a/src/Editor/ResourceBrowser/CResourceBrowser.cpp b/src/Editor/ResourceBrowser/CResourceBrowser.cpp index 6006b0c9..b18b3caa 100644 --- a/src/Editor/ResourceBrowser/CResourceBrowser.cpp +++ b/src/Editor/ResourceBrowser/CResourceBrowser.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -518,6 +519,38 @@ bool CResourceBrowser::eventFilter(QObject *pWatched, QEvent *pEvent) return false; } +void CResourceBrowser::keyPressEvent(QKeyEvent* event) +{ + // If we don't have focus for one reason or another, then + // don't do anything. It's unintuitive to listen on key + // inputs when a control isn't in focus. + const auto* resource_view = mpUI->ResourceTableView; + if (!resource_view->hasFocus()) + { + event->ignore(); + return; + } + + // We only want to handle directory drilldown and returning if only one item is selected. + const auto indexes = resource_view->selectionModel()->selectedIndexes(); + if (indexes.empty() || indexes.size() > 1) + { + event->ignore(); + return; + } + + const auto key = event->key(); + if (key == Qt::Key_Return || key == Qt::Key_Enter) + { + OnDoubleClickTable(indexes.front()); + } + else + { + // Pass down for any alternative handling + event->ignore(); + } +} + void CResourceBrowser::RefreshResources() { // Fill resource table diff --git a/src/Editor/ResourceBrowser/CResourceBrowser.h b/src/Editor/ResourceBrowser/CResourceBrowser.h index 35656ff8..55eb2919 100644 --- a/src/Editor/ResourceBrowser/CResourceBrowser.h +++ b/src/Editor/ResourceBrowser/CResourceBrowser.h @@ -81,6 +81,7 @@ public: // Interface bool eventFilter(QObject* pWatched, QEvent* pEvent) override; + void keyPressEvent(QKeyEvent* event) override; // Accessors CResourceStore* CurrentStore() const { return mpStore; }