From 90693f9f67d60aa878d2a28e544891f3db346790 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Mon, 3 Apr 2017 00:01:32 +0200 Subject: [PATCH] Some enhancements on cell and layer search - Shortcuts are honored and have priority over search initiation. This is in particular important for "*". - "/" initiates search without yielding a "/" in the text edit box. --- src/laybasic/layHierarchyControlPanel.cc | 11 +++++++++-- src/laybasic/layLayerControlPanel.cc | 9 ++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/laybasic/layHierarchyControlPanel.cc b/src/laybasic/layHierarchyControlPanel.cc index c7ba03ad3..4f6331cd7 100644 --- a/src/laybasic/layHierarchyControlPanel.cc +++ b/src/laybasic/layHierarchyControlPanel.cc @@ -82,7 +82,9 @@ HCPCellTreeWidget::HCPCellTreeWidget (QWidget *parent, const char *name, QWidget bool HCPCellTreeWidget::event (QEvent *event) { - // Handling this event makes the widget receive all keystrokes +#if 0 + // Handling this event makes the widget receive all keystrokes. + // Without this code, shortcuts override the search function. if (event->type () == QEvent::ShortcutOverride) { QKeyEvent *ke = static_cast (event); QString t = ke->text (); @@ -90,6 +92,7 @@ HCPCellTreeWidget::event (QEvent *event) ke->accept (); } } +#endif return QTreeView::event (event); } @@ -103,7 +106,11 @@ void HCPCellTreeWidget::keyPressEvent (QKeyEvent *event) { QString t = event->text (); - if (!t.isEmpty () && t[0].isPrint ()) { + if (! t.isEmpty () && t[0].isPrint ()) { + // "/" is a search initiator + if (t == QString::fromUtf8 ("/")) { + t.clear (); + } emit search_triggered (t); } else if (mp_key_event_receiver) { // send other key events to the alternative receiver - this way we can make the diff --git a/src/laybasic/layLayerControlPanel.cc b/src/laybasic/layLayerControlPanel.cc index ba09a7da2..12a262152 100644 --- a/src/laybasic/layLayerControlPanel.cc +++ b/src/laybasic/layLayerControlPanel.cc @@ -155,7 +155,9 @@ LCPTreeWidget::focusNextPrevChild (bool /*next*/) bool LCPTreeWidget::event (QEvent *event) { - // Handling this event makes the widget receive all keystrokes +#if 0 + // Handling this event makes the widget receive all keystrokes. + // Without this code, shortcuts override the search function. if (event->type () == QEvent::ShortcutOverride) { QKeyEvent *ke = static_cast (event); QString t = ke->text (); @@ -163,6 +165,7 @@ LCPTreeWidget::event (QEvent *event) ke->accept (); } } +#endif return QTreeView::event (event); } @@ -171,6 +174,10 @@ LCPTreeWidget::keyPressEvent (QKeyEvent *event) { QString t = event->text (); if (!t.isEmpty () && t[0].isPrint ()) { + // "/" is a search initiator + if (t == QString::fromUtf8 ("/")) { + t.clear (); + } emit search_triggered (t); } else { QTreeView::keyPressEvent (event);