From 6ff9ab9f54034a14f8c7ae2103805cbd4fc2d019 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 23 May 2021 10:16:39 +1000 Subject: [PATCH] menu: added hidden secondary delete option to pick up backspace shortcut --- app/widget/menu/menushared.h | 10 ++++++++-- app/window/mainwindow/mainmenu.cpp | 22 ++++++++++++++++++++++ app/window/mainwindow/mainmenu.h | 7 +++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/app/widget/menu/menushared.h b/app/widget/menu/menushared.h index 36628385a..34d2cecb4 100644 --- a/app/widget/menu/menushared.h +++ b/app/widget/menu/menushared.h @@ -52,6 +52,14 @@ public: static MenuShared* instance(); + QAction* edit_delete_item() + { + return edit_delete_item_; + } + +public slots: + void DeleteSelectedTriggered(); + private: // "New" menu shared items QAction* new_project_item_; @@ -97,8 +105,6 @@ private: private slots: void SplitAtPlayheadTriggered(); - void DeleteSelectedTriggered(); - void RippleDeleteTriggered(); void SetInTriggered(); diff --git a/app/window/mainwindow/mainmenu.cpp b/app/window/mainwindow/mainmenu.cpp index 2e273dcff..ede11462d 100644 --- a/app/window/mainwindow/mainmenu.cpp +++ b/app/window/mainwindow/mainmenu.cpp @@ -73,6 +73,9 @@ MainMenu::MainMenu(MainWindow *parent) : // edit_menu_ = new Menu(this); + connect(edit_menu_, &Menu::aboutToShow, this, &MainMenu::EditMenuAboutToShow); + connect(edit_menu_, &Menu::aboutToHide, this, &MainMenu::EditMenuAboutToHide); + edit_undo_item_ = Core::instance()->undo_stack()->GetUndoAction(); Menu::ConformItem(edit_undo_item_, "undo", "Ctrl+Z"); edit_menu_->addAction(edit_undo_item_); @@ -82,6 +85,14 @@ MainMenu::MainMenu(MainWindow *parent) : edit_menu_->addSeparator(); MenuShared::instance()->AddItemsForEditMenu(edit_menu_, true); + { + // Create "alternate delete" action so we can pick up backspace as well as delete while still + // keeping them configurable + edit_delete2_item_ = new QAction(); + Menu::ConformItem(edit_delete2_item_, "delete2", MenuShared::instance(), &MenuShared::DeleteSelectedTriggered, "Backspace"); + auto actions = edit_menu_->actions(); + edit_menu_->insertAction(actions.at(actions.indexOf(MenuShared::instance()->edit_delete_item()) + 1), edit_delete2_item_); + } edit_menu_->addSeparator(); edit_select_all_item_ = edit_menu_->AddItem("selectall", this, &MainMenu::SelectAllTriggered, "Ctrl+A"); edit_deselect_all_item_ = edit_menu_->AddItem("deselectall", this, &MainMenu::DeselectAllTriggered, "Ctrl+Shift+A"); @@ -298,6 +309,16 @@ void MainMenu::FileMenuAboutToShow() } } +void MainMenu::EditMenuAboutToShow() +{ + edit_delete2_item_->setVisible(false); +} + +void MainMenu::EditMenuAboutToHide() +{ + edit_delete2_item_->setVisible(true); +} + void MainMenu::ViewMenuAboutToShow() { // Parent is QMainWindow @@ -620,6 +641,7 @@ void MainMenu::Retranslate() edit_menu_->setTitle(tr("&Edit")); //edit_undo_item_->setText(tr("&Undo")); FIXME: Does Qt translate these automatically? //edit_redo_item_->setText(tr("Redo")); + edit_delete2_item_->setText(tr("Delete (alt)")); edit_insert_item_->setText(tr("Insert")); edit_overwrite_item_->setText(tr("Overwrite")); edit_select_all_item_->setText(tr("Select &All")); diff --git a/app/window/mainwindow/mainmenu.h b/app/window/mainwindow/mainmenu.h index d0444bbaf..82277344b 100644 --- a/app/window/mainwindow/mainmenu.h +++ b/app/window/mainwindow/mainmenu.h @@ -66,6 +66,12 @@ private slots: */ void FileMenuAboutToShow(); + /** + * @brief Slot triggered just before the Edit menu shows + */ + void EditMenuAboutToShow(); + void EditMenuAboutToHide(); + /** * @brief Slot triggered just before the View menu shows */ @@ -202,6 +208,7 @@ private: Menu* edit_menu_; QAction* edit_undo_item_; QAction* edit_redo_item_; + QAction* edit_delete2_item_; QAction* edit_select_all_item_; QAction* edit_deselect_all_item_; QAction* edit_insert_item_;