Use seek history API instead of command (#2754)

This commit is contained in:
Anton Kochkov 2021-09-14 16:13:19 +08:00 committed by GitHub
parent 0dcdb0f1e9
commit e219be4253
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 11 deletions

View File

@ -585,7 +585,7 @@ QStringList CutterCore::autocomplete(const QString &cmd, RzLinePromptType prompt
/** /**
* @brief CutterCore::loadFile * @brief CutterCore::loadFile
* Load initial file. TODO Maybe use the "o" commands? * Load initial file.
* @param path File path * @param path File path
* @param baddr Base (RzBin) address * @param baddr Base (RzBin) address
* @param mapaddr Map address * @param mapaddr Map address
@ -2682,10 +2682,10 @@ QList<RVA> CutterCore::getSeekHistory()
{ {
CORE_LOCK(); CORE_LOCK();
QList<RVA> ret; QList<RVA> ret;
RzListIter *it;
QJsonArray jsonArray = cmdj("sj").array(); RzCoreSeekItem *undo;
for (const QJsonValue &value : jsonArray) RzList *list = rz_core_seek_list(core);
ret << value.toVariant().toULongLong(); CutterRListForeach(list, it, RzCoreSeekItem, undo) { ret << undo->offset; }
return ret; return ret;
} }

View File

@ -1127,14 +1127,26 @@ void MainWindow::updateHistoryMenu(QMenu *menu, bool redo)
// not too short so that reasonable length c++ names can be seen most of the time // not too short so that reasonable length c++ names can be seen most of the time
const int MAX_NAME_LENGTH = 64; const int MAX_NAME_LENGTH = 64;
auto hist = Core()->cmdj("sj"); RzListIter *it;
RzCoreSeekItem *undo;
RzCoreLocked core(Core());
RzList *list = rz_core_seek_list(core);
bool history = true; bool history = true;
QList<QAction *> actions; QList<QAction *> actions;
for (auto item : Core()->cmdj("sj").array()) { CutterRListForeach(list, it, RzCoreSeekItem, undo) {
QJsonObject obj = item.toObject(); RzFlagItem *f = rz_flag_get_at(core->flags, undo->offset, true);
QString name = obj["name"].toString(); char *fname = NULL;
RVA offset = obj["offset"].toVariant().toULongLong(); if (f) {
bool current = obj["current"].toBool(false); if (f->offset != undo->offset) {
fname = rz_str_newf("%s+%" PFMT64d, f->name, undo->offset - f->offset);
} else {
fname = strdup(f->name);
}
}
QString name = fname;
RVA offset = undo->offset;
bool current = undo->is_current;
if (current) { if (current) {
history = false; history = false;
} }