diff --git a/src/laybasic/laybasic/NetlistBrowserPage.ui b/src/laybasic/laybasic/NetlistBrowserPage.ui
index 25de5ddbb..e4d982923 100644
--- a/src/laybasic/laybasic/NetlistBrowserPage.ui
+++ b/src/laybasic/laybasic/NetlistBrowserPage.ui
@@ -312,6 +312,14 @@
Export Selected Nets
+
+
+ Unselect All
+
+
+ Esc
+
+
@@ -359,5 +367,21 @@
+
+ actionUnselectAll
+ triggered()
+ directory_tree
+ clearSelection()
+
+
+ -1
+ -1
+
+
+ 324
+ 289
+
+
+
diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.cc b/src/laybasic/laybasic/layNetlistBrowserPage.cc
index 5c1c65a57..83151bb02 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.cc
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.cc
@@ -39,6 +39,7 @@
#include
#include
#include
+#include
namespace lay
{
@@ -101,9 +102,13 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/)
lay::ColorButton::build_color_menu (menu, this, SLOT (browse_color_for_net ()), SLOT (select_color_for_net ()));
color_action->setMenu (menu);
+ QAction *sep;
directory_tree->addAction (actionCollapseAll);
directory_tree->addAction (actionExpandAll);
- QAction *sep;
+ sep = new QAction (directory_tree);
+ sep->setSeparator (true);
+ directory_tree->addAction (sep);
+ directory_tree->addAction (actionUnselectAll);
sep = new QAction (directory_tree);
sep->setSeparator (true);
directory_tree->addAction (sep);
@@ -150,6 +155,8 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/)
forward->setEnabled (false);
backward->setEnabled (false);
+
+ directory_tree->installEventFilter (this);
}
NetlistBrowserPage::~NetlistBrowserPage ()
@@ -211,6 +218,26 @@ NetlistBrowserPage::set_max_shape_count (size_t max_shape_count)
}
}
+bool
+NetlistBrowserPage::eventFilter (QObject *watched, QEvent *event)
+{
+ if (watched != directory_tree) {
+ return false;
+ }
+
+ QKeyEvent *ke = dynamic_cast (event);
+ if (! ke || event->type () != QEvent::KeyPress) {
+ return false;
+ }
+
+ if (ke->key () == Qt::Key_Escape) {
+ directory_tree->clearSelection ();
+ return true;
+ } else {
+ return false;
+ }
+}
+
void
NetlistBrowserPage::layer_list_changed (int)
{
diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.h b/src/laybasic/laybasic/layNetlistBrowserPage.h
index 9a16250c3..b50e21255 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.h
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.h
@@ -154,6 +154,9 @@ private slots:
void browse_color_for_net ();
void select_color_for_net ();
+protected:
+ bool eventFilter (QObject *watched, QEvent *event);
+
private:
bool m_show_all;
QAction *m_show_all_action;