Netlist browser: Esc now clears the selection rather than closing the browser window.

This commit is contained in:
Matthias Koefferlein 2019-05-04 22:09:23 +02:00
parent 6cf4df1cb1
commit 20eb53d626
3 changed files with 55 additions and 1 deletions

View File

@ -312,6 +312,14 @@
<string>Export Selected Nets</string> <string>Export Selected Nets</string>
</property> </property>
</action> </action>
<action name="actionUnselectAll">
<property name="text">
<string>Unselect All</string>
</property>
<property name="shortcut">
<string>Esc</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>
@ -359,5 +367,21 @@
</hint> </hint>
</hints> </hints>
</connection> </connection>
<connection>
<sender>actionUnselectAll</sender>
<signal>triggered()</signal>
<receiver>directory_tree</receiver>
<slot>clearSelection()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>324</x>
<y>289</y>
</hint>
</hints>
</connection>
</connections> </connections>
</ui> </ui>

View File

@ -39,6 +39,7 @@
#include <QPainter> #include <QPainter>
#include <QColorDialog> #include <QColorDialog>
#include <QRegExp> #include <QRegExp>
#include <QKeyEvent>
namespace lay 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 ())); lay::ColorButton::build_color_menu (menu, this, SLOT (browse_color_for_net ()), SLOT (select_color_for_net ()));
color_action->setMenu (menu); color_action->setMenu (menu);
QAction *sep;
directory_tree->addAction (actionCollapseAll); directory_tree->addAction (actionCollapseAll);
directory_tree->addAction (actionExpandAll); 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 = new QAction (directory_tree);
sep->setSeparator (true); sep->setSeparator (true);
directory_tree->addAction (sep); directory_tree->addAction (sep);
@ -150,6 +155,8 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/)
forward->setEnabled (false); forward->setEnabled (false);
backward->setEnabled (false); backward->setEnabled (false);
directory_tree->installEventFilter (this);
} }
NetlistBrowserPage::~NetlistBrowserPage () 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<QKeyEvent *> (event);
if (! ke || event->type () != QEvent::KeyPress) {
return false;
}
if (ke->key () == Qt::Key_Escape) {
directory_tree->clearSelection ();
return true;
} else {
return false;
}
}
void void
NetlistBrowserPage::layer_list_changed (int) NetlistBrowserPage::layer_list_changed (int)
{ {

View File

@ -154,6 +154,9 @@ private slots:
void browse_color_for_net (); void browse_color_for_net ();
void select_color_for_net (); void select_color_for_net ();
protected:
bool eventFilter (QObject *watched, QEvent *event);
private: private:
bool m_show_all; bool m_show_all;
QAction *m_show_all_action; QAction *m_show_all_action;