From d2ac7d73f7be14e7ea8c4e84ab419690bfbf40f0 Mon Sep 17 00:00:00 2001 From: Anton Kochkov Date: Thu, 4 May 2023 16:49:03 +0800 Subject: [PATCH 1/8] Update Rizin to 0.5.2 --- rizin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rizin b/rizin index 12898a365..e2646b53b 160000 --- a/rizin +++ b/rizin @@ -1 +1 @@ -Subproject commit 12898a365e70c22892d78abdd2627e7269533c5f +Subproject commit e2646b53b0f1aba8202f98b22d345ae73ad0e35f From a7895078a389ea2f92785e5dd31ca977d4638068 Mon Sep 17 00:00:00 2001 From: xarkes Date: Thu, 4 May 2023 06:13:57 +0200 Subject: [PATCH 2/8] Update MapFileDialog.cpp (#3165) --- src/dialogs/MapFileDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dialogs/MapFileDialog.cpp b/src/dialogs/MapFileDialog.cpp index dfcd26473..24cbbf7ab 100644 --- a/src/dialogs/MapFileDialog.cpp +++ b/src/dialogs/MapFileDialog.cpp @@ -33,7 +33,7 @@ void MapFileDialog::on_buttonBox_accepted() } if (!Core()->mapFile(filePath, mapAddress)) { - QMessageBox::critical(this, tr("Map new file file"), tr("Failed to map a new file")); + QMessageBox::critical(this, tr("Map new file"), tr("Failed to map a new file")); return; } close(); From 7457e9c9805ef95d6983f452ad41d399219ed1bd Mon Sep 17 00:00:00 2001 From: xarkes Date: Thu, 4 May 2023 06:14:13 +0200 Subject: [PATCH 3/8] Update IOModesController.cpp (#3166) --- src/common/IOModesController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/IOModesController.cpp b/src/common/IOModesController.cpp index 26f0801fe..a3ba1edc1 100644 --- a/src/common/IOModesController.cpp +++ b/src/common/IOModesController.cpp @@ -91,7 +91,7 @@ bool IOModesController::askCommitUnsavedChanges() // Check if there are uncommitted changes if (!allChangesComitted()) { QMessageBox::StandardButton ret = QMessageBox::question( - NULL, QObject::tr("Uncomitted changes"), + NULL, QObject::tr("Uncommitted changes"), QObject::tr("It seems that you have changes or patches that are not committed to " "the file.\n" "Do you want to commit them now?"), From 4e0d12b54e58140b97e07e37e33bba3a71fad24b Mon Sep 17 00:00:00 2001 From: Anton Kochkov Date: Thu, 4 May 2023 16:51:34 +0800 Subject: [PATCH 4/8] Update Japanese, Spanish, Ukranian translations (#3167) --- src/translations | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/translations b/src/translations index 41c0c778b..433de8859 160000 --- a/src/translations +++ b/src/translations @@ -1 +1 @@ -Subproject commit 41c0c778b942577749ea2fed117e48a2cf3892df +Subproject commit 433de8859d1b1853b52e2e82cf75786d09943efb From e72bad0bbb871e08ab59300ac6e7ec4b365b6bc5 Mon Sep 17 00:00:00 2001 From: Giovanni <561184+wargio@users.noreply.github.com> Date: Thu, 11 May 2023 13:44:33 +0800 Subject: [PATCH 5/8] Fix 'Rizin Graph' widget (#3179) --- src/widgets/RizinGraphWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/RizinGraphWidget.cpp b/src/widgets/RizinGraphWidget.cpp index 346cf0127..b228e4a47 100644 --- a/src/widgets/RizinGraphWidget.cpp +++ b/src/widgets/RizinGraphWidget.cpp @@ -96,7 +96,7 @@ void GenericRizinGraphView::loadCurrentGraph() return; } - CutterJson functionsDoc = Core()->cmdj(QString("%1j").arg(graphCommand)); + CutterJson functionsDoc = Core()->cmdj(QString("%1 json").arg(graphCommand)); auto nodes = functionsDoc["nodes"]; for (CutterJson block : nodes) { From 9bcc8ed8a30d4be9f5e05fbccbe8ef8313237540 Mon Sep 17 00:00:00 2001 From: Anton Kochkov Date: Fri, 12 May 2023 14:48:27 +0800 Subject: [PATCH 6/8] Update Hindi, French, Russian translations (#3182) --- src/translations | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/translations b/src/translations index 433de8859..e8fc5ca1a 160000 --- a/src/translations +++ b/src/translations @@ -1 +1 @@ -Subproject commit 433de8859d1b1853b52e2e82cf75786d09943efb +Subproject commit e8fc5ca1acd70fd82a2ac9ac02b0261e57703250 From 79b25b2a3191d1419508ab4d04e3d2d6282ce187 Mon Sep 17 00:00:00 2001 From: Giovanni <561184+wargio@users.noreply.github.com> Date: Sat, 13 May 2023 10:22:05 +0800 Subject: [PATCH 7/8] Fix broken English in UI (#3184) --- src/common/Configuration.cpp | 4 ++-- src/common/DisassemblyPreview.cpp | 7 ------- src/dialogs/InitialOptionsDialog.ui | 2 +- src/dialogs/NewFileDialog.cpp | 2 +- src/dialogs/preferences/AsmOptionsWidget.ui | 4 ++-- src/menus/DisassemblyContextMenu.cpp | 2 +- src/widgets/ColorThemeListView.cpp | 3 +-- src/widgets/HexWidget.cpp | 4 ++-- 8 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/common/Configuration.cpp b/src/common/Configuration.cpp index 7fc767151..12af053f1 100644 --- a/src/common/Configuration.cpp +++ b/src/common/Configuration.cpp @@ -143,8 +143,8 @@ Configuration::Configuration() : QObject(), nativePalette(qApp->palette()) mPtr = this; if (!s.isWritable()) { QMessageBox::critical( - nullptr, tr("Critical!"), - tr("!!! Settings are not writable! Make sure you have a write access to \"%1\"") + nullptr, tr("Critical Error!"), + tr("Settings are not writable! Make sure you have a write access to \"%1\".") .arg(s.fileName())); } #ifdef CUTTER_ENABLE_KSYNTAXHIGHLIGHTING diff --git a/src/common/DisassemblyPreview.cpp b/src/common/DisassemblyPreview.cpp index e80e6eaab..4861c769d 100644 --- a/src/common/DisassemblyPreview.cpp +++ b/src/common/DisassemblyPreview.cpp @@ -44,13 +44,6 @@ bool DisassemblyPreview::showDisasPreview(QWidget *parent, const QPoint &pointOf } RVA offsetTo = refs.at(0).to; // This is the offset we want to preview - - if (Q_UNLIKELY(offsetFrom != refs.at(0).from)) { - qWarning() << QObject::tr("offsetFrom (%1) differs from refs.at(0).from (%(2))") - .arg(offsetFrom) - .arg(refs.at(0).from); - } - /* * Only if the offset we point *to* is different from the one the cursor is currently * on *and* the former is a valid offset, we are allowed to get a preview of offsetTo diff --git a/src/dialogs/InitialOptionsDialog.ui b/src/dialogs/InitialOptionsDialog.ui index e3db9f83f..38316893c 100644 --- a/src/dialogs/InitialOptionsDialog.ui +++ b/src/dialogs/InitialOptionsDialog.ui @@ -323,7 +323,7 @@ - Auto Exp + Experimental Qt::AlignCenter diff --git a/src/dialogs/NewFileDialog.cpp b/src/dialogs/NewFileDialog.cpp index cde5fc85d..58d0d3917 100644 --- a/src/dialogs/NewFileDialog.cpp +++ b/src/dialogs/NewFileDialog.cpp @@ -287,7 +287,7 @@ void NewFileDialog::fillIOPluginsList() { ui->ioPlugin->clear(); ui->ioPlugin->addItem("file://"); - ui->ioPlugin->setItemData(0, tr("Open a file with no extra treatment."), Qt::ToolTipRole); + ui->ioPlugin->setItemData(0, tr("Open a file without additional options/settings."), Qt::ToolTipRole); int index = 1; QList ioPlugins = Core()->getRIOPluginDescriptions(); diff --git a/src/dialogs/preferences/AsmOptionsWidget.ui b/src/dialogs/preferences/AsmOptionsWidget.ui index e96421a48..f3f149528 100644 --- a/src/dialogs/preferences/AsmOptionsWidget.ui +++ b/src/dialogs/preferences/AsmOptionsWidget.ui @@ -142,7 +142,7 @@ - Tabs before assembly (asm.tabs.off): + The number of tabulate spaces after the offset (asm.tabs.off): Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse @@ -479,7 +479,7 @@ - Substitute variables (asm.sub.var) + Substitute variables in disassembly (asm.sub.var) diff --git a/src/menus/DisassemblyContextMenu.cpp b/src/menus/DisassemblyContextMenu.cpp index ab54328da..c3ce0b6c9 100644 --- a/src/menus/DisassemblyContextMenu.cpp +++ b/src/menus/DisassemblyContextMenu.cpp @@ -163,7 +163,7 @@ DisassemblyContextMenu::~DisassemblyContextMenu() {} void DisassemblyContextMenu::addSetBaseMenu() { - setBaseMenu = addMenu(tr("Set Immediate Base to...")); + setBaseMenu = addMenu(tr("Set base of immediate value to..")); initAction(&actionSetBaseBinary, tr("Binary")); setBaseMenu->addAction(&actionSetBaseBinary); diff --git a/src/widgets/ColorThemeListView.cpp b/src/widgets/ColorThemeListView.cpp index 4f56ba17a..84df6d67c 100644 --- a/src/widgets/ColorThemeListView.cpp +++ b/src/widgets/ColorThemeListView.cpp @@ -400,8 +400,7 @@ const QMap optionInfoMap__ = { { "fname", { QObject::tr("Color of names of functions"), QObject::tr("Function name") } }, { "floc", { QObject::tr("Color of function location"), QObject::tr("Function location") } }, { "fline", - { QObject::tr( - "Color of ascii line in left side that shows what opcodes are belong to function"), + { QObject::tr("Color of the line which shows which opcodes belongs to a function"), QObject::tr("Function line") } }, { "flag", { QObject::tr("Color of flags (similar to bookmarks for offset)"), QObject::tr("Flag") } }, diff --git a/src/widgets/HexWidget.cpp b/src/widgets/HexWidget.cpp index d933b944b..c9d09a719 100644 --- a/src/widgets/HexWidget.cpp +++ b/src/widgets/HexWidget.cpp @@ -160,7 +160,7 @@ HexWidget::HexWidget(QWidget *parent) connect(actionWriteCString, &QAction::triggered, this, &HexWidget::w_writeCString); actionsWriteString.append(actionWriteCString); - QAction *actionWrite64 = new QAction(tr("Write De\\Encoded Base64 string"), this); + QAction *actionWrite64 = new QAction(tr("Write a decoded or encoded Base64 string"), this); connect(actionWrite64, &QAction::triggered, this, &HexWidget::w_write64); actionsWriteString.append(actionWrite64); @@ -1407,7 +1407,7 @@ void HexWidget::w_writeRandom() } bool ok = false; - int nbytes = QInputDialog::getInt(this, tr("Write random"), tr("Number of bytes:"), size, 1, + int nbytes = QInputDialog::getInt(this, tr("Write random bytes"), tr("Number of bytes:"), size, 1, 0x7FFFFFFF, 1, &ok); if (!ok) { return; From d238eb17cd75bd58a957aed961fef6ad6bfd9dc7 Mon Sep 17 00:00:00 2001 From: Lucas Hosseini Date: Sun, 14 May 2023 06:59:13 +0200 Subject: [PATCH 8/8] Get rid of stale jump arrows in disassembly widget. (#3175) This commit clears arrows from edited instructions, in order to avoid stale arrows to remain drawn. closes #3114 --- src/widgets/DisassemblyWidget.cpp | 17 ++++++++++++++++- src/widgets/DisassemblyWidget.h | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/widgets/DisassemblyWidget.cpp b/src/widgets/DisassemblyWidget.cpp index 4c18b57f5..d892ffd1e 100644 --- a/src/widgets/DisassemblyWidget.cpp +++ b/src/widgets/DisassemblyWidget.cpp @@ -132,7 +132,7 @@ DisassemblyWidget::DisassemblyWidget(MainWindow *main) connect(Core(), &CutterCore::functionRenamed, this, [this]() { refreshDisasm(); }); connect(Core(), SIGNAL(varsChanged()), this, SLOT(refreshDisasm())); connect(Core(), SIGNAL(asmOptionsChanged()), this, SLOT(refreshDisasm())); - connect(Core(), &CutterCore::instructionChanged, this, &DisassemblyWidget::refreshIfInRange); + connect(Core(), &CutterCore::instructionChanged, this, &DisassemblyWidget::instructionChanged); connect(Core(), &CutterCore::breakpointsChanged, this, &DisassemblyWidget::refreshIfInRange); connect(Core(), SIGNAL(refreshCodeViews()), this, SLOT(refreshDisasm())); @@ -226,6 +226,12 @@ void DisassemblyWidget::refreshIfInRange(RVA offset) } } +void DisassemblyWidget::instructionChanged(RVA offset) +{ + leftPanel->clearArrowFrom(offset); + refreshDisasm(); +} + void DisassemblyWidget::refreshDisasm(RVA offset) { if (!disasmRefresh->attemptRefresh(offset == RVA_INVALID ? nullptr : new RVA(offset))) { @@ -988,3 +994,12 @@ void DisassemblyLeftPanel::paintEvent(QPaintEvent *event) lastBeginOffset = lines.first().offset; } + +void DisassemblyLeftPanel::clearArrowFrom(RVA offset) +{ + auto it = std::find_if(arrows.begin(), arrows.end(), + [&](const Arrow &it) { return it.jmpFromOffset() == offset; }); + if (it != arrows.end()) { + arrows.erase(it); + } +} diff --git a/src/widgets/DisassemblyWidget.h b/src/widgets/DisassemblyWidget.h index 1ab162168..ce3e8a62e 100644 --- a/src/widgets/DisassemblyWidget.h +++ b/src/widgets/DisassemblyWidget.h @@ -53,6 +53,7 @@ public slots: protected slots: void on_seekChanged(RVA offset); void refreshIfInRange(RVA offset); + void instructionChanged(RVA offset); void refreshDisasm(RVA offset = RVA_INVALID); bool updateMaxLines(); @@ -153,6 +154,7 @@ class DisassemblyLeftPanel : public QFrame DisassemblyLeftPanel(DisassemblyWidget *disas); void paintEvent(QPaintEvent *event) override; void wheelEvent(QWheelEvent *event) override; + void clearArrowFrom(RVA offset); private: DisassemblyWidget *disas;