diff --git a/src/bridge/bridgemain.h b/src/bridge/bridgemain.h index 6c876615..4d687c7e 100644 --- a/src/bridge/bridgemain.h +++ b/src/bridge/bridgemain.h @@ -671,9 +671,8 @@ typedef struct typedef struct { - char mod[MAX_MODULE_SIZE]; + duint refcount; XREF_RECORD* references; - size_t refcount; } XREF_INFO; //Debugger functions diff --git a/src/gui/Src/BasicView/Disassembly.cpp b/src/gui/Src/BasicView/Disassembly.cpp index b54ce032..fd3b411c 100644 --- a/src/gui/Src/BasicView/Disassembly.cpp +++ b/src/gui/Src/BasicView/Disassembly.cpp @@ -883,7 +883,7 @@ int Disassembly::paintJumpsGraphic(QPainter* painter, int x, int y, dsint addr, duint max = selVa, min = selVa; showXref = true; int jmpcount = 0; - for(int i = 0; i < mXrefInfo.refcount; i++) + for(duint i = 0; i < mXrefInfo.refcount; i++) { if(mXrefInfo.references[i].type != XREF_JMP) continue; diff --git a/src/gui/Src/Gui/CPUWidget.cpp b/src/gui/Src/Gui/CPUWidget.cpp index 187d2db3..a49b96de 100644 --- a/src/gui/Src/Gui/CPUWidget.cpp +++ b/src/gui/Src/Gui/CPUWidget.cpp @@ -39,8 +39,8 @@ CPUWidget::CPUWidget(QWidget* parent) : QWidget(parent), ui(new Ui::CPUWidget) mGeneralRegs = new RegistersView(0); mGeneralRegs->setFixedWidth(1000); - mGeneralRegs->setFixedHeight(mGeneralRegs->getEstimateHeight()); mGeneralRegs->ShowFPU(true); + mGeneralRegs->setFixedHeight(mGeneralRegs->getEstimateHeight()); QScrollArea* upperScrollArea = new QScrollArea(this); upperScrollArea->setWidget(mGeneralRegs); diff --git a/src/gui/Src/Gui/EditFloatRegister.cpp b/src/gui/Src/Gui/EditFloatRegister.cpp index 5d41d979..ded46aa9 100644 --- a/src/gui/Src/Gui/EditFloatRegister.cpp +++ b/src/gui/Src/Gui/EditFloatRegister.cpp @@ -43,6 +43,8 @@ EditFloatRegister::EditFloatRegister(int RegisterSize, QWidget* parent) : GuiAddLogMessage(QString("Error, register size %1 is not supported.\n").arg(RegisterSize).toUtf8().constData()); break; } + setFixedWidth(width()); + adjustSize(); connect(ui->hexEdit, SIGNAL(textEdited(QString)), this, SLOT(editingHex1FinishedSlot(QString))); ui->hexEdit->setValidator(&hexValidate); @@ -108,6 +110,7 @@ EditFloatRegister::EditFloatRegister(int RegisterSize, QWidget* parent) : void EditFloatRegister::hideUpperPart() { + ui->line->hide(); ui->labelH0->hide(); ui->labelH1->hide(); ui->labelH2->hide(); @@ -167,6 +170,11 @@ const char* EditFloatRegister::getData() return Data; } +void EditFloatRegister::selectAllText() +{ + ui->hexEdit->selectAll(); +} + /** * @brief reloads the lower 128-bit of data of the dialog */ @@ -483,7 +491,7 @@ EditFloatRegister::~EditFloatRegister() void EditFloatRegister::editingHex1FinishedSlot(QString arg) { mutex = sender(); - QString filled(arg); + QString filled(arg.toUpper()); filled.append(QString(16 - filled.length(), QChar('0'))); for(int i = 0; i < 16; i++) Data[i + 16] = filled.mid(i * 2, 2).toInt(0, 16); @@ -497,7 +505,7 @@ void EditFloatRegister::editingHex1FinishedSlot(QString arg) void EditFloatRegister::editingHex2FinishedSlot(QString arg) { mutex = sender(); - QString filled(arg); + QString filled(arg.toUpper()); filled.append(QString(16 - filled.length(), QChar('0'))); for(int i = 0; i < 16; i++) Data[i] = filled.mid(i * 2, 2).toInt(0, 16); diff --git a/src/gui/Src/Gui/EditFloatRegister.h b/src/gui/Src/Gui/EditFloatRegister.h index eab9ac8c..d6dbdd29 100644 --- a/src/gui/Src/Gui/EditFloatRegister.h +++ b/src/gui/Src/Gui/EditFloatRegister.h @@ -20,6 +20,7 @@ public: explicit EditFloatRegister(int RegisterSize, QWidget* parent = 0); void loadData(char* RegisterData); const char* getData(); + void selectAllText(); ~EditFloatRegister(); diff --git a/src/gui/Src/Gui/EditFloatRegister.ui b/src/gui/Src/Gui/EditFloatRegister.ui index 5bb08eb0..f18b3651 100644 --- a/src/gui/Src/Gui/EditFloatRegister.ui +++ b/src/gui/Src/Gui/EditFloatRegister.ui @@ -9,10 +9,16 @@ 0 0 - 701 - 528 + 696 + 456 + + + 0 + 0 + + Dialog @@ -20,635 +26,722 @@ :/icons/images/modify.png:/icons/images/modify.png - + + + 6 + + + 6 + + + 6 + + + 6 + - - - QLayout::SetNoConstraint - - - - - QLayout::SetDefaultConstraint + + + + + + 0 + 0 + + + Double: + + + + + + + + 0 + 0 + + + + Short: + + + + + + + + 0 + 0 + + + + Float: + + + + + + + + 0 + 0 + + + + Byte: + + + + + + + + 0 + 0 + + + + Int64: + + + + + + + + 0 + 0 + + + + Long: + + + + + + + + 0 + 0 + + + + High: + + + + + - - - - - High: - - - - - - - byte - - - - - - - Short: - - - - - - - Long: - - - - - - - Float: - - - - - - - Double: - - - - - - - int64: - - - - + - - - - - - - Qt::ImhUppercaseOnly - - - 32 - - - - - - - - - - - - 0 - 0 - - - - 0-1 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 2-3 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 4-5 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 6-7 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 8-9 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - A-B - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - C-D - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - E-F - - - Qt::AlignCenter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + 0-1 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 2-3 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 4-5 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 6-7 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 8-9 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + A-B + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + C-D + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + E-F + + + Qt::AlignCenter + + + + + + + + + + + Qt::ImhUppercaseOnly + + + 32 + + + + + + + + + + + Qt::Horizontal + + + + + + + + + + 0 + 0 + + + + Float: + + + + + + + + 0 + 0 + + + + Low: + + + + + + + + 0 + 0 + + + + Byte: + + + + + + + + 0 + 0 + + + + Long: + + + + + + + + 0 + 0 + + + + Double: + + + + + + + + 0 + 0 + + + + Short: + + + + + + + + 0 + 0 + + + + Int64: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QLayout::SetMinimumSize + + + + + + 0 + 0 + + + + 0-1 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 2-3 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 4-5 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 6-7 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 8-9 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + A-B + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + C-D + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + E-F + + + Qt::AlignCenter + + + + + + + + + + + Qt::ImhUppercaseOnly + + + 32 + + + + + + + + + - - - Qt::Horizontal + + + &Hexadecimal - - - QLayout::SetDefaultConstraint + + + &Signed - - - - - - Low: - - - - - - - byte - - - - - - - Short: - - - - - - - Long: - - - - - - - Float: - - - - - - - Double: - - - - - - - int64: - - - - - - - - - - - - - Qt::ImhUppercaseOnly - - - 32 - - - - - - - - - - - - 0 - 0 - - - - 0-1 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 2-3 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 4-5 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 6-7 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 8-9 - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - A-B - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - C-D - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - E-F - - - Qt::AlignCenter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + true + + - - - - - Hexadecimal - - - - - - - Signed - - - true - - - - - - - Unsigned - - - - + + + &Unsigned + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + @@ -663,12 +756,32 @@ - + Qt::Horizontal - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + &Cancel @@ -676,39 +789,88 @@ + + hexEdit + shortEdit0 + shortEdit1 + shortEdit2 + shortEdit3 + shortEdit4 + shortEdit5 + shortEdit6 + shortEdit7 + longEdit0 + longEdit1 + longEdit2 + longEdit3 + floatEdit0 + floatEdit1 + floatEdit2 + floatEdit3 + doubleEdit0 + doubleEdit1 + longLongEdit0 + longLongEdit1 + hexEdit_2 + shortEdit0_2 + shortEdit1_2 + shortEdit2_2 + shortEdit3_2 + shortEdit4_2 + shortEdit5_2 + shortEdit6_2 + shortEdit7_2 + longEdit0_2 + longEdit1_2 + longEdit2_2 + longEdit3_2 + floatEdit0_2 + floatEdit1_2 + floatEdit2_2 + floatEdit3_2 + doubleEdit0_2 + doubleEdit1_2 + longLongEdit0_2 + longLongEdit1_2 + radioHex + radioSigned + radioUnsigned + buttonOk + buttonCancel + - buttonBox - accepted() + buttonOk + clicked() EditFloatRegister accept() - 248 - 254 + 389 + 408 - 157 - 274 + 448 + 388 - buttonBox - rejected() + buttonCancel + clicked() EditFloatRegister reject() - 316 - 260 + 440 + 428 - 286 - 274 + 471 + 417 diff --git a/src/gui/Src/Gui/LineEditDialog.cpp b/src/gui/Src/Gui/LineEditDialog.cpp index 9f6e72e1..8f30747e 100644 --- a/src/gui/Src/Gui/LineEditDialog.cpp +++ b/src/gui/Src/Gui/LineEditDialog.cpp @@ -18,6 +18,11 @@ LineEditDialog::~LineEditDialog() delete ui; } +void LineEditDialog::selectAllText() +{ + ui->textEdit->selectAll(); +} + void LineEditDialog::setCursorPosition(int position) { ui->textEdit->setCursorPosition(position); diff --git a/src/gui/Src/Gui/LineEditDialog.h b/src/gui/Src/Gui/LineEditDialog.h index edb4af44..53ecbc8d 100644 --- a/src/gui/Src/Gui/LineEditDialog.h +++ b/src/gui/Src/Gui/LineEditDialog.h @@ -23,6 +23,7 @@ public: void setCheckBoxText(const QString & text); void setCursorPosition(int position); void ForceSize(unsigned int size); + void selectAllText(); private slots: void on_textEdit_textChanged(const QString & arg1); diff --git a/src/gui/Src/Gui/RegistersView.cpp b/src/gui/Src/Gui/RegistersView.cpp index e4dae5b0..e44f8262 100644 --- a/src/gui/Src/Gui/RegistersView.cpp +++ b/src/gui/Src/Gui/RegistersView.cpp @@ -1882,6 +1882,8 @@ void RegistersView::displayEditDialog() EditFloatRegister mEditFloat(256, this); mEditFloat.setWindowTitle(tr("Edit YMM register")); mEditFloat.loadData(registerValue(&wRegDumpStruct, mSelected)); + mEditFloat.show(); + mEditFloat.selectAllText(); if(mEditFloat.exec() == QDialog::Accepted) setRegister(mSelected, (duint)mEditFloat.getData()); } @@ -1906,6 +1908,8 @@ void RegistersView::displayEditDialog() do { errorinput = false; + mLineEdit.show(); + mLineEdit.selectAllText(); if(mLineEdit.exec() != QDialog::Accepted) return; //pressed cancel else diff --git a/src/gui/Src/Gui/XrefBrowseDialog.cpp b/src/gui/Src/Gui/XrefBrowseDialog.cpp index 7beeb5da..20a37bb1 100644 --- a/src/gui/Src/Gui/XrefBrowseDialog.cpp +++ b/src/gui/Src/Gui/XrefBrowseDialog.cpp @@ -14,7 +14,7 @@ XrefBrowseDialog::XrefBrowseDialog(QWidget* parent, duint address) : { char disasm[GUI_MAX_DISASSEMBLY_SIZE] = ""; setWindowTitle(QString(tr("xrefs at %1")).arg(ToHexString(address))); - for(int i = 0; i < mXrefInfo.refcount; i++) + for(duint i = 0; i < mXrefInfo.refcount; i++) { GuiGetDisassembly(mXrefInfo.references[i].addr, disasm); ui->listWidget->addItem(disasm); diff --git a/src/gui/Src/Utils/HexValidator.cpp b/src/gui/Src/Utils/HexValidator.cpp index a57e41e3..d2dee84d 100644 --- a/src/gui/Src/Utils/HexValidator.cpp +++ b/src/gui/Src/Utils/HexValidator.cpp @@ -9,27 +9,26 @@ HexValidator::~HexValidator() { } +static bool isXDigit(const QChar & c) +{ + return c.isDigit() || (c.toUpper() >= 'A' && c.toUpper() <= 'F'); +} + void HexValidator::fixup(QString & input) const { for(auto i : input) { - if(!i.isDigit()) - { - if(i >= QChar('a') && i <= QChar('f')) - i = i.toUpper(); - else - input.remove(i); - } + if(!isXDigit(i)) + input.remove(i); } } QValidator::State HexValidator::validate(QString & input, int & pos) const { Q_UNUSED(pos); - input = input.toUpper(); for(int i = 0; i < input.length(); i++) { - if(!(input.at(i).isDigit() || (input.at(i) >= QChar('A') && input.at(i) <= QChar('F')))) + if(!isXDigit(input[i])) return State::Invalid; } return State::Acceptable;