]> sigrok.org Git - pulseview.git/blobdiff - pv/mainwindow.cpp
Fix typo
[pulseview.git] / pv / mainwindow.cpp
index d04759cfe380d0920c2408ba10aaeaea065b0eb5..e79b045945c1b255c18826ce9ee77723adfbd949 100644 (file)
@@ -514,9 +514,19 @@ void MainWindow::setup_ui()
        zoom_in_shortcut_ = new QShortcut(QKeySequence(Qt::Key_Plus), this, SLOT(on_zoom_in_shortcut_triggered()));
        zoom_in_shortcut_->setAutoRepeat(false);
 
+       zoom_in_shortcut_2_ = new QShortcut(QKeySequence(Qt::Key_Up), this, SLOT(on_zoom_in_shortcut_triggered()));
+
        zoom_out_shortcut_ = new QShortcut(QKeySequence(Qt::Key_Minus), this, SLOT(on_zoom_out_shortcut_triggered()));
        zoom_out_shortcut_->setAutoRepeat(false);
 
+       zoom_out_shortcut_2_ = new QShortcut(QKeySequence(Qt::Key_Down), this, SLOT(on_zoom_out_shortcut_triggered()));
+
+       home_shortcut_ = new QShortcut(QKeySequence(Qt::Key_Home), this, SLOT(on_scroll_to_start_triggered()));
+       home_shortcut_->setAutoRepeat(false);
+
+       end_shortcut_ = new QShortcut(QKeySequence(Qt::Key_End), this, SLOT(on_scroll_to_end_triggered()));
+       end_shortcut_->setAutoRepeat(false);
+
        // Set up the tab area
        new_session_button_ = new QToolButton();
        new_session_button_->setIcon(QIcon::fromTheme("document-new",
@@ -860,7 +870,10 @@ void MainWindow::on_show_decoder_selector(Session *session)
        // Close dock widget if it's already showing and return
        for (auto entry : sub_windows_) {
                QDockWidget* dock = entry.first;
-               if (dynamic_pointer_cast<subwindows::decoder_selector::SubWindow>(entry.second)) {
+               shared_ptr<subwindows::SubWindowBase> decoder_selector =
+                       dynamic_pointer_cast<subwindows::decoder_selector::SubWindow>(entry.second);
+
+               if (decoder_selector && (&decoder_selector->session() == session)) {
                        sub_windows_.erase(dock);
                        dock->close();
                        return;
@@ -978,6 +991,29 @@ void MainWindow::on_zoom_in_shortcut_triggered()
        zoom_current_view(1);
 }
 
+void MainWindow::on_scroll_to_start_triggered()
+{
+       scroll_to_start_or_end(true);
+}
+
+void MainWindow::on_scroll_to_end_triggered()
+{
+       scroll_to_start_or_end(false);
+}
+
+void MainWindow::scroll_to_start_or_end(bool start)
+{
+       shared_ptr<Session> session = get_tab_session(session_selector_.currentIndex());
+
+       if (!session)
+               return;
+
+       shared_ptr<views::ViewBase> v = session.get()->main_view();
+       views::trace::View *tv =
+               qobject_cast<views::trace::View*>(v.get());
+       tv->set_h_offset(start ? 0 : tv->get_h_scrollbar_maximum());
+}
+
 void MainWindow::on_close_current_tab()
 {
        int tab = session_selector_.currentIndex();