From 5904b19889d94d6a2f40bab4b9006d92091331f0 Mon Sep 17 00:00:00 2001 From: Martin Novysedlak Date: Fri, 20 Oct 2023 16:24:39 +0200 Subject: [PATCH 1/6] added logic and updated docs --- .../menus/disassembly-context-menu.rst | 10 ++++++-- src/widgets/DisassemblyWidget.cpp | 23 ++++++++----------- src/widgets/DisassemblyWidget.h | 8 +++---- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/docs/source/user-docs/menus/disassembly-context-menu.rst b/docs/source/user-docs/menus/disassembly-context-menu.rst index 15ced58d03..22346b4df1 100644 --- a/docs/source/user-docs/menus/disassembly-context-menu.rst +++ b/docs/source/user-docs/menus/disassembly-context-menu.rst @@ -13,9 +13,15 @@ Copy ---------------------------------------- **Description:** Copy the selected text. -**Steps:** Right-click on a selected text and choose ``Copy`` +**Steps:** Double click to select word or triple click to select line under cursor. -**Shortcut:** :kbd:`Ctrl` + :kbd:`C` +**Shortcut:** :kbd:`Ctrl` + :kbd:`C` + +Jump to address +---------------------------------------- +**Description** Jump to the address or function + +**Steps** Hold :kbd:`Ctrl` and double click Copy Address ---------------------------------------- diff --git a/src/widgets/DisassemblyWidget.cpp b/src/widgets/DisassemblyWidget.cpp index 946a2d357c..64e48ee0f4 100644 --- a/src/widgets/DisassemblyWidget.cpp +++ b/src/widgets/DisassemblyWidget.cpp @@ -105,8 +105,7 @@ DisassemblyWidget::DisassemblyWidget(MainWindow *main) QTextDocument *asm_docu = mDisasTextEdit->document(); asm_docu->setDocumentMargin(10); - // Event filter to intercept double clicks in the textbox - // and showing tooltips when hovering above those offsets + // Event filter to intercept showing tooltips when hovering above those offsets mDisasTextEdit->viewport()->installEventFilter(this); // Set Disas context menu @@ -627,19 +626,9 @@ void DisassemblyWidget::jumpToOffsetUnderCursor(const QTextCursor &cursor) bool DisassemblyWidget::eventFilter(QObject *obj, QEvent *event) { - if (event->type() == QEvent::MouseButtonDblClick - && (obj == mDisasTextEdit || obj == mDisasTextEdit->viewport())) { - QMouseEvent *mouseEvent = static_cast(event); - - if (mouseEvent->button() == Qt::LeftButton) { - const QTextCursor &cursor = mDisasTextEdit->cursorForPosition(mouseEvent->pos()); - jumpToOffsetUnderCursor(cursor); - - return true; - } - } else if ((Config()->getPreviewValue() || Config()->getShowVarTooltips()) + if ((Config()->getPreviewValue() || Config()->getShowVarTooltips()) && event->type() == QEvent::ToolTip && obj == mDisasTextEdit->viewport()) { - QHelpEvent *helpEvent = static_cast(event); + auto *helpEvent = dynamic_cast(event); auto cursorForWord = mDisasTextEdit->cursorForPosition(helpEvent->pos()); cursorForWord.select(QTextCursor::WordUnderCursor); @@ -791,6 +780,12 @@ void DisassemblyTextEdit::keyPressEvent(QKeyEvent *event) void DisassemblyTextEdit::mousePressEvent(QMouseEvent *event) { + if (event->button() == Qt::LeftButton && event->modifiers() & Qt::ControlModifier) { + if (mDisassemblyWidget) { + mDisassemblyWidget->jumpToOffsetUnderCursor(textCursor()); + } + } + QPlainTextEdit::mousePressEvent(event); if (event->button() == Qt::RightButton && !textCursor().hasSelection()) { diff --git a/src/widgets/DisassemblyWidget.h b/src/widgets/DisassemblyWidget.h index 8dadd4d4b3..845f1646e9 100644 --- a/src/widgets/DisassemblyWidget.h +++ b/src/widgets/DisassemblyWidget.h @@ -49,6 +49,7 @@ public slots: void setPreviewMode(bool previewMode); QFontMetrics getFontMetrics(); QList getLines(); + void jumpToOffsetUnderCursor(const QTextCursor &); protected slots: void on_seekChanged(RVA offset, CutterCore::SeekHistoryType type); @@ -101,8 +102,6 @@ protected slots: void connectCursorPositionChanged(bool disconnect); void moveCursorRelative(bool up, bool page); - - void jumpToOffsetUnderCursor(const QTextCursor &); }; class DisassemblyScrollArea : public QAbstractScrollArea @@ -128,8 +127,8 @@ class DisassemblyTextEdit : public QPlainTextEdit Q_OBJECT public: - explicit DisassemblyTextEdit(QWidget *parent = nullptr) - : QPlainTextEdit(parent), lockScroll(false) + explicit DisassemblyTextEdit(DisassemblyWidget *parent = nullptr) + : QPlainTextEdit(parent), lockScroll(false), mDisassemblyWidget(parent) { } @@ -145,6 +144,7 @@ class DisassemblyTextEdit : public QPlainTextEdit private: bool lockScroll; + DisassemblyWidget *mDisassemblyWidget; }; /** From ba9360d19ed0d341fbd6dfc2839bd9aa2be96ab1 Mon Sep 17 00:00:00 2001 From: Martin Novysedlak Date: Fri, 20 Oct 2023 16:49:39 +0200 Subject: [PATCH 2/6] formatting --- src/widgets/DisassemblyWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/DisassemblyWidget.cpp b/src/widgets/DisassemblyWidget.cpp index 64e48ee0f4..605a4af7a8 100644 --- a/src/widgets/DisassemblyWidget.cpp +++ b/src/widgets/DisassemblyWidget.cpp @@ -627,7 +627,7 @@ void DisassemblyWidget::jumpToOffsetUnderCursor(const QTextCursor &cursor) bool DisassemblyWidget::eventFilter(QObject *obj, QEvent *event) { if ((Config()->getPreviewValue() || Config()->getShowVarTooltips()) - && event->type() == QEvent::ToolTip && obj == mDisasTextEdit->viewport()) { + && event->type() == QEvent::ToolTip && obj == mDisasTextEdit->viewport()) { auto *helpEvent = dynamic_cast(event); auto cursorForWord = mDisasTextEdit->cursorForPosition(helpEvent->pos()); cursorForWord.select(QTextCursor::WordUnderCursor); From 065569612b858e26bb08d7d0b6a330fe6b3ebfba Mon Sep 17 00:00:00 2001 From: Martin Novysedlak Date: Tue, 7 Nov 2023 17:30:29 +0100 Subject: [PATCH 3/6] reverted code --- src/widgets/DisassemblyWidget.cpp | 25 +++++++++++++++---------- src/widgets/DisassemblyWidget.h | 8 ++++---- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/widgets/DisassemblyWidget.cpp b/src/widgets/DisassemblyWidget.cpp index 605a4af7a8..946a2d357c 100644 --- a/src/widgets/DisassemblyWidget.cpp +++ b/src/widgets/DisassemblyWidget.cpp @@ -105,7 +105,8 @@ DisassemblyWidget::DisassemblyWidget(MainWindow *main) QTextDocument *asm_docu = mDisasTextEdit->document(); asm_docu->setDocumentMargin(10); - // Event filter to intercept showing tooltips when hovering above those offsets + // Event filter to intercept double clicks in the textbox + // and showing tooltips when hovering above those offsets mDisasTextEdit->viewport()->installEventFilter(this); // Set Disas context menu @@ -626,9 +627,19 @@ void DisassemblyWidget::jumpToOffsetUnderCursor(const QTextCursor &cursor) bool DisassemblyWidget::eventFilter(QObject *obj, QEvent *event) { - if ((Config()->getPreviewValue() || Config()->getShowVarTooltips()) - && event->type() == QEvent::ToolTip && obj == mDisasTextEdit->viewport()) { - auto *helpEvent = dynamic_cast(event); + if (event->type() == QEvent::MouseButtonDblClick + && (obj == mDisasTextEdit || obj == mDisasTextEdit->viewport())) { + QMouseEvent *mouseEvent = static_cast(event); + + if (mouseEvent->button() == Qt::LeftButton) { + const QTextCursor &cursor = mDisasTextEdit->cursorForPosition(mouseEvent->pos()); + jumpToOffsetUnderCursor(cursor); + + return true; + } + } else if ((Config()->getPreviewValue() || Config()->getShowVarTooltips()) + && event->type() == QEvent::ToolTip && obj == mDisasTextEdit->viewport()) { + QHelpEvent *helpEvent = static_cast(event); auto cursorForWord = mDisasTextEdit->cursorForPosition(helpEvent->pos()); cursorForWord.select(QTextCursor::WordUnderCursor); @@ -780,12 +791,6 @@ void DisassemblyTextEdit::keyPressEvent(QKeyEvent *event) void DisassemblyTextEdit::mousePressEvent(QMouseEvent *event) { - if (event->button() == Qt::LeftButton && event->modifiers() & Qt::ControlModifier) { - if (mDisassemblyWidget) { - mDisassemblyWidget->jumpToOffsetUnderCursor(textCursor()); - } - } - QPlainTextEdit::mousePressEvent(event); if (event->button() == Qt::RightButton && !textCursor().hasSelection()) { diff --git a/src/widgets/DisassemblyWidget.h b/src/widgets/DisassemblyWidget.h index 845f1646e9..8dadd4d4b3 100644 --- a/src/widgets/DisassemblyWidget.h +++ b/src/widgets/DisassemblyWidget.h @@ -49,7 +49,6 @@ public slots: void setPreviewMode(bool previewMode); QFontMetrics getFontMetrics(); QList getLines(); - void jumpToOffsetUnderCursor(const QTextCursor &); protected slots: void on_seekChanged(RVA offset, CutterCore::SeekHistoryType type); @@ -102,6 +101,8 @@ protected slots: void connectCursorPositionChanged(bool disconnect); void moveCursorRelative(bool up, bool page); + + void jumpToOffsetUnderCursor(const QTextCursor &); }; class DisassemblyScrollArea : public QAbstractScrollArea @@ -127,8 +128,8 @@ class DisassemblyTextEdit : public QPlainTextEdit Q_OBJECT public: - explicit DisassemblyTextEdit(DisassemblyWidget *parent = nullptr) - : QPlainTextEdit(parent), lockScroll(false), mDisassemblyWidget(parent) + explicit DisassemblyTextEdit(QWidget *parent = nullptr) + : QPlainTextEdit(parent), lockScroll(false) { } @@ -144,7 +145,6 @@ class DisassemblyTextEdit : public QPlainTextEdit private: bool lockScroll; - DisassemblyWidget *mDisassemblyWidget; }; /** From b6116d4eedc1adef81988860014b32c27c12a195 Mon Sep 17 00:00:00 2001 From: Martin Novysedlak Date: Tue, 7 Nov 2023 18:30:08 +0100 Subject: [PATCH 4/6] started working --- src/widgets/DisassemblyWidget.cpp | 20 +++++++++++++++++++- src/widgets/DisassemblyWidget.h | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/widgets/DisassemblyWidget.cpp b/src/widgets/DisassemblyWidget.cpp index 946a2d357c..ff5e3dfd2f 100644 --- a/src/widgets/DisassemblyWidget.cpp +++ b/src/widgets/DisassemblyWidget.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -785,8 +786,25 @@ void DisassemblyTextEdit::scrollContentsBy(int dx, int dy) void DisassemblyTextEdit::keyPressEvent(QKeyEvent *event) { - Q_UNUSED(event) + qDebug() << "keypress"; +// Q_UNUSED(event) // QPlainTextEdit::keyPressEvent(event); +// if (event->matches(QKeySequence::Copy)) { + QString selectedText = this->textCursor().selectedText(); + QClipboard *clipboard = QApplication::clipboard(); + + auto parentDisassemblyWidget = dynamic_cast(this->parentWidget()); + + // Now check if the cast was successful to ensure the parent is indeed a DisassemblyWidget + if (parentDisassemblyWidget) { + // Call the getter to obtain the current highlighted word + QString highlightedWord = parentDisassemblyWidget->getCurrentHighlightedWord(); + + clipboard->setText(highlightedWord); + qDebug() << highlightedWord; + } +// } + } void DisassemblyTextEdit::mousePressEvent(QMouseEvent *event) diff --git a/src/widgets/DisassemblyWidget.h b/src/widgets/DisassemblyWidget.h index 8dadd4d4b3..7f01eea960 100644 --- a/src/widgets/DisassemblyWidget.h +++ b/src/widgets/DisassemblyWidget.h @@ -25,6 +25,7 @@ class DisassemblyWidget : public MemoryDockWidget public: explicit DisassemblyWidget(MainWindow *main); QWidget *getTextWidget(); + const QString& getCurrentHighlightedWord() const { return curHighlightedWord; } static QString getWidgetType(); From 925857fff3949f2785897ed26c75262623ab3edf Mon Sep 17 00:00:00 2001 From: Martin Novysedlak Date: Sat, 25 Nov 2023 17:07:00 +0100 Subject: [PATCH 5/6] added some work --- rizin | 2 +- src/menus/AddressableItemContextMenu.cpp | 10 +++++++ src/menus/AddressableItemContextMenu.h | 2 ++ src/menus/DisassemblyContextMenu.cpp | 30 ++++++++++++++------ src/menus/DisassemblyContextMenu.h | 6 ++-- src/widgets/DisassemblyWidget.cpp | 35 ++++++++++-------------- src/widgets/DisassemblyWidget.h | 1 + 7 files changed, 55 insertions(+), 31 deletions(-) diff --git a/rizin b/rizin index 71679b0800..d8332c50d7 160000 --- a/rizin +++ b/rizin @@ -1 +1 @@ -Subproject commit 71679b0800c657ad03fa374e989b2cd87433bd29 +Subproject commit d8332c50d708475f5a05b87fdd5e886b75dc4e7b diff --git a/src/menus/AddressableItemContextMenu.cpp b/src/menus/AddressableItemContextMenu.cpp index 8a1d3c7f7a..98e6bd7cb1 100644 --- a/src/menus/AddressableItemContextMenu.cpp +++ b/src/menus/AddressableItemContextMenu.cpp @@ -14,10 +14,13 @@ AddressableItemContextMenu::AddressableItemContextMenu(QWidget *parent, MainWind : QMenu(parent), mainWindow(mainWindow) { actionShowInMenu = new QAction(tr("Show in"), this); + actionCopyWord = new QAction(tr("Copy word"), this); actionCopyAddress = new QAction(tr("Copy address"), this); actionShowXrefs = new QAction(tr("Show X-Refs"), this); actionAddcomment = new QAction(tr("Add comment"), this); + connect(actionCopyWord, &QAction::triggered, this, &AddressableItemContextMenu::onActionCopyWord); + connect(actionCopyAddress, &QAction::triggered, this, &AddressableItemContextMenu::onActionCopyAddress); actionCopyAddress->setShortcuts({ Qt::CTRL | Qt::SHIFT | Qt::Key_C }); @@ -73,6 +76,13 @@ void AddressableItemContextMenu::clearTarget() setHasTarget(false); } +void AddressableItemContextMenu::onActionCopyWord() +{ + auto clipboard = QApplication::clipboard(); + qDebug() << "copy"; +// clipboard->setText() +} + void AddressableItemContextMenu::onActionCopyAddress() { auto clipboard = QApplication::clipboard(); diff --git a/src/menus/AddressableItemContextMenu.h b/src/menus/AddressableItemContextMenu.h index b8f4f965e2..31c2d76399 100644 --- a/src/menus/AddressableItemContextMenu.h +++ b/src/menus/AddressableItemContextMenu.h @@ -28,6 +28,7 @@ public slots: void xrefsTriggered(); private: + void onActionCopyWord(); void onActionCopyAddress(); void onActionShowXrefs(); void onActionAddComment(); @@ -44,6 +45,7 @@ public slots: protected: void setHasTarget(bool hasTarget); QAction *actionShowInMenu; + QAction *actionCopyWord; QAction *actionCopyAddress; QAction *actionShowXrefs; QAction *actionAddcomment; diff --git a/src/menus/DisassemblyContextMenu.cpp b/src/menus/DisassemblyContextMenu.cpp index 9879a16edc..68ffd52100 100644 --- a/src/menus/DisassemblyContextMenu.cpp +++ b/src/menus/DisassemblyContextMenu.cpp @@ -11,6 +11,7 @@ #include "dialogs/EditStringDialog.h" #include "dialogs/BreakpointsDialog.h" #include "MainWindow.h" +#include "DisassemblyWidget.h" #include #include @@ -23,13 +24,13 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *mainWindow) : QMenu(parent), offset(0), - canCopy(false), + canCopy(true), mainWindow(mainWindow), actionEditInstruction(this), actionNopInstruction(this), actionJmpReverse(this), actionEditBytes(this), - actionCopy(this), + actionCopyWord(this), actionCopyAddr(this), actionCopyInstrBytes(this), actionAddComment(this), @@ -70,8 +71,11 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main actionSetToDataQword(this), showInSubmenu(this) { - initAction(&actionCopy, tr("Copy"), SLOT(on_actionCopy_triggered()), getCopySequence()); - addAction(&actionCopy); +// initAction(&actionCopy, tr("Copy"), SLOT(on_actionCopy_triggered()), getCopySequence()); +// addAction(&actionCopy); +// + initAction(&actionCopyWord, tr("Copy Word"), SLOT(on_actionCopyWord_triggered()), getCopySequence()); + addAction(&actionCopyWord); initAction(&actionCopyAddr, tr("Copy address"), SLOT(on_actionCopyAddr_triggered()), getCopyAddressSequence()); @@ -578,8 +582,8 @@ void DisassemblyContextMenu::aboutToShowSlot() actionAddComment.setText(tr("Edit Comment")); } - actionCopy.setVisible(canCopy); - copySeparator->setVisible(canCopy); +// actionCopy.setVisible(canCopy); +// copySeparator->setVisible(canCopy); // Handle renaming of variable, function, flag, ... // Note: This might be useless if we consider setCurrentHighlightedWord is always called before @@ -792,9 +796,19 @@ void DisassemblyContextMenu::on_actionEditBytes_triggered() } } -void DisassemblyContextMenu::on_actionCopy_triggered() +//void DisassemblyContextMenu::on_actionCopy_triggered() +//{ +// emit copy(); +//} + +void DisassemblyContextMenu::on_actionCopyWord_triggered() { - emit copy(); + DisassemblyWidget* disassemblyWidget = dynamic_cast(parentWidget()); + if (disassemblyWidget != nullptr) { + const QString& text = disassemblyWidget->getCurrentHighlightedWord(); + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setText(text); + } } void DisassemblyContextMenu::on_actionCopyAddr_triggered() diff --git a/src/menus/DisassemblyContextMenu.h b/src/menus/DisassemblyContextMenu.h index 0cf9155614..0df0952b44 100644 --- a/src/menus/DisassemblyContextMenu.h +++ b/src/menus/DisassemblyContextMenu.h @@ -40,7 +40,8 @@ private slots: void on_actionEditBytes_triggered(); void showReverseJmpQuery(); - void on_actionCopy_triggered(); +// void on_actionCopy_triggered(); + void on_actionCopyWord_triggered(); void on_actionCopyAddr_triggered(); void on_actionCopyInstrBytes_triggered(); void on_actionAddComment_triggered(); @@ -110,7 +111,8 @@ private slots: QAction actionJmpReverse; QAction actionEditBytes; - QAction actionCopy; +// QAction actionCopy; + QAction actionCopyWord; QAction *copySeparator; QAction actionCopyAddr; QAction actionCopyInstrBytes; diff --git a/src/widgets/DisassemblyWidget.cpp b/src/widgets/DisassemblyWidget.cpp index ff5e3dfd2f..b456ab90c7 100644 --- a/src/widgets/DisassemblyWidget.cpp +++ b/src/widgets/DisassemblyWidget.cpp @@ -169,6 +169,8 @@ DisassemblyWidget::DisassemblyWidget(MainWindow *main) ADD_ACTION(Qt::Key_Escape, Qt::WidgetWithChildrenShortcut, &DisassemblyWidget::seekPrev) + ADD_ACTION(Qt::CopyAction, Qt::WidgetWithChildrenShortcut, &DisassemblyWidget::copyHighlightedWord) + ADD_ACTION(Qt::Key_J, Qt::WidgetWithChildrenShortcut, [this]() { moveCursorRelative(false, false); }) ADD_ACTION(QKeySequence::MoveToNextLine, Qt::WidgetWithChildrenShortcut, @@ -662,7 +664,14 @@ bool DisassemblyWidget::eventFilter(QObject *obj, QEvent *event) void DisassemblyWidget::keyPressEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Return) { + qDebug() << event->key(); + qDebug() << event->modifiers(); + if (event->key() == Qt::Key_C && (event->modifiers() & Qt::ControlModifier)) { + // If there is selected text in the text edit, copy it + if (!mDisasTextEdit->textCursor().selectedText().isEmpty()) { + mDisasTextEdit->copy(); + } + } else if (event->key() == Qt::Key_Return) { const QTextCursor cursor = mDisasTextEdit->textCursor(); jumpToOffsetUnderCursor(cursor); } @@ -786,25 +795,7 @@ void DisassemblyTextEdit::scrollContentsBy(int dx, int dy) void DisassemblyTextEdit::keyPressEvent(QKeyEvent *event) { - qDebug() << "keypress"; -// Q_UNUSED(event) - // QPlainTextEdit::keyPressEvent(event); -// if (event->matches(QKeySequence::Copy)) { - QString selectedText = this->textCursor().selectedText(); - QClipboard *clipboard = QApplication::clipboard(); - - auto parentDisassemblyWidget = dynamic_cast(this->parentWidget()); - - // Now check if the cast was successful to ensure the parent is indeed a DisassemblyWidget - if (parentDisassemblyWidget) { - // Call the getter to obtain the current highlighted word - QString highlightedWord = parentDisassemblyWidget->getCurrentHighlightedWord(); - - clipboard->setText(highlightedWord); - qDebug() << highlightedWord; - } -// } - + Q_UNUSED(event) } void DisassemblyTextEdit::mousePressEvent(QMouseEvent *event) @@ -821,6 +812,10 @@ void DisassemblyWidget::seekPrev() Core()->seekPrev(); } +void DisassemblyWidget::copyHighlightedWord() { + qDebug() << "success!"; +} + /********************* * Left panel *********************/ diff --git a/src/widgets/DisassemblyWidget.h b/src/widgets/DisassemblyWidget.h index 7f01eea960..f6a10b6bd9 100644 --- a/src/widgets/DisassemblyWidget.h +++ b/src/widgets/DisassemblyWidget.h @@ -104,6 +104,7 @@ protected slots: void moveCursorRelative(bool up, bool page); void jumpToOffsetUnderCursor(const QTextCursor &); + void copyHighlightedWord(); }; class DisassemblyScrollArea : public QAbstractScrollArea From 58dc2b0fbfcce0c3cfbb0d274acd35d4ff08257c Mon Sep 17 00:00:00 2001 From: Martin Novysedlak Date: Sat, 25 Nov 2023 18:00:58 +0100 Subject: [PATCH 6/6] added some work --- src/menus/AddressableItemContextMenu.cpp | 7 ------- src/menus/DisassemblyContextMenu.cpp | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/menus/AddressableItemContextMenu.cpp b/src/menus/AddressableItemContextMenu.cpp index 98e6bd7cb1..8552c9e758 100644 --- a/src/menus/AddressableItemContextMenu.cpp +++ b/src/menus/AddressableItemContextMenu.cpp @@ -76,13 +76,6 @@ void AddressableItemContextMenu::clearTarget() setHasTarget(false); } -void AddressableItemContextMenu::onActionCopyWord() -{ - auto clipboard = QApplication::clipboard(); - qDebug() << "copy"; -// clipboard->setText() -} - void AddressableItemContextMenu::onActionCopyAddress() { auto clipboard = QApplication::clipboard(); diff --git a/src/menus/DisassemblyContextMenu.cpp b/src/menus/DisassemblyContextMenu.cpp index 68ffd52100..148913fd73 100644 --- a/src/menus/DisassemblyContextMenu.cpp +++ b/src/menus/DisassemblyContextMenu.cpp @@ -74,7 +74,7 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main // initAction(&actionCopy, tr("Copy"), SLOT(on_actionCopy_triggered()), getCopySequence()); // addAction(&actionCopy); // - initAction(&actionCopyWord, tr("Copy Word"), SLOT(on_actionCopyWord_triggered()), getCopySequence()); + initAction(&actionCopyWord, tr("Copy word"), SLOT(on_actionCopyWord_triggered()), getCopySequence()); addAction(&actionCopyWord); initAction(&actionCopyAddr, tr("Copy address"), SLOT(on_actionCopyAddr_triggered()),