X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Fheader.cpp;h=7be491a9d73a9a59d38a126036c7decbcb7b323f;hb=14ca8a8deb6fe6d96567aa11a669dce68af67885;hp=91a6ecfddc3415288ab2f9e0f6fd45305ec4c07a;hpb=73ba2d70ce244f3582045498ace31f54485c316f;p=pulseview.git diff --git a/pv/view/header.cpp b/pv/view/header.cpp index 91a6ecfd..7be491a9 100644 --- a/pv/view/header.cpp +++ b/pv/view/header.cpp @@ -39,6 +39,7 @@ #include using boost::make_filter_iterator; +using std::dynamic_pointer_cast; using std::max; using std::make_pair; using std::min; @@ -298,16 +299,16 @@ void Header::keyPressEvent(QKeyEvent *e) { assert(e); - switch (e->key()) - { - case Qt::Key_Delete: + if (e->key() == Qt::Key_Delete) { for (const shared_ptr r : _view) if (r->selected()) r->delete_pressed(); - break; - } } + else if (e->key() == Qt::Key_G && e->modifiers() == Qt::ControlModifier) + on_group(); + else if (e->key() == Qt::Key_U && e->modifiers() == Qt::ControlModifier) + on_ungroup(); } void Header::on_signals_moved() @@ -348,5 +349,22 @@ void Header::on_group() } } +void Header::on_ungroup() +{ + bool restart; + do { + restart = false; + for (const shared_ptr r : _view) { + const shared_ptr tg = + dynamic_pointer_cast(r); + if (tg && tg->selected()) { + tg->ungroup(); + restart = true; + break; + } + } + } while(restart); +} + } // namespace view } // namespace pv