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;